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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2011, 14:03   #1
Death_moroZ
 
Регистрация: 28.09.2010
Сообщений: 9
Печаль Halt

Вот такая процедура
Код:
save_event; //Сохранение БД
optionutils(true); //Сохранение параметров
Ic(2,Application.Icon); //Удаление иконки
Halt(1); //Харакири
Работала исправно пока в процедуру save_event не были внесены изменения. Теперь при завершении программы выскакивает ошибка "Invalid pointer operation".
Анализ показал что в save_event ошибки нет но возникает она в операторе Halt(1); что странно.
Вот интерест почему стала выскакивать ошибка.

P.S. Если надо код save_event; и других процедур выложу.
Death_moroZ вне форума Ответить с цитированием
Старый 17.03.2011, 14:24   #2
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Хех, а почему именно Halt? Что, Form1.Close или Aplication.Terminate уже не рулят?
Да и вообще, знаете ли вы, что означает параметр в процедуре Halt?
_-Re@l-_ вне форума Ответить с цитированием
Старый 17.03.2011, 14:31   #3
Death_moroZ
 
Регистрация: 28.09.2010
Сообщений: 9
По умолчанию

Form1.Close: Стоит запрет на закрытие (сворачивание в трей).
Aplication.Terminate: Другая ошибка
Параметр в Halt не знаю)

Последний раз редактировалось Death_moroZ; 17.03.2011 в 14:39.
Death_moroZ вне форума Ответить с цитированием
Старый 17.03.2011, 14:54   #4
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Если с помощью Halt вы хотите просто закрыть программу, то делайте либо так:
Код:
Halt;
Либо так:
Код:
Halt(0);
_-Re@l-_ вне форума Ответить с цитированием
Старый 17.03.2011, 15:38   #5
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Код:
ExitProcess(0);
не?
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 17.03.2011, 15:43   #6
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Использование Halt считается ОЧЕНЬ плохим тоном.
_SERGEYX_ вне форума Ответить с цитированием
Старый 17.03.2011, 16:00   #7
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

_SERGEYX_ +1000000
Как по-моему, так Halt полезен только в Borland Pascal, но не в Delphi.
_-Re@l-_ вне форума Ответить с цитированием
Старый 17.03.2011, 16:19   #8
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Только один раз сталкивался с таким, чтоб Application.Terminate; приводило к ошибке. И тот случай был замешан с двумя главными потоками (такое возможно, не кидайте помидорами)... Хальт вобще некрасиво использовать, это как ходить с трусами поверх штанов
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 17.03.2011, 16:54   #9
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Поставить бряк на Application.Terminate и протрассировать до места ошибки. В программе интерфейсы используются, многопоточность?

Пройтись по коду, инициализировать явно все переменные, присвоить nil освобождаемым указателям, проверить чтоб в деструкторах всех классов была директива inherited, не вызывается ли где Object.Destroy вместо Object.Free.

И через Halt больше никогда не завершать выполнение программы.
пыщь
JTG вне форума Ответить с цитированием
Старый 17.03.2011, 18:15   #10
Death_moroZ
 
Регистрация: 28.09.2010
Сообщений: 9
По умолчанию

Ошибка была с выходом за пределы динамического массива, Halt не причём, мне он просто подходил.

А можно как нибудь конкрктно отлавливать ошибка, ато при работе с классами моё Delphi в режиме отладки не указывает где ошибка?
Death_moroZ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
application.terminate (or halt) Fiery Fox Общие вопросы Delphi 11 20.02.2011 20:36