Log błędów programu i danej formy z której powstały

0

Korzystam z kodu zaczerpniętego z internetu do stworzenia pliku błędów programu. Ponieważ program składa się z kilku form i chciałbym aby w przypadku pojawienia się błędu w pliku logu dopisywana była forma z której powstał błąd. Co bym musiał dopisać do poniższego kodu ?

procedure TForm1.ApplicationEvents1Exception(Sender: TObject;
  E: Exception);
var
   ErrorLogFileName : string;
   ErrorFile : TextFile;
   ErrorData : string;
begin
   ErrorLogFileName := ChangeFileExt(Application.ExeName,'.log') ;
   AssignFile(ErrorFile, ErrorLogFileName) ;

   //either create an error log file, or append to an existing one
   if FileExists(ErrorLogFileName) then
     Append(ErrorFile)
   else
     Rewrite(ErrorFile) ;

   try
     //add the current date/time and the exception message to the log
     ErrorData := Format('%s : %s',[DateTimeToStr(Now),E.Message]) ;
     WriteLn(ErrorFile,ErrorData) ;
   finally
     CloseFile(ErrorFile)
   end;

   //Show the exception
   Application.ShowException(E);
end;
0

Korzystam z kodu zaczerpniętego z internetu do stworzenia pliku błędów programu. Ponieważ program składa się z kilku form i chciałbym aby w przypadku pojawienia się błędu w pliku logu dopisywana była forma z której powstał błąd. Co bym musiał dopisać do poniższego kodu ?

A co jak nie ma formy która powoduje błąd?
Nie da się tego po prostu zrobić. Wiem jak pod FPC dodać reportowanie call stacku, ale to i tak nie mówi jaka to forma (przynajmniej niekoniecznie).

Generalnie mówiąc: Jak leci ci exception, to łatwo jest pobrać jego msg i obiekt, ale call stack to już inna bajka.
Są do tego jakieś komponenty do Delphi, nie używałem, nie wiem, ale google wie. Jak już wiesz że masz szukać zrzucania 'call stack' to teraz pogoogluj bo pewnie tego słowa-klucza ci brakowało.

0

Można np. użyć madExcept choć ten chyba także nie pokaże która forma ale przynajmniej który unit (poza tym wiele innych pomocnych informacji) a to raczej powinno wystarczyć... Niestety jest darmowy tylko do zastosowania niekomercyjnego na dodatek za darmo nie dają kodów źródłowych.

0

madexcept, jedi ściągnij sobie, pooglądaj. Ja używam madexcept i jestem bardzo zadowolony (chociaż exe trochę puchnie)

1 użytkowników online, w tym zalogowanych: 0, gości: 1