Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2009, 16:28   #1
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию Access Violation при Form1.ListView.Clear

Всем здравствуйте!
Уже полдня гоняюсь за этой ошибкой и все безрезультатно...

Код:
procedure TMain.UpdateList;
var
i: integer;
ListItem: TListItem;
begin
Form1.lvMain.Clear; //!!!!!!! здесь вылетает исключение
for i := 0 to CarryList.Count - 1 do
  if not CarryList.Orders[i].Carred then
   begin
    ListItem := Form1.lvMain.Items.Add;
    ListItem.Caption := IntToStr(i);
    ListItem.SubItems.Add(IntToStr(CarryList.Orders[i].NumOfOrd));
    ListItem.SubItems.Add(CarryList.Orders[i].Client);
TMain - это отдельный класс, который работает с Form1.lvMain

Кстати, и при завершении приложения, такая же ерунда, даже тот адрес памяти...
Hottabych вне форума Ответить с цитированием
Старый 11.08.2009, 16:30   #2
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

А Form1 к этому моменту уже создана?
s.Creator вне форума Ответить с цитированием
Старый 11.08.2009, 16:40   #3
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию

Да, что самое интересное, это случается не всегда...
Hottabych вне форума Ответить с цитированием
Старый 11.08.2009, 16:47   #4
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

А Delphi какая?
Altera вне форума Ответить с цитированием
Старый 11.08.2009, 16:52   #5
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Из приведенного кода невозможно ответить на вопрос.
Access Violation - это ошибка доступа к памяти.
Вероятнее всего либо переменная Form1 не инициализирована либо форма уже уничтожена. Возможно lvMain еще не создан.
Покажи где и как применяется сама TMain.UpdateList().
Могу например сказать что если используется Form1 := TForm1.Create(Application);
то в методе procedure TForm1.FormCreate(Sender: TObject);
переменная Form1 еще не инициализирована.

Последний раз редактировалось s.Creator; 11.08.2009 в 17:16.
s.Creator вне форума Ответить с цитированием
Старый 11.08.2009, 16:57   #6
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

lvMain - это что за контрол ?
По ходу он не создан, а ты делаешь это : Form1.lvMain.Clear;
И вообще дай больше кода или распиши подробнее о контролах, которые используешь.
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 11.08.2009, 17:10   #7
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию

В общем все, решил проблему, она была не lvMain'е и не в форме, а в другом моем созданном классе... Кода действительно много, поэтому весь не смогу выложить
Код:
//
Cars: array of TCar;
//
procedure TMain.Clear;
var
i: integer;
begin
CarryList.Clear;
for i := 0 to 7 do
  Cars[i].Clear; //где-то здесь косяк
end;
//
procedure TCar.Clear;
begin
Count := 0;
StrList.Clear; //TstringList
end;
//
Этот код я убрал и все стало нормально...
Hottabych вне форума Ответить с цитированием
Старый 11.08.2009, 17:13   #8
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Прошу прощения перепутал:
если использовать Application.CreateForm(TForm1, Form1);
то в методе procedure TForm1.FormCreate(Sender: TObject);
переменная Form1 уже инициализирована.

а если Form1 := TForm1.Create(Application);
то в том же методе Form1 еще не инициализирована.
s.Creator вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Access violation at address при выполнении end elsin Общие вопросы Delphi 5 30.01.2009 10:29
access violation при создании обьекта goog Общие вопросы Delphi 12 11.01.2009 20:33
Access Violation SunKnight Общие вопросы Delphi 2 05.06.2008 16:46
Access Violation Carbon Общие вопросы Delphi 12 18.09.2007 19:55