| Autor |
Beitrag |
F.Art
      
Beiträge: 434
|
Verfasst: Sa 11.01.03 15:09
Ich habe mir mal die FAQ durchgelesen mit den Fehlern abfangen.
Ist es auch möglich das so zu machen das man das nicht mit in die Prozedur eintragen muss und er alle Fehler abfängt?
|
|
Popov
Gast
Erhaltene Danke: 1
|
Verfasst: Sa 11.01.03 15:35
Ja, global. Würde ich es aber nicht machen, da du dann nicht weißt wo der Fehler war.
|
|
F.Art 
      
Beiträge: 434
|
Verfasst: Sa 11.01.03 18:02
Das ist aber trotzdem interesant für mich.
wenn ein fehler auftritt und ne messagebox aufgeht kann man das doch gewiss auslesen lassen und eigenen text eintragen.
|
|
Popov
Gast
Erhaltene Danke: 1
|
Verfasst: Sa 11.01.03 19:30
Dann mache ich das mal aus der Hüfte, d.h. ich bin mir nicht 100% sicher ob das dieser Event ist.
Guck dir mal: TApplication.OnException
Da ist auch ein Beispiel dabei.
|
|
F.Art 
      
Beiträge: 434
|
Verfasst: So 12.01.03 22:19
ICh verstehe das Example bei Delphi 7 nicht
In addition to displaying the exception message, which happens by default, the following code shuts down the application when an exception is not caught and handled.
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| void __fastcall TForm1::FormCreate(TObject *Sender)
{ Application->OnException = AppException; }
void __fastcall TForm1::AppException(TObject *Sender, SysUtils::Exception *E)
{ Application->ShowException(E); Application->Terminate(); } |
Also ich möchte es so machen das er alle Fehler abfängt und das ich bei bestimmten eine Mesage box auf gehen lasse mit von mir eingetragenen hilfen
Klabautermann: Code-Tags hinzugefügt.
|
|
Popov
Gast
Erhaltene Danke: 1
|
Verfasst: So 12.01.03 22:39
| Zitat: | Das Ereignis OnException wird ausgelöst, wenn in der Anwendung eine Exception auftritt, der keine Behandlungsroutine zugeordnet ist.
type TExceptionEvent = procedure (Sender: TObject; E: Exception) of object;
property OnException: TExceptionEvent;
Beschreibung
Mit OnException können Sie das Standardverhalten ändern, das bei einer Exception ohne Behandlungsroutine verwendet wird. Die Ereignisbehandlungsroutine für OnException wird in der Methode HandleException automatisch aufgerufen.
Mit OnException werden nur Exceptions behandelt, die während der Bearbeitung von Botschaften auftreten. Exceptions, die vor oder nach der Ausführung von Application.Run auftreten, erzeugen keine OnException-Ereignisse.
Durchläuft eine Exception die try-Blöcke des Programms, wird automatisch die Methode HandleException aufgerufen. Außer bei der Exception EAbort ruft die Methode HandleException die Behandlungsroutine für OnException auf, falls vorhanden. Andernfalls wird ShowException aufgerufen und ein Dialogfeld mit einer Fehlermeldung angezeigt.
Der Typ TExceptionEvent ist der Typ des Ereignisses OnException. Er zeigt auf die Methode, mit der die Exceptions einer Anwendung behandelt werden. Der Parameter Sender ist das Objekt, von dem die Exception hervorgerufen wurde. E ist das Objekt für Exception. |
BEISPIEL
| Zitat: | | Im folgenden Code wird das standardmäßige Anzeigen einer Exception-Meldung dadurch ergänzt, daß die Anwendung geschlossen wird, wenn eine Exception nicht in den vorgesehenen try .. except-Blöcken abgefangen werden kann. |
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.FormCreate(Sender: TObject); begin Application.OnException := AppException;
end;
procedure TForm1.AppException(Sender: TObject; E: Exception);
begin Application.ShowException(E); Application.Terminate; end; |
|
|
F.Art 
      
Beiträge: 434
|
Verfasst: So 12.01.03 22:48
und wie kann ich einzelne fehler raus filtern und behandeln?
|
|
Wolff68
      
Beiträge: 302
Erhaltene Danke: 1
WinXP home
D6 Prof
|
Verfasst: So 12.01.03 23:16
| Delphi-Hilfe hat folgendes geschrieben: | Im folgenden Code wird das standardmäßige Anzeigen einer Exception-Meldung dadurch ergänzt, daß die Anwendung geschlossen wird, wenn eine -Exception nicht abgefangen und verarbeitet wird.
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.FormCreate(Sender: TObject); begin Application.OnException := AppException; end;
procedure TForm1.AppException(Sender: TObject; E: Exception); begin Application.ShowException(E); Application.Terminate; end; | |
Also kannst statt dessen einfach folgendes schreiben: Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.AppException(Sender: TObject; E: Exception); begin { Den Text der Fehlermeldung in Form2 schreiben } Form2.Label1.Caption := E.Message; { Und Form2 anzeigen } Form2.ShowModal; end; |
Und schon zeigst Du die Meldung in Deinem eigenen Fenster an.
Was aber schwierig bleibt ist dann auch die richtige Hilfeseite zu finden, weil Du schlecht rausbekommst WER die Exception ausgelöst hat.
_________________ "Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."
|
|
F.Art 
      
Beiträge: 434
|
Verfasst: So 12.01.03 23:52
Quelltext 1: 2: 3: 4:
| procedure TForm1.AppException(Sender: TObject; E: Exception); begin if E.Message='Incorrect authentication data' then ShowMessage('test') else ShowMessage(E.Message); end; |
was ist da falsch die message wird angezeigt aber ich will das mein text
kommt (Test)
Klabautermann: Code-Tags hinzugefügt.
|
|
Wolff68
      
Beiträge: 302
Erhaltene Danke: 1
WinXP home
D6 Prof
|
Verfasst: Mo 13.01.03 00:00
Eventuell, weil der ELSE-Teil ausgeführt wird?
Schreib dort mal was anderes rein, dann wirst sehen, welche Message angezeigt wird.
Generell ist noch folgendes Problem:
Du hast anscheinend im Moment eine Englische Version.
Wenn Du Dir später mal eine Deutsche Version kaufst (Oder vielleicht nur eine neue) sind die Texte anderst, und Du kannst von vorne anfangen.
_________________ "Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."
|
|
F.Art 
      
Beiträge: 434
|
Verfasst: Mo 13.01.03 00:07
Das geht auch nicht wirklich es wird zwar als message angegebn Test aber auch bei anderen fehlern.
gibt es schon die deutsche version?
|
|
F.Art 
      
Beiträge: 434
|
Verfasst: Di 14.01.03 22:55
Habe ne Lösung
Quelltext 1:
| if pos(uppercase('Incorrect authentication data'),uppercase(E.Message)) = 0 then else ShowMessage('Fehler'); |
|
|
Popov
Gast
Erhaltene Danke: 1
|
Verfasst: Di 14.01.03 23:33
Zuletzt bearbeitet von Popov am Di 14.01.03 23:38, insgesamt 1-mal bearbeitet
|
|
F.Art 
      
Beiträge: 434
|
Verfasst: Di 14.01.03 23:37
das ist es ja die fehlermeldung macht immer ein komisches zeichen dabei was man nicht übernehmen kann
|
|