Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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;
begin
inherited;
end;
поставить останов, и пошагово(F7), ручками ...
Вариант 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
1-1120134586
Apachi
2005-06-30 16:29
2005.07.18
TreeView Как задать картинки


5-1090683370
Yaral
2004-07-24 19:36
2005.07.18
Наследование форм


3-1118187806
Dorian
2005-06-08 03:43
2005.07.18
Как программно перебирать значения в DBGrid?


1-1119961554
Mishenka
2005-06-28 16:25
2005.07.18
Как в ListView CheckBoxes отловить событие установки галки?


8-1110725856
Uncle Dix
2005-03-13 17:57
2005.07.18
Считывание сигнала с линейного входа(Line in) звуковой карты





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский