Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему вылазит ошибка acces violation? 
:(
    Опции темы
Fhusy
Дата 27.1.2010, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 16.11.2006

Репутация: нет
Всего: нет



Кароч вопрос очень простой почему ошибка при вызове процедуры?
Код

procedure sgt(sg3:tstringgrid);
var i:integer;
    sg:tstringgrid;
    c:char;
begin
c:='x';
sg:=sg3;
    for i:=0 to sg.RowCount-1 do
     if sg.Cells[1,i][1]=c then
end;

PM MAIL   Вверх
~FoX~
Дата 27.1.2010, 21:15 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Fhusy,  if sg.Cells[1,i][1]=c then
Это кто такой?


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
chip_and_dayl
Дата 27.1.2010, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 1
Всего: 9



Потому, что если ячейка пустая или там один символ, то  ты обращаешься к ... даже не знаю как его назвать

Добавлено @ 21:17
~FoX~
Я тож думал что это. Это в первых квадратных скобках номер строки и столбца, а второй это номер символа в ячейке [1,i]

Добавлено через 3 минуты и 59 секунд
Код

procedure sgt(sg3:tstringgrid);
var i:integer;
    sg:tstringgrid;
    c:char;
begin
c:='x';
sg:=sg3;
    for i:=0 to sg.RowCount-1 do
     if sg.Cells[1,i][1]=c then
end;


Вот это 
Код

   sg:tstringgrid;


и это
Код

sg:=sg3;

есть лишними. Делаешь лишние движения. Можно просто

Код

procedure sgt(sg3:tstringgrid);
var i:integer;
    c:char;
begin
c:='x';
    for i:=0 to sg3.RowCount-1 do
     if sg3.Cells[1,i][1]=c then
end;




Это сообщение отредактировал(а) chip_and_dayl - 27.1.2010, 21:18


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Frees
Дата 27.1.2010, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 9
Всего: 54



Цитата(~FoX~ @  28.1.2010,  00:15 Найти цитируемый пост)
Это кто такой?

первый символ в ячейке

Код

procedure sgt(sg3:TStringGrid);
var i:integer;
    c:char;
begin
   c:='x';
   if not Assigned(sg3) then
     Exit;

   for i:=0 to sg3.RowCount-1 do
      if (Length(sg3.Cells[1,i]) >= 1)and(sg3.Cells[1,i][1] = c) then
        ;//что то делаем
end;


и вызов еще покажи

Это сообщение отредактировал(а) Frees - 27.1.2010, 21:23


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
chip_and_dayl
Дата 27.1.2010, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 1
Всего: 9



Нужно делать проверку перед

Код

if sg3.Cells[1,i][1]=c then


Код

if (Length(StringGrid1.Cells[i,1])>1) then


Это сообщение отредактировал(а) chip_and_dayl - 27.1.2010, 21:24


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Fhusy
Дата 27.1.2010, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 16.11.2006

Репутация: нет
Всего: нет



Цитата(Frees @ 27.1.2010,  21:21)
Цитата(~FoX~ @  28.1.2010,  00:15 Найти цитируемый пост)
Это кто такой?

первый символ в ячейке

Код

procedure sgt(sg3:TStringGrid);
var i:integer;
    c:char;
begin
   c:='x';
   if not Assigned(sg3) then
     Exit;

   for i:=0 to sg3.RowCount-1 do
      if (Length(sg3.Cells[1,i]) >= 1)and(sg3.Cells[1,i][1] = c) then
        ;//что то делаем
end;


и вызов еще покажи

спасиб большое помогло, тока можна в свою очередь кинуть вопросик а кто это такой if not(assigned sg3)?
PM MAIL   Вверх
Frees
Дата 27.1.2010, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 9
Всего: 54



если передан не созданный объект то выйти из процедуры

рас тебе помогло значит ты не правельно вызываеш функцию, точнее посылаеш ей не существующий StringGrid



--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
~FoX~
Дата 27.1.2010, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Цитата(Fhusy @  27.1.2010,  22:28 Найти цитируемый пост)
if not(assigned sg3)

Если по каким то причинами sg3 отсутствует или не доступен, в общем "не назначенный"


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
chip_and_dayl
Дата 27.1.2010, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 1
Всего: 9



Fhusy
Проверяет на существование обьекта sg3. Это на случай, если забыли передать ссылку на StringGrid


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Fhusy
Дата 27.1.2010, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 16.11.2006

Репутация: нет
Всего: нет



спасибо за ответы
PM MAIL   Вверх
CodeMonkey
Дата 28.1.2010, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89





--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0504 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.