Форум: "Основная";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];
ВнизКак перехватывать обработчики ошибок? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c