Einzelnen Beitrag anzeigen

Benutzerbild von Schuster
Schuster

Registriert seit: 21. Okt 2004
Ort: Wien
176 Beiträge
 
Delphi XE7 Architect
 
#1

Errorhandling Try - Except in txt Datei speichern

  Alt 1. Dez 2004, 13:43
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
Miniaturansicht angehängter Grafiken
fehlermeldung_149.jpg  
Markus Schuster
__________________
Markus
http://members.chello.at/delphi-developer
  Mit Zitat antworten Zitat