Главная страница
    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
4-24258
KPV-10k
2002-05-27 21:22
2002.08.08
Мышиное нажатие...


1-24050
zetta
2002-07-24 19:03
2002.08.08
файлы по таймеру


1-24054
psibug
2002-07-18 21:31
2002.08.08
---|Ветка была без названия|---


1-24025
Eugene_Jek_Efimochkin
2002-07-29 00:43
2002.08.08
проблемы с модулем DsgnIntf


6-24157
Sherbacov
2002-05-29 15:39
2002.08.08
NMFTP1.Download (Все файлы)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский