Главная страница
    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]

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


 
Andy BitOff ©   (2005-06-30 01:27) [41]

grol ©   (30.06.05 01:12) [40]

Бедненький ;) Ну выложи свои сырцы куда-нибудь.


 
grol ©   (2005-06-30 01:46) [42]

А куда? Я не знаю! Подскажите!


 
Andy BitOff ©   (2005-06-30 01:47) [43]

webfile.ru


 
grol ©   (2005-06-30 01:52) [44]

Спасибо!


 
Германн ©   (2005-06-30 02:01) [45]

2 grol

А это тебе действительно нужно?
Эта ошибка что-то портит?

У меня тоже есть нечто подобное. Программа при закрытии выдает сообщение об AV, но это сообщение закрывается так быстро, что и не разглядишь, что там написано. Я это отнес на "кривость Paradox и BDE, на которые, имхо, Борланд давно "положила" и не пытаюсь искать. :(
Правда у меня такое происходит "иногда".

Ну да, что-то уничтожается до того как выполнились некие действия с ним. Типа в ОС уже вернули область памяти, которая содержала некий указатель на что-то, а BDE пытается что-то выполнить над теми данными, на которые он указывал.

Но это у меня. Тем более, что моя программа предусматривает выход из нее как "нештатную ситуацию".


 
kami ©   (2005-06-30 02:05) [46]

А у меня такая ситуация возникала (правда, и при трассировке тоже), когда вызывал какую-то API ф-ю, не зарезервировав память под возвращаемый параметр :)
Причем, результат возвращался правильный, ошибок GetLastError не выявлял, но при завершении программы - AV :))


 
grol ©   (2005-06-30 02:06) [47]

Мастера вот ссылка на файл - http://www.webfile.ru/381047  и  Пароль 123456789

Спасите от погибели неопытного программиста, дайте ему шанс на выживание


 
Плохиш ©   (2005-06-30 02:15) [48]

300 byte/sec 8-O


 
Плохиш ©   (2005-06-30 02:16) [49]


> Германн ©   (30.06.05 02:01) [45]
> Я это отнес на "кривость Paradox и BDE,

Не, во всех грехах Билл Гейтс виноват, а не мы родимые.


 
Просто Джо ©   (2005-06-30 02:16) [50]


> [48] Плохиш ©   (30.06.05 02:15)
> 300 byte/sec 8-O

А ты хотел? Все же кинулись туда помогать неопытному программисту! :0)


 
Плохиш ©   (2005-06-30 02:19) [51]

А, так помошников немеряно, ну тоды я спать пошёл ;-)


 
Просто Джо ©   (2005-06-30 02:21) [52]


>  [51] Плохиш ©   (30.06.05 02:19)
> А, так помошников немеряно, ну тоды я спать пошёл ;-)

Спи спокойно, дорогой товарищ! Гролу поможет партия.
%)


 
Плохиш ©   (2005-06-30 02:34) [53]

Тияк, начнём:

1. TGlobalForm.FormClose
   Строки:
     ReportForm.Chart1.Free;
     ReportForm.Series1.Free;
   убрать нафик, не ты создавал - не тебе и удалять, к тому же форма ReportForm к этому моменту скорее всего уже будет уничтожена.

2. GrOfFunc сделать методом формы TReportForm и убрать из неё все упоминания ReportForm.

3. ... пока хватит :-)


 
Германн ©   (2005-06-30 03:13) [54]

2 Плохиш ©   (30.06.05 02:16) [49]

>> Германн ©   (30.06.05 02:01) [45]
>> Я это отнес на "кривость Paradox и BDE,

>Не, во всех грехах Билл Гейтс виноват, а не мы родимые.

А я разве упрекал Билла в чем-нибудь?
И как Билл относится к Paradox и к BDE?


 
Anatoly Podgoretsky ©   (2005-06-30 09:03) [55]

Германн ©   (30.06.05 03:13) [54]
Хорошо относится.


 
Плохиш ©   (2005-06-30 09:08) [56]


> Германн ©   (30.06.05 03:13) [54]

Ну да, ну да, ты нашёл новых виноватых.


 
Сайбель Алексей ©   (2005-06-30 10:58) [57]

