Форум: "Основная";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];
ВнизОшибка после закрытия программы!!! Найти похожие ветки
← →
grol © (2005-06-28 01:57) [0]Мастера Delphi помогите мне разобраться по такому вопросу:
Скомпилировал прогу, открываю ее, произвожу там расчеты, когда начинаю закрывать и после закрытия выдается вот такая ошибка: Заголовок - Application Error; содержание - Exception EAccessViolation in module Project1.exe at 00003584. Access violation at address 00403584 in module "Project1.exe". Read of address 7874633D. Сначала я думал, что это из-за того, что я использую динамические массивы. Но это не могло быть причиной (наверное), т.к. я их по закрытию программы финализирую (обнуляю). Короче я не знаю в чем дело. А главное заметил такую тему, когда в процедуре FormClose ставлю точку останова для пошаговой отладки (В FormClose кстати как раз и происходит обнуление всех массивов), то по исполнению пошаговой отладки этой процедуры после закрытия программы ошибка не возникает. Мастера подскажите пожалуйста в чем же может быть дело или скажите, как найти эту ошибку исходя из сообщения. Заранее спасибо за ответы.
Я так уже задолбался!!!!!!! Помогите мне!!!!
← →
GanibalLector © (2005-06-28 02:08) [1]в 17 строке.Как обычно ;)
З.Ы.Код давай...
← →
iskatel © (2005-06-28 02:14) [2]ну проблема в том что обнуляешь)) на кой икс ты это делаешь, после завершения процесса все его ресурсы освобождаются )) и видать ты обнуляешь, используя компонент или чтото вроде, который сам был уже удален при "обнулении" ))
← →
Германн © (2005-06-28 02:14) [3]2 grol © (28.06.05 01:57)
А базы данных пользуешь?
← →
Просто Джо © (2005-06-28 02:18) [4]Телепаты вышли на связь ;-)
← →
Просто Джо © (2005-06-28 02:20) [5]Search/Find error... и вводишь адрес, по которому произошла ошибка. Потом вверх по стеку вызовов и - да поможет тебе Аллах! :-)
← →
grol © (2005-06-28 02:51) [6]iskatel дело в том, что процедуру FormClose Delphi проходит без проблем, а вот только по выходу из нее, когда все инстукции процедуры выполнены происходит ошибка. Т.е внутри этой процедуры возникали ошибки я б их сразу бы увидел!!!
← →
Просто Джо © (2005-06-28 02:54) [7]Делать все равно нечего, пиво пью и бездельничаю. Давай, что ли, свою прогу, помогу разобраться. ТОЛЬКО если там не используются сторонние компоненты.
← →
grol © (2005-06-28 02:55) [8]Еще раз!!! Кому не понятен мой вопрос!!! Ошибка возникает не в коде. Я это проверял при пошаговой отладке, а после того как все инструкции выполняться и после выхода из FormClose - возникает ошибка. Если б ошибка была в коде я бы не писал в форум, попытался разобраться сам!
← →
grol © (2005-06-28 02:59) [9]Просто Джо спасибо конечно, но там как раз и есть потусторонние компоненты!!! А если так, то нельзя как нибудь обнаружить от куда эта ошибка пришла, кто ее родитель и все такое!!!
← →
Просто Джо © (2005-06-28 02:59) [10]Ну, если ошибка не в коде, тогда - это инопланетяне, однозначно. Обратись в Галактический Союз, там примут меры. Удачи.
← →
Просто Джо © (2005-06-28 03:00) [11]
> А если так, то нельзя как нибудь обнаружить от куда эта
> ошибка пришла, кто ее родитель и все такое!!!
Пробовал хотя-бы [5]?
← →
grol © (2005-06-28 03:04) [12]Просто Джо а по какому адресу из моего примера необходимо искать что-то...?
← →
Просто Джо © (2005-06-28 03:10) [13]Exception EAccessViolation in module Project1.exe at 00003584
← →
evvcom © (2005-06-28 08:55) [14]00003584 больно подозрительный, более похож на правду 00403584 Адреса-то как похожи!
← →
-=XP=- © (2005-06-28 09:08) [15]Ошибка после закрытия программы!!!
Не кричите!
Ошибка происходит в момент закрытия программы.
По причине ошибочности каких-то инструкций, написанных Вами.
Однозначно - обращение к удаленному объекту. Значит, либо Вы умудрились обращаться к объекту после его автоматического удаления, либо удаляете объекты, к которым после этого происходит обращение (осуществляемое Вами, или унаследованным кодом VCL).
Что программа вообще делает? А то, на самом деле: "Раз-два-три-четыре-пять, начинаю телепать".
← →
novice_man © (2005-06-28 10:04) [16]grol © (28.06.05 1:57)
Может поможет: использовать программу MemProof.
Взять на сайте http://www.delphikingdom.com.
Мне часто помогало при похожих ситуациях, пока я не прекратил использовать сторонние компоненты (во всяком случае позволяет отсеять сомнения в корректности его работы) и не стал тщательней контролировать создание/уничтожение объектов.
← →
TUser © (2005-06-28 11:31) [17]> Ошибка возникает не в коде.
Тогда это орфографическая ошибка в комментариях. Проверь Вордом.
← →
Баг (2005-06-28 11:36) [18]> Ошибка возникает не в коде.
Может борланд в IDE багов насовал :о)
← →
GanibalLector © (2005-06-28 11:37) [19]2 TUser © (28.06.05 11:31) [17]
>Тогда это орфографическая ошибка в комментариях. Проверь Вордом.
А!!! Я плакалЪ ;))
← →
Игорь Шевченко © (2005-06-28 12:32) [20]Эта...ошибка происходит в секциях finalization. Типа breakpoint туда поставить.
← →
isasa © (2005-06-28 12:54) [21]Очень похоже на повторное освобождение ресурса одного из компонентов, выложенных на форму.
Вариант 1
Для формы - создатьdestructor Destroy;
поставить останов, и пошагово(F7), ручками ...
begin
inherited;
end;
Вариант 2 (военный)
В FormClose по очереди убирать освобождение ресурсов.
← →
grol © (2005-06-28 19:06) [22]Первый модуль:
procedure TGlobalForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Timer1.Enabled:=False;
Timer2.Enabled:=False;
Timer3.Enabled:=False;
Timer4.Enabled:=False;
s:=0;ijtem:=0;it3:=0;temp:=0;x:=0;y:=0;x1:=0;
y1:=0; GlobalKursor:=0;it5:=0;it5s:=0;m:=0;
GlobalMass:="";
Lab:=nil;imag:=nil;grid:=nil;ed:=nil;
all.R:="";
all.A1:=nil;all.A2:=nil;all.B1:=nil;all.B2:=nil;
all.E:=nil;
all.w:="";all.hm:="";all.hb:="";
all.f:="";
all.Uvi:="";all.Uosh:="";all.tmax:="";all.Up:="";
all.Uop:="";all.Eo:="";all.Em:="";all.Y:="";
Sleep(2000);
end;
Второй модуль:
procedure TReportForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
a_:=0;
Customer:=nil;
ChartName:="";
Ex:="";
PatBlt(Report1.Canvas.Handle, 0, 0, Report1.ClientWidth, Report1.ClientHeight, WHITENESS);
WordMemo.Clear;
CodeMemo.Clear;
end;
Первый модуль как раз и заканчивает работу программы!!! Помимо этого я использую такие компоненты:
Stringgrid;ListListBox;Memo;Edit;Image;Много Timer"ov;
WebBrowser;ChChart;еще что-то!!!
Мастера извините конечно за то, что может я еще не опытный в таких делах, но дело в том, что, когда я работаю с программой без breakpoint, то в после закрытия возникает ошибка. А если же я breakpoint поставлю и пошагово исполняю инструкции программы. И даже ставлю breakpoint в FormClose, то по закрытию программы ошибки не возникает. Вот такая фигня!!!
← →
Просто Джо © (2005-06-28 19:08) [23]8-()
Мама родная! А зачем вот это все???
> s:=0;ijtem:=0;it3:=0;temp:=0;x:=0;y:=0;x1:=0;
> y1:=0; GlobalKursor:=0;it5:=0;it5s:=0;m:=0;
> GlobalMass:="";
> Lab:=nil;imag:=nil;grid:=nil;ed:=nil;
> all.R:="";
> all.A1:=nil;all.A2:=nil;all.B1:=nil;all.B2:=nil;
> all.E:=nil;
> all.w:="";all.hm:="";all.hb:="";
> all.f:="";
> all.Uvi:="";all.Uosh:="";all.tmax:="";all.Up:="";
> all.Uop:="";all.Eo:="";all.Em:="";all.Y:="";
← →
Просто Джо © (2005-06-28 19:12) [24]Судя по обилию и стилю именования глобальных переменных тут может быть все, что угодно. :( Это нельзя отлаживать. Это нужно выбросить и переписать заново.
← →
Просто Джо © (2005-06-28 19:14) [25]Хм...
Lab:=nil;imag:=nil;grid:=nil;ed:=nil;
Это, соответственно: экземпляры TLabel, TImage, TStringGrid и TEdit? Их не нужно уничтожать ручками, тем более, обнулять ссылку на них! Это делает сама форма при уничтожении. Вот и получаешь ошибку.
← →
grol © (2005-06-28 19:30) [26]Так все-таки как же можно отследить кто родитель этой ошибки, уважаемые мастера?
← →
Просто Джо © (2005-06-28 19:35) [27]
> [26] grol © (28.06.05 19:30)
> Так все-таки как же можно отследить кто родитель этой ошибки,
> уважаемые мастера?
[25]
← →
grol © (2005-06-28 21:07) [28]Lab,imag,grid,ed:TComponent; такого типа...
← →
Плохиш © (2005-06-28 21:40) [29]
> PatBlt(Report1.Canvas.Handle, 0, 0, Report1.ClientWidth,
> Report1.ClientHeight, WHITENESS);
Мне не интересно что ты в конце хочешь сделать, но всё подчёркнутое в помойку и никогда больше так не делай.
← →
evvcom © (2005-06-28 21:44) [30]
> Мама родная! А зачем вот это все???
Эт, чтоб никто не догадался! (с) "Операция "Ы" и другие приключения Шурика" :)
← →
Просто Джо © (2005-06-28 22:42) [31]Блин, уже просто сил нет. Убери все из procedure TGlobalForm.FormClose к чертовой матери. Ты ведь вменяем, в конце концов?
← →
Просто Джо © (2005-06-28 22:44) [32]А если у тебя компоненты Lab,imag,grid,ed (и прочие) создаются динамически и Parent"а у них нет, то, ради Бога, сделай им XXX.Free, а не := nil.
← →
Гарри Поттер © (2005-06-28 23:50) [33]поставь открывающую фигурную скобку в TGlobalForm.FormClose после begin, а закрывающую перед end;
← →
Просто Джо © (2005-06-28 23:53) [34]
> [33] Гарри Поттер © (28.06.05 23:50)
> поставь открывающую фигурную скобку в TGlobalForm.FormClose
> после begin, а закрывающую перед end;
Шаман :)) Лучше уж тогда в DPR между begin...end.
← →
Anatoly Podgoretsky © (2005-06-29 00:00) [35]Просто Джо © (28.06.05 19:12) [24]
Жвлко такое выбрасывать.
← →
Гаврила © (2005-06-29 00:19) [36]Либо ошибка в финализации, либо используются глючные "потусторонние" компоненты.
Кстати попробуй форму отчета (а также все остальные кроме главной. если есть) разрушить руками (не закрывая главную форму) и посмотри, будет Access violation или нет
← →
Просто Джо © (2005-06-29 00:27) [37]
> [35] Anatoly Podgoretsky © (29.06.05 00:00)
> Просто Джо © (28.06.05 19:12) [24]
> Жвлко такое выбрасывать.
На доску почета однозначно 8-|
← →
grol © (2005-06-30 00:47) [38]Мастера помогите я уже скомпоновал исходники с компонентами! Если что скажите куда отсылать, только если Вы эого уже хотите!
Помогите мне пожалуйста, а, то я уже в отчаянном состоянии!
← →
Плохиш © (2005-06-30 00:49) [39]
> grol © (30.06.05 00:47) [38]
>только если Вы эого уже хотите
Мы что, похожи на мазохистов?
← →
grol © (2005-06-30 01:12) [40]Я ничего плохого не имел ввиду. Я только прошу помочь мне с прогой, так как я уже не знаю как исправить эту ошибку! Поэтому и начал заговариваться.
Страницы: 1 2 вся ветка
Форум: "Основная";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.039 c