Assert
Adam Boduch
Assert
Moduł: System
Funkcja zostanie użyta tylko wówczas gdy wartością parametru expr jest False. Drugi, opcjonalny parametr może zawierać treść przekazywaną do klasy wyjątku.
Właściwie jeżeli wartością parametru expr
jest False, Delphi wywołuje procedurę, której adres wskazuje zmienna AssertErrorProc.
Działanie funkcji Assert
może zostać wyłączone przy użyciu dyrektywy $ASSERTIONS
.
Przykładowa obsługa błędu polegająca na zapisywaniu wszelkich wystąpień do dziennika (plik logu):
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ż:
Nie wiem, czy w Delphi jest tak samo, ale w C++ Assert jest makrem, które działa tylko jeśli generujemy kod z opcją 'debug'. Jeśli w opcjach ustawimy 'release' to Assert przestanie działać.