Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Контроль Ошибок 
:(
    Опции темы
tht
  Дата 5.8.2007, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 10.5.2006

Репутация: нет
Всего: 1



как в своей программе самому контролировать ошибки ? 
вот например случается ошибка, система сама выдает номер ошибки и на том месте завершает программу, а мне бы хотелось самому обработать ошибку и вывести ее номер, и продолжить работу программы дальше.
PM MAIL   Вверх
ALeXandrK
Дата 5.8.2007, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 342
Регистрация: 31.1.2007
Где: Санкт-Петербург

Репутация: нет
Всего: 6



Используй конструкцию 
Код

try
... //код, который может вызвать аварийное завершение 
except
...// если произойдет ошибка, кот. ведет к авар. завершению, то программа перейдет сюда. Тут и обрабатывай ошибку.
end;


Про конструкцию можно много чего найти... так что ищи smile 



Это сообщение отредактировал(а) ALeXandrK - 5.8.2007, 16:13


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
volvo877
Дата 5.8.2007, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



ALeXandrK,
а ты уверен что компилятор, которым пользуется автор вопроса поддерживает try ... except ? Я вот не очень...
PM MAIL   Вверх
tht
Дата 5.8.2007, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 10.5.2006

Репутация: нет
Всего: 1



volvo877 ты прав, не поддерживает. это наверное из серии Дельфи, но я же пишу в форуме паскаля.
PM MAIL   Вверх
volvo877
Дата 5.8.2007, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Ну, не только Дельфи... В FPC, например, тоже есть эта конструкция...

Кстати, ты какие ошибки хочешь ловить? Если насчет твоей предыдущей программы (ошибка при работе с файлом), то попробуй что-то типа:

Код

var
  f: text;
  error: integer;
begin

  assign(f, 'r.txt');
  {$i-}
  reset(f);
  {$i+}

  error := ioresult;
  if error <> 0 then begin
    writeln('error #', error); { <-- Здесь будет поймана попытка открытия несуществующего файла }
  end
  else
    close(f);

end.


PM MAIL   Вверх
ILyAHA
Дата 5.8.2007, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гламурный хакер
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 30.3.2007
Где: Ярославская обл. г.Рыбинск

Репутация: нет
Всего: 3



В паскале есть процедурка ExitProc. Она вызывается всегда ,когда программа завершается как корректно(с кодом ошибки 0) так и некорректно,т.е. с ошибками Run Time Error ....

Работать с ней так :

Код


...
Var OldExitProc:pointer;
...

procedure ExitProcedure;far;
begin
  ExitProc := OldExitProc;  {эта строка обязательно, т.к. после выхода из процедуры
                                           должна вызваться старая подпрограмма}
  {дальше делаеш что нужно...}
end;

begin
...
OldExitProc:=ExitProc;
ExitProc := Addr(ExitProcedure);
...
end.



Почитай еще хелп!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
--------------------
<sсriрt>alert('xss')</sсriрt>
PM MAIL   Вверх
volvo877
Дата 5.8.2007, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



ILyAHA,
ты задание прочел? Тогда перечитай, автор хочет поймать ошибку и продолжить работу с программой, а ExitProc - это если ты хочешь перед выходом выдать более содержательное сообщение об ошибке, но программа все равно прервется...
PM MAIL   Вверх
ALeXandrK
Дата 5.8.2007, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 342
Регистрация: 31.1.2007
Где: Санкт-Петербург

Репутация: нет
Всего: 6



 smile 
Код

а ты уверен что компилятор, которым пользуется автор вопроса поддерживает try ... except ? Я вот не очень...

Но это уже зависит от степень правильности поставленного вопроса. Человек недосказал, пришлось догадываться...
не угадал smile 


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
tht
Дата 5.8.2007, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 10.5.2006

Репутация: нет
Всего: 1



volvo877 спасибо. это то что мне нужно было. осталось разобратся почему мне доступ не дают, я же на компе как админ (
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

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

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0484 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.