AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ein Paar Exception-Fragen

Ein Thema von theomega · begonnen am 9. Mär 2003 · letzter Beitrag vom 10. Mär 2003
Antwort Antwort
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#1

Ein Paar Exception-Fragen

  Alt 9. Mär 2003, 12:12
Hallo Leute
ich habe ein Paar Fragen zu Exceptions:

1. Ich will sämtliche Exceptions, die in meinem Programm auftretten in einem Memo untereinander mitloggen, damit also eine Log-Datei über Fehler entsteht. Dass soll für sämtliche Dateien und alle Kompos gelten

2. Ich möchte, dass bestimmte Exception nirgendwo in meinem Programm, dass Programm zum anhalten bewegen, zu Beispiel soll ein EConverterror einfach übergangen werden.

Wer hat da eine Lösung?

Grüße
TO
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#2
  Alt 9. Mär 2003, 14:18
Hallo,

zu 1)
das ist einfach, Du must nur Deinen eigenen Exception-Handler basteln, am Besten im Hauptformular (er gilt applikationsweit):

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    procedure MyExceptionHandler(Sender: TObject; E: Exception);
  public
    { Public declarations }
  end;

....
procedure // Zuweisung auf Deinen eigenen Handler
  TForm1.FormCreate(Sender: TObject);
begin
  Application.OnException := MyExceptionHandler;
end;

....
procedure TForm1.MyExceptionHandler(Sender: TObject; E: Exception);
var
  ErrFileName, ErrMsg: String;
  LOG_FILE: TextFile;
begin
  ErrFileName := ChangeFileExt(Application.ExeName, '.LOG');
    ErrMsg := Format('%s : %s - %s'#13#10, [DateTimeToStr(Now), E.ClassName, E.Message]);
    Memo1.Lines.Add(ErrMsg); // ups Memo, hätte ich fast vergessen!
    AssignFile(LOG_FILE, ErrFileName);
    Append(LOG_FILE);
    Writeln(LOG_FILE, ErrMsg);
    Flush(LOG_FILE); // Sicherstellen, daß der Text tatsächlich in die Datei geschrieben wird.
    CloseFile(LOG_FILE);
  end;
  Application.ShowException(E);
end;
zu 2)
tut mir leid, aber ich verstehe nicht was Du genau willst.
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#3
  Alt 9. Mär 2003, 18:39
oki, danke 1. wäre gelöst
zu 2.:

Ich habe eine function, in der unter anderem ein float in einen String konvertiert wird. Manchmal tritt dort ein EConVertError auf. Dann wird die function abgebrochen. Das dumme ist, das mein Programm darauf bassiert, dass diese Funktion abgeschlossen wird. Das ist nicht nur bei dieser function so, sondern in noch ein Paar anderen. Ich würde jetzt gerne Einstellen, dass in meinem ganzen Programm keine EConvertErrors mehr ausgegeben werden und dass diese mein Programm auch nichtmehr anhalten.

Grüße

TO
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4
  Alt 9. Mär 2003, 18:48
Wie soll das gehen?

Wenn deine Funktion fehlschlägt und was falsches liefert, wie soll denn der Rest funktionieren?

Beispiel: Add ist eine Funktion, die die Summe zweier Zahlen liefert. Un sie aus einem Edit liest. In der Funktion wird die Eingabe mit StrToInt entsprechen umgewandelt.
Delphi-Quellcode:
var
  erg: Integer;
begin
  erg := Add div Add;
So, wenn jetzt die Konvertierung fehlschlägt, wie soll es dann weitergehen? Auch wenn du die Funktion zwinge kannst das Programm nicht abstürzen zu lassen, in der Zeile wo sthet Add div Add kracht es ja dann wieder.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#5
  Alt 10. Mär 2003, 12:15
eine Null soll zurückgegeben werden.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6
  Alt 10. Mär 2003, 12:20
Na dann gib doch im except-Abschnitt des try-except-Blockes 0 zurück. Wo ist das Problem?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#7
  Alt 10. Mär 2003, 12:29
das das für das ganze Programm gelten soll, nicht nur in der einen Funktion.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz