Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Exceptions speichern (https://www.delphipraxis.net/112437-exceptions-speichern.html)

Tommy1988 21. Apr 2008 13:29


Exceptions speichern
 
Aloha,

kann mir wer erklären, wie man auftretende Exceptions ("" is not a valid Integer-Value, usw)
speichern kann?

Ich habe schon selbst einiges probiert, doch klappt es nicht.

Bernhard Geyer 21. Apr 2008 13:31

Re: Exceptions speichern
 
Zitat:

Zitat von Tommy1988
Ich habe schon selbst einiges probiert, doch klappt es nicht.

Was hast du probiert und was klappt nicht?

Die Muhkuh 21. Apr 2008 13:32

Re: Exceptions speichern
 
Du könntest über TApplicationEvents.OnException die Fehler in eine Datei speichern.

Tommy1988 21. Apr 2008 13:44

Re: Exceptions speichern
 
So in etwa dieses hier:

Delphi-Quellcode:
var
ex: Exception;
i: SmallInt;
begin
try
 i := StrToInt(Edit1.Text); // ich gib ne kommazahl ein, um ex zu erreichen
except
on ex: Exception do
 ShowMessage('Exception detected:' +#13+
 ex.message);
end;
Aber da gibts nix wie "SafeToFile" oder so :/

Die Muhkuh 21. Apr 2008 13:52

Re: Exceptions speichern
 
Wie Du an die Nachricht dran kommst weißt Du, dann kannst die per TStringList, über TFileStream oder über AssignFile und Konsorten in eine Datei schreiben.

Apollonius 21. Apr 2008 16:28

Re: Exceptions speichern
 
Delphi-Referenz durchsuchenAcquireExceptionObject

Tommy1988 21. Apr 2008 16:38

Re: Exceptions speichern
 
leider klappt momentan garnix :wall:

Die Muhkuh 21. Apr 2008 16:39

Re: Exceptions speichern
 
Interessant, so kann das auch nicht klappen.

shmia 21. Apr 2008 16:41

Re: Exceptions speichern
 
Zitat:

Zitat von Tommy1988
leider klappt momentan garnix

Erklär doch mal von Anfang an, was du überhaupt erreichen möchtest.
Mit Exceptions kann man nämlich Vieles anstellen.

Tommy1988 21. Apr 2008 16:43

Re: Exceptions speichern
 
Naja, so gesehen möchte ich nur erreichen , dass ich zum schluss weis "wie man sowas macht"..

sry, hab seit 10 min frei ( :wall: ) und steh noch unter strom :feuerchen:

Fussball-Robby 21. Apr 2008 17:06

Re: Exceptions speichern
 
Na, dann wollen wir mal nich so sein :wink:
Also, zuerst machst du dir ne Prozedur, in der die Fehler behandelt und gespeichert werden. Hier mal eine Idee:
Delphi-Quellcode:
procedure TForm1.AppException(Sender: TObject; E: Exception);
var
  FName: String;
  List: TStrings;
begin
  FName := ExtractFilePath(ParamStr(0)) + 'Errors.log';
  List := TStringList.Create;
  try
    with List do
    begin
      if FileExists(FName) then
        LoadFromFile(FName);
      Add('[' + DateToStr(Now) + ' / ' + TimeToStr(Now) + ']' + ' ' + E.Message);
      SaveToFile(FName);
    end;
  finally
    FreeAndNil(List);
    Application.ShowException(E);
    Application.Terminate;
  end;
end;
Wichtig: die Parameter müssen so bleiben!

Dann weist du deine Prozedur dem OnException-Ereignis zu:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnException := AppException;
end;
Und schon fertig :wink:

Mfg

Die Muhkuh 21. Apr 2008 17:09

Re: Exceptions speichern
 
Autsch, warum Terminieren nach der Exception?

shmia 21. Apr 2008 17:10

Re: Exceptions speichern
 
Zitat:

Zitat von Tommy1988
Naja, so gesehen möchte ich nur erreichen , dass ich zum schluss weis "wie man sowas macht"..

Exception Tutorial

DeddyH 21. Apr 2008 17:11

Re: Exceptions speichern
 
Zitat:

Zitat von Die Muhkuh
Autsch, warum Terminieren nach der Exception?

Machst Du das nicht? :stupid:

sirius 21. Apr 2008 17:15

Re: Exceptions speichern
 
@Fusballrowdy:
-Zur Vereinfachung gibt es noch TApplicationEvents, da kann man das einfach anklicken
-Was passiert mit Exceptions, welche direkt in der Funktion abgefangen werden (try..except..end) ?
-Wieso Terminate wurde ja schon gefragt.

Die Muhkuh 21. Apr 2008 17:15

Re: Exceptions speichern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von DeddyH
Zitat:

Zitat von Die Muhkuh
Autsch, warum Terminieren nach der Exception?

Machst Du das nicht? :stupid:

Nein, ich hab nen kleinen Dialog, da kann der Benutzer entscheiden, ob er das Programm weiterlaufen lässt, neustartet oder terminiert. ;)

DeddyH 21. Apr 2008 17:19

Re: Exceptions speichern
 
Den kenn ich schon :zwinker:

Tommy1988 21. Apr 2008 17:21

Re: Exceptions speichern
 
Mh, ich erkläre mal schematisch was ich gemacht hatte:

stringlist erstellen
absichtlich einen fehler machen (double-wert einer integer-variablen zuweisen)
=> fehler kommt
=> => on ex: Exception do
ShowMessage('Exception detected:' +#13+
ex.message);
text := ex.Message; // hier war spätestens der fehler.

ich werde mir das tutorial mal verinnerlichen =)

Fussball-Robby 21. Apr 2008 17:25

Re: Exceptions speichern
 
Zitat:

Zitat von sirius
Fusballrowdy

:warn: :mrgreen:
Terminate ist Quatsch, ja. Ich hab das vor einem halben Jahr oder so das letzte mal benutzt und jetzt nur ausm Kopf runtergetippt. Sorry :?

Tommy1988 21. Apr 2008 17:56

Re: Exceptions speichern
 
Das mit dem Terminate ist ja aber schon seltsam .. egal.

Ich habs weggenommen.

Merci, ich verstehe diese ganze Sache jetzt .


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz