AssertErrorProc
Adam Boduch
AssertErrorProc
Moduł: System
W momencie wywołania funkcji Assert, Delphi uruchamia domyślną procedurę obsługi błędu. Programista może napisać własną procedurę, która - np. w wyniku błędu, zapisywać będzie informacje o błedzie do pliku dziennika (log) lub dokonywać będzie innych, dowolnych działań. Własna procedura obługi błędów musi mieć następujący nagłówek:
procedure AssertErrorHandler(const Message, Filename: string; LineNumber: Integer; ErrorAddr: Pointer);
W momencie wywołania funkcji Assert, do tej procedury zostaną przekazane parametry w postaci:
-
Message
- komunikat błędu (parametr funkcji Assert), -
FileName
- nazwa pliku w którym wywołana została funkcja Assert, -
LineNumber
- linia w kodzie źródłowym, w którym wystąpił błąd (czyli również - de facto - linia w której kompilator odnajdzie wywołanie funkcji Assert), -
ErrorAddr
- wskaźnik do błędu.
Oto przykład programu, który posiada własną procedurę obsługi błędów. Błędy zapisywane są do pliku dziennika:
program Foo;
{$APPTYPE CONSOLE}
uses
SysUtils;
procedure MyAssertErrorHandler(const Message, Filename: string; LineNumber: Integer; ErrorAddr: Pointer);
var
TF : TextFile;
begin
AssignFile(TF, 'C:\error.log');
try
if FileExists('C:\error.log') then
Append(TF)
else Rewrite(TF);
{ logowanie błędu do pliku }
Writeln(TF, Format('%s: %s w linii %d, adres błędu: $%x',
[FileName, Message, LineNumber, Integer(ErrorAddr)])
);
finally
CloseFile(TF);
end;
end;
begin
{ przypisanie procedury obsługi błędu }
AssertErrorProc := @MyAssertErrorHandler;
{ wywołanie błędu }
Assert(False, 'Celowe wystąpienie błędu');
Readln;
end.
Zobacz też: