Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.08;
Скачать: CL | DM;

Вниз

Как перехватывать обработчики ошибок?   Найти похожие ветки 

 
Helg ©   (2002-07-28 09:39) [0]

Подскажите, как перехватывать ошибки. Такая конструкция почему-то не работает:

procedure ErrorsMs(ErrorCode:Integer;ErrorAdr:Pointer);
begin
ErrMess("Error "+IntToStr(ErrorCode)); // процедура вывода сообщения
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ErrorProc:=@ErrorsMs;
...
end;


 
object pascal   (2002-07-28 11:17) [1]

В принципе она работает.

Из help"a:
The ErrorProc variable is retained primarily for compatibility with older Pascal code.

На всякий случай переведу:
Переменная ErrorProc оставлена главным образом для совместимости со старым паскалевским кодом.

Она вызывается из ф-и Error (system.pas) и должна содержать возбуждение исключения, чтобы предотвратить дальнейший ход этой процедуры (реализующий старую обработку ошибок).

И так как это артефакт старого паскаля, через неё проходят далеко не все ошибки. Например:

var a, b: Integer;

procedure TForm1.FormCreate(Sender: TObject);
var f: TextFile;
begin
ErrorProc := @MyErrorHandler;

WriteLn(f, 1); // Пройдёт через ErrorProc

a := 0;
b := 1 mod a; // Не пройдёт через ErrorProc
end;


 
Helg ©   (2002-07-28 11:28) [2]

Ага, ясно. А как же быть? Я пишу программу для одного клиента, он постоянно подключен к Интернету. Мне надо, чтобы все сообщения об ошибках автоматом летели ко мне в ящик. С Интернетом проблем нет, а как все-таки перехватывать?


 
TTCustomDelphiMaster ©   (2002-07-28 11:34) [3]

procedure TForm1.AppException(Sender: TObject; E: Exception);
begin
ShowMessage("Error with "+Sender.ClassName+" "+E.Message);
ShowException(ExceptObject, ExceptAddr);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c: double;
begin
Application.OnException := AppException;
a:=0;
b:=1;
c:=b/a;
ShowMessage(Floattostr(c));
end;


 
DAO ©   (2002-07-28 13:23) [4]

Удалено модератором



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

Текущий архив: 2002.08.08;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
3-23958
Пастор
2002-07-18 18:46
2002.08.08
Как динамически создать вычисляемое или lookup поле ?


7-24244
Bosss20000
2002-05-23 19:02
2002.08.08
Запуск win-приложения из Delphi


8-24127
Серж Долгов
2002-03-29 22:17
2002.08.08
Про пиксели - 2


3-23876
SkyR
2002-07-16 10:22
2002.08.08
Как прикрутить хранимую процедуру к программе....


6-24153
Akni
2002-05-26 14:39
2002.08.08
Передача данных из одной программы в другую