В общем:
1. Помимо компонентов, которые в архиве,
еще куча модулей: {SkinData,}{DynamicSkinForm,}{spTrayIcon,} {SkinCtrls,}{SkinBoxCtrls,}{SkinMenus,}{SkinHint,}{spColorCtrls,}{SkinGrids,}
2. Плохо даны именна переменных и форматирование кода оставляет желать лучшего.
3. Все таки warning не зря придумали, и желательно от них "избавляться". У тебя их 13 штук.
4. Аккуратнее использовать стороннии компоненты..

Вывод поиск ошибки - нереальное занятие в твоей программе.


 
Сайбель Алексей ©   (2005-06-30 11:10) [58]

Откомпилировал пошагово =|
не делайте этого..


 
Плохиш ©   (2005-06-30 11:22) [59]


> Сайбель Алексей ©   (30.06.05 11:10) [58]

:-)) Вот человеку делать нечего - старался, компилировал :-) После того как он исправит ляпы, видные невооружённым глазом без компиляции, будем говорить дальше.


 
msguns ©   (2005-06-30 11:30) [60]

Ужастик однако ;))


 
grol ©   (2005-06-30 21:17) [61]

Значит конкретного ответа не будет в чем дело! :-((( Ну ладно попытаюсь сделать сам что-нибудь!


 
Просто Джо ©   (2005-06-30 21:18) [62]


> Ну ладно попытаюсь сделать сам что-нибудь!

Хм... а до этого момента не пробовал?


 
grol ©   (2005-06-30 21:19) [63]

Нет! Я уже как раз все перепробовал, что мог. Мой уровень не позволяет найти причину этой ошибки! :-((((


 
Просто Джо ©   (2005-06-30 21:30) [64]

А многочисленными советами, данными в этой ветке, уже воспользовался?


 
Плохиш ©   (2005-06-30 23:41) [65]


> grol ©   (30.06.05 21:17) [61]
> Значит конкретного ответа не будет в чем дело! :-(((

Так ты хотел, чтобы за тебя твою программу отладили? Так бы сразу и говорил, тогда озвучь сумму, может кто-нибуть и согласится.


 
grol ©   (2005-07-01 02:09) [66]

Ну это же форум программистов! Я так понимаю, что тут мастера должны помогать другим. Кто еще не ас в Delphi. И так же буду делать, когда буду знать на уровне хорошего программера. Тогда спасибо всем, кто мне хоть как-то пытался помочь в решении проблемы. Дальше буду думать сам, если я смогу еще что-то придумать!


 
Erik1 ©   (2005-07-01 10:37) [67]

Возми готовый исходник и посмотри как правильно писать надо! Для начала избався от глобальных переменых и нетрогай компонеты раз все равно ничего в этом непонимаеш.


 
msguns ©   (2005-07-01 11:06) [68]

>grol ©   (01.07.05 02:09) [66]
>Я так понимаю, что тут мастера должны помогать другим.

Ошибка первая. Должен только тот, кто брал взаймы.

Ошибка вторая. Не надо пытаться делать то, чего можно не делать.
Не имея понятия в основах, лезем удалять объекты, о происхождении которых не имеем представления.

Ошибка третья. Не пытаемся читать книги по Дельфи с примерами, не смотрим многочисленные примеры кода, представленные с самой делфой, игнорируем великолепный встроенный хэлп.

Ошибка четвертая. Когда знающие люди пытаются объяснить ошибочность самого подхода к работе, нервничаем и сердимся вместо того, чтобы просто задуматься в стиле "А не дурак ли я ?"



Страницы: 1 2 вся ветка

Форум: "Основная";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.62 MB
Время: 0.039 c
3-1117710731
andrex
2005-06-02 15:12
2005.07.18
Отмена изменений


1-1120025152
rooker
2005-06-29 10:05
2005.07.18
главное окно программы


1-1120330054
n0p
2005-07-02 22:47
2005.07.18
Маленький баг...


3-1117916546
новичок из сыктывкара
2005-06-05 00:22
2005.07.18
фильтрация данных


14-1119601302
Ломброзо
2005-06-24 12:21
2005.07.18
Flash - ссылкой?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский