Привет, Гость Общайся! и получай бонусы!
Привет, Гость !
Мой город.Форум Одесса Киев Харьков Днепроперовск Донецк
Чтобы зайти,введите данные:
Или

Здравствуйте, Гость! ( Вход · Регистрация · Правила форума ) Забыли пароль?




 Страниц (1): [1]   

> Описание: как правильно завершить программу delphi? чтобы не висала
offline Den
Одесса Украина
Отправлено: 28 Сентября, 2011 - 17:25:26
Post Id


Администратор 10 постов 100 постов 500 постов 10 постов 100 постов За 6 месяцев За год За 3 года
Super Member


Сообщений всего: 1096
Дата рег-ции: Март 2010  
есть проект с MDI окнами
.....
begin
Application.Initialize;


Application.CreateForm(TMainForm, MainForm);
Application.CreateForm(TClient, Client);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
..........
Application.CreateForm(TForm30, Form30);

PasswordDlg := TPasswordDlg.Create(PasswordDlg);

PasswordDlg.ShowModal;
PasswordDlg.Free;


Application.Run;
end.


при закрытии приложения перехватываю событие
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);

begin

case MessageDlg('Вы действительно хотите выйти?', mtWarning, mbYesNo, 0)
of
mrYes: begin
TrayIcon1.Visible := False;
unit6.Form6.DBGrid1.datasource.dataset.close;
unit1.Client.DBGrid1.datasource.dataset.close;
unit3.Form3.DBGrid1.datasource.dataset.close;
unit3.Form3.DBGrid2.datasource.dataset.close;
unit4.Form4.DBGrid1.datasource.dataset.close;

SQLConnection1.Connected := False;
Action:= caHide;

end;
mrCancel: Action:=caNone;
mrNo: Action:=caNone;
end;


приложение виснет примерно в 3х из десяти случаев выхода при этом на 100% используя ресурсы процессора - одного из его ядер, при трессировке виснет на строке end. в Program
Как избавится от этого и какие причины?
Дополнение #1 23.09.2011 20:00:49
я пробывал и Action := caFree;
и halt(0);
вместо Action:= caHide;
и Application.Terminate;
или Application.Destroy;
или Application.Free;

есе равно виснет в 20-30 % при выходе
Дополнение #2 24.09.2011 0:04:50
отладчике поставил breakpoint и прошелся пошагово- зависает на самой последней строчке всей программы
на строке end. в Program
 
Записать себе в LiveJournal В дневник на LI.RU Написать в Facebook Поделиться ВКонтакте Поделиться В одноклассниках Показать В Моем Мире Поделиться ссылкой на Я.ру В Google Buzz  Top
offline Iriska
Отправлено: 28 Сентября, 2011 - 17:27:54
Post Id


Администратор 10 постов За 6 месяцев За год За 3 года Девушка форума
Junior Member


Сообщений всего: 75
Дата рег-ции: Март 2010  
Для вопроса "закрывать или нет?" есть событие OnCloseQuery, специально для этого предназначенное. Чтобы найти причину зависания попробуй в отладчике поставить breakpoint и пройтись пошагово
 
Записать себе в LiveJournal В дневник на LI.RU Написать в Facebook Поделиться ВКонтакте Поделиться В одноклассниках Показать В Моем Мире Поделиться ссылкой на Я.ру В Google Buzz  Top
offline Den
Одесса Украина
Отправлено: 28 Сентября, 2011 - 17:28:56
Post Id


Администратор 10 постов 100 постов 500 постов 10 постов 100 постов За 6 месяцев За год За 3 года
Super Member


Сообщений всего: 1096
Дата рег-ции: Март 2010  
разместил procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
все равно виснет((((((((

в эвентлоге

при выходе
...
Thread Start: Thread ID: 1104. Process MDIAPP.exe (2128)
Thread Exit: Thread ID: 3076. Process MDIAPP.exe (2128)
Module Load: unidrvui.dll. No Debug Info. Base Address: $71990000. Process MDIAPP.exe (2128)
Module Load: MXDWDUI.dll. No Debug Info. Base Address: $736A0000. Process MDIAPP.exe (2128)
Module Load: mxdwdrv.dll. No Debug Info. Base Address: $72FD0000. Process MDIAPP.exe (2128)
Module Load: FONTSUB.dll. No Debug Info. Base Address: $74640000. Process MDIAPP.exe (2128)
Module Load: prntvpt.dll. No Debug Info. Base Address: $73680000. Process MDIAPP.exe (2128)
Thread Start: Thread ID: 996. Process MDIAPP.exe (2128)
Module Load: XmlLite.dll. No Debug Info. Base Address: $747C0000. Process MDIAPP.exe (2128)
Module Unload: XmlLite.dll. Process MDIAPP.exe (2128)
Thread Exit: Thread ID: 996. Process MDIAPP.exe (2128)
Source Breakpoint at $77CA64F4: D:\Новая папка\MDIAPP.dpr line 659. Process MDIAPP.exe (2128)
Thread Exit: Thread ID: 1152. Process MDIAPP.exe (2128)
Thread Exit: Thread ID: 564. Process MDIAPP.exe (2128)
Thread Exit: Thread ID: 2424. Process MDIAPP.exe (2128)
Thread Exit: Thread ID: 3636. Process MDIAPP.exe (2128)
Thread Exit: Thread ID: 2960. Process MDIAPP.exe (2128)
Thread Exit: Thread ID: 1556. Process MDIAPP.exe (2128)
Thread Exit: Thread ID: 1196. Process MDIAPP.exe (2128)
Thread Start: Thread ID: 2832. Process MDIAPP.exe (2128)
и последняя строчка повторяется с разным ид(((

точнее эта строчка повторяется Thread Exit: Thread ID: 1196. Process MDIAPP.exe (2128)
с разным ид

сама программа отлично работает- и , даже если ничего в программе не делать - то при выходе все равно иногда виснет , циклов нет - они не запускаются даже... это скорее всего при уничтожении(освобождении памяти) объекта какого то происходит, но почемуто все время по разному.... и найти трудно где это - так как при пошаговом выполнении идеально до последнего end с точкой доходит и на нем виснет

я даже пробывал сделать все окна обычными - не было дочерних, и приложение стало не MDI а SDI то есть обычное- и все равно так же иногда при выходе виснет, еще я заметил если проверять подтверждение выхода в TMainForm.FormCloseQuery даже чаще виснет чем если оно находится в TMainForm.FormClose, но пробывал вообще ничего при выходе ни TMainForm.FormClose ни TMainForm.FormCloseQuery не делать - все равно виснет((
Дополнение #7 25.09.2011 1:44:11
интерестное вставил во все формы в FormDestroy(Sender: TObject); Dialogs. showmessage(' уничтожаем форму номер 4 ...');
завержает после 30 нажатий ок - идеально
(Добавление)
сделал формирование лога в каждом дестрое
25.09.11 03:06:16.021 open PasswordDlg
25.09.11 03:06:20.050 ondestory PasswordDlg
25.09.11 03:06:23.070 ondestory Form30
25.09.11 03:06:23.072 ondestory Form28
25.09.11 03:06:23.074 ondestory Form27
25.09.11 03:06:23.077 ondestory Form26
25.09.11 03:06:23.079 ondestory Form25
25.09.11 03:06:23.080 ondestory Form24
25.09.11 03:06:23.082 ondestory Form23
25.09.11 03:06:23.083 ondestory Form22
25.09.11 03:06:23.084 ondestory Form21
25.09.11 03:06:23.085 ondestory Form20
25.09.11 03:06:23.144 ondestory Form19
25.09.11 03:06:23.146 ondestory Form18
25.09.11 03:06:23.147 ondestory Form17
25.09.11 03:06:23.609 ondestory Form16
25.09.11 03:06:23.611 ondestory Form15
25.09.11 03:06:23.612 ondestory Form14
25.09.11 03:06:23.613 ondestory Form13
25.09.11 03:06:23.615 ondestory Form12
25.09.11 03:06:23.616 ondestory Form10
25.09.11 03:06:23.618 ondestory Form9
25.09.11 03:06:23.620 ondestory Form8
25.09.11 03:06:23.622 ondestory Form7

вероятно проблема в 7 форме, в ней есть обработчик события onclose onhide - но они не настыпают при выходе, как узнать где в этой фоме может быть проблема, PS - - по умолчанию она скрытая, и не дочерняя - вызавается как модальная, НО эта форма при дестрое виснет даже если НИ РАЗУ не показывалась
 
Записать себе в LiveJournal В дневник на LI.RU Написать в Facebook Поделиться ВКонтакте Поделиться В одноклассниках Показать В Моем Мире Поделиться ссылкой на Я.ру В Google Buzz  Top
offline Den
Одесса Украина
Отправлено: 25 Марта, 2012 - 14:21:31
Post Id


Администратор 10 постов 100 постов 500 постов 10 постов 100 постов За 6 месяцев За год За 3 года
Super Member


Сообщений всего: 1096
Дата рег-ции: Март 2010  
самое что интересно именно из за использования RaveReport зависает, пробывавал в компонентах RvDataSetConnections разные свойства в true false менять - практически нет зависаний при выходе, но появились в 6ой форме одибки типа name: Preparation of default expression failed with eoс Access violation at address ........ Read of address ........`

попробівал вообще убрать всо обращения к компоненту RvSystem - ничего не помагла - но убрал вообще с формы RvSystem - ошибка при завершении исчезла- не знаю где же собака зарыта?)) что же неправильно?
 
Записать себе в LiveJournal В дневник на LI.RU Написать в Facebook Поделиться ВКонтакте Поделиться В одноклассниках Показать В Моем Мире Поделиться ссылкой на Я.ру В Google Buzz  Top
offline Alena
Ukraine
Отправлено: 25 Марта, 2012 - 14:55:10
Post Id


10 постов За 6 месяцев За год За 3 года Девушка форума
Junior Member


Сообщений всего: 68
Дата рег-ции: Янв. 2010  
проверьте все настройки revereport если используете на форме, он весьма глюченный
 
Записать себе в LiveJournal В дневник на LI.RU Написать в Facebook Поделиться ВКонтакте Поделиться В одноклассниках Показать В Моем Мире Поделиться ссылкой на Я.ру В Google Buzz  Top
Страниц (1): [1]
« Компьютеры Софт и игры »

> Самое интересное

Кому идут деньги от проезда на маршрутках Одессы?

список миллионеров одессы

Что можно посетить в Одессе, какие есть достопримечательности, визитные карточки Одессы?

Все новостройки Киева! Полная энциклопедия строительства, ремонта и дизайна!

Какую краску выбрать для окраски стен в доме

ЭВОЛЮЦИЯ ИНТЕРНЕТ СЕРВИСОВ. ИНТЕРНЕТ БУДУЩЕГО

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



НАВЕРХ
[Script Execution time: 0.0296]     [ Gzipped ]



Hosting Ukraine