Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-24005
msalex
2002-07-28 14:05
2002.08.08
Reach Edit: найти положение текстового курсора по положению кур.


4-24283
Uri
2002-05-28 15:09
2002.08.08
MS Office Panel


3-23955
dzmitry
2002-07-02 10:23
2002.08.08
Btrieve for Linux


1-24049
newUser
2002-07-25 13:26
2002.08.08
Lockfile


3-23953
the-best-officeman
2002-07-18 21:06
2002.08.08
for i := 0 to table1.RecordCount-1 do begin





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский