Sve to radi fino, ali, kako doznati što je točno uzrokovalo grešku.
Primer:
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnException := AppException;
end;
...
procedure TForm1.AppException(Sender: TObject; E: Exception);
begin
ShowMessage('Gr 2' + #13 + Sender.ClassName + #13 + e.ClassName + #13 + e.Message);
end;
...
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c: double;
begin
a := 10;
b := 100;
c := 0;
while a > -5 do begin
c := b / a;
Memo1.Lines.Append(FloatToStr(c));
a := a - 1;
end;
end;
Namjerno je napravljeno da izazove djelenje sa nulom. Program uredno uđe u AppException proceduru, ali Sender je Form1.
Postoji li mogučnost da se dobije kao sender procedura Button1Click, broj retka koda ili nešto slično da se zna što je izazvalo grešku? Ovako je neiskoristivo, nije mi od pomoće ako znam da je negdje došlo do dijelenja sa nulom!