Hier ein kleines Beispiel wie man eine Fehlermeldung in eine Textdatei speichert (z.B für Support).
Vorerst mal die Klasse: (befindet sich bei mir in eigenen
Unit --> daher immer mit einbinden)
Delphi-Quellcode:
unit Errorhandling;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ComCtrls, StdCtrls;
type Fehlerbehandlung =class(TObject)
public
Procedure Fehler(Sender: TObject; E:
Exception);
end;
implementation
Procedure Fehlerbehandlung.Fehler(Sender: TObject; E:
Exception);
var s1: TStringList;
var s:
String;
begin
s := ExtractFilePath(Application.ExeName)+ '
fehler.txt';
s1:= TStringList.Create;
try
if FileExists(s)
then s1.LoadFromFile(s);
s1.Add(FormatDateTime('
dd.mm.yyy hh.mm.ss', now));
s1.Add(E.
Message);
s1.SavetoFile(s);
finally
s1.Free;
end;
Application.ShowException(E);
end;
end.
Hier nun eine Try - Except Beispiel: (Fehler von mir Produziert in dem ich eine Falsche Datei
im LoadFromFile angebe:
Delphi-Quellcode:
procedure TForm1.TabSheet2Enter(Sender: TObject);
begin
try
CmbKdnAnlegenTitel.Items.LoadFromFile('
dat/Tite.dat');
//Orginal: Titel.dat
CmbKundenanlegenStaatsb.Items.LoadFromFile('
dat/Staatsbuergerschaft.dat');
Cmb_KAnl_Betreuer.Items.LoadFromFile('
dat\Betreuer.dat');
CmbKundenanlegenFamStand.Items.LoadFromFile('
dat\FamStand.dat');
except
on E:
Exception
do
Allg_Fehler.Fehler(Sender,e);
end;
end;
Da die Datei natürlich nicht gefunden wird erfolgt eine Fehlermeldung und gleichzeitig wird die Fehlermeldung
in einer Textdatei gespeichert diese sieht so aus:
01.12.2004 14.17.44
Datei C:\MaklerDatenbank\dat\Tite.dat kann nicht geöffnet werden. Das System kann die angegebene Datei nicht finden
Das ganze ist auch noch mit folgenden Zusatz möglich sein, das die Zeilennummer erscheint in welcher der Fehler endstanden ist.
Hier das Beispiel:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
try
i:= StrToInt(Edit1.text);
Label1.Caption:= intToStr(i*2);
except
on E:
Exception
do Assert(false,e.
Message);
end;
end;
und so sieht dann die Fehlermeldung aus:
siehe Anhang