Autor Beitrag
F.Art
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 434



BeitragVerfasst: 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



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 434



BeitragVerfasst: 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



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 434



BeitragVerfasst: 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.

ausblenden 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



BeitragVerfasst: 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.


ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 434



BeitragVerfasst: So 12.01.03 22:48 
und wie kann ich einzelne fehler raus filtern und behandeln?
Wolff68
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 302
Erhaltene Danke: 1

WinXP home
D6 Prof
BeitragVerfasst: 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.
ausblenden 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 434



BeitragVerfasst: So 12.01.03 23:52 
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 302
Erhaltene Danke: 1

WinXP home
D6 Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 434



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 434



BeitragVerfasst: Di 14.01.03 22:55 
Habe ne Lösung

ausblenden Quelltext
1:
if pos(uppercase('Incorrect authentication data'),uppercase(E.Message)) = 0  then else ShowMessage('Fehler');					
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Di 14.01.03 23:33 
F.Art hat folgendes geschrieben:
ausblenden Quelltext
1:
if pos(uppercase('Incorrect authentication data'),uppercase(E.Message)) = 0  then else ShowMessage('Fehler');					


Eigentlich kannst du dir das Pos sparen. Das Brauchst du nur wenn du erwartest, daß die eine Fehlermeldung nur ein Teil der anderen ist.

Das was oben steht kann man auch als

ausblenden Quelltext
1:
if uppercase('Incorrect authentication data') = uppercase(E.Message)) then ShowMessage('Fehler');					


schreiben. Oder so:

ausblenden Quelltext
1:
if CompareText('Incorrect authentication data', E.Message) <> 0 then ShowMessage('Fehler');					


Wenn es so bleiben soll wie du es stehen hast (mit Pos), dann würde ich es so machen:

ausblenden Quelltext
1:
if pos(uppercase('Incorrect authentication data'),uppercase(E.Message)) > 0  then ShowMessage('Fehler');					


Zuletzt bearbeitet von Popov am Di 14.01.03 23:38, insgesamt 1-mal bearbeitet
F.Art Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 434



BeitragVerfasst: Di 14.01.03 23:37 
das ist es ja die fehlermeldung macht immer ein komisches zeichen dabei was man nicht übernehmen kann