Главная страница
    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.006 c
3-23882
RDA
2002-07-16 17:47
2002.08.08
Удаление дочерних узлов


14-24232
Igor_thief
2002-07-15 12:55
2002.08.08
Народ, может кто уже


3-23894
Pretor
2002-07-17 15:44
2002.08.08
Импорт данных


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


14-24173
AL2002
2002-07-12 13:35
2002.08.08
Лицензионное Дельфи





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