Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Eigene Fehlermeldung ausgeben (https://www.delphipraxis.net/40688-eigene-fehlermeldung-ausgeben.html)

creeky 19. Feb 2005 13:40


Eigene Fehlermeldung ausgeben
 
Hallo,

ich versuch eine Verbindung zu einem Server aufzubauen. Ist dieser Server aber nicht erreichbar, wird automatisch eine Fehlermeldung ausgegeben. Wie kann ich nun diese "unterdrücken" und meine eigene Fehlermeldung ausgeben?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ClientSocket1.Host := '127.0.0.1';
  ClientSocket1.Port := 77;
  ClientSocket1.Active := true;
end;

alcaeus 19. Feb 2005 13:42

Re: Eigene Fehlermeldung ausgeben
 
Hallo creeky,

bei den SocketCompos gibts AFAIR ein OnError-Ereignis, in welchem du den Fehlercode abfragen und darauf reagieren kannst.

Greetz
alcaeus

Luckie 19. Feb 2005 13:43

Re: Eigene Fehlermeldung ausgeben
 
Ich nehme an, es kommt eine Exception oder? Dann:

Delphi-Quellcode:
try
  ...;
  ...;
  ...;
except
  on EIdXYZ do ShowMessage('Fehler sowieso ist aufgetreten');
end;

creeky 19. Feb 2005 13:56

Re: Eigene Fehlermeldung ausgeben
 
Vielen Dank.
Aber leider lässt sich damit die Fehlermeldung nicht unterdrücken, sodass NUR die eigene ausgegeben wird. Geht das nicht auch noch anders?

Muetze1 19. Feb 2005 14:00

Re: Eigene Fehlermeldung ausgeben
 
Moin!

Die TClientSocket und TServerSocket haben intern einen Thread und somit kommen die Exceptions eh unsynchron zum VCL Thread weshalb ein solcher Try/Except Block jeder Grundlage entbehrt.

Nutze das OnError Ereignis und zum unterdrücken der Fehlerausgabe setze die übergebene Variable ErrorCode auf 0 und gut ist. Beachte dabei aber auch, dass die Fehlermeldung weiterhin von Delphi gemeldet wird so lange du es unter der IDE startest. Wenn du es ohne IDE startest wird die Meldung nicht mehr ausgegeben.

MfG
Muetze1

Luckie 19. Feb 2005 14:01

Re: Eigene Fehlermeldung ausgeben
 
Zitat:

Zitat von creeky
Vielen Dank.
Aber leider lässt sich damit die Fehlermeldung nicht unterdrücken, sodass NUR die eigene ausgegeben wird. Geht das nicht auch noch anders?

Schon mal die Exe außerhalb der IDE gestartet?

creeky 19. Feb 2005 14:01

Re: Eigene Fehlermeldung ausgeben
 
Vielen Dank. Hat wunderbar geklappt!

Chegga 19. Feb 2005 14:02

Re: Eigene Fehlermeldung ausgeben
 
Hi,

übernehme den Code von Luckie und
schalte danach unter Tools/Debugrer-Optionen
die integrierte Fehlersuche aus.
Dadurch wird mitgeteilt, dass du deine Fehler selber abfangen willst/kannst. :zwinker:

MfG Marc

P.S.: Versuch mal die *.exe außerhalb der IDE auszuführen.

[Edit] Schon wieder zu langsam... :wall: [/Edit]

Muetze1 19. Feb 2005 16:56

Re: Eigene Fehlermeldung ausgeben
 
Moin!

Zitat:

Zitat von Chegga
übernehme den Code von Luckie und
schalte danach unter Tools/Debugrer-Optionen
die integrierte Fehlersuche aus.
Dadurch wird mitgeteilt, dass du deine Fehler selber abfangen willst/kannst. :zwinker:

Lass dir gesagt sein, das dies auch nicht ordentlich funktioniert, da dein Programm schon an einer ganz anderen Stelle ist wenn dann z.B. der TimeOut kommt das ein Host nicht aufgelöst werden kann. Da hilft dir dein ganzer Try/Except Block überhaupt nix.

Und die Einstellungen die du angesprochen hast, macht nix weiter als das die Delphi IDE nix mehr ausgibt.

MfG
Muetze1

Luckie 19. Feb 2005 16:59

Re: Eigene Fehlermeldung ausgeben
 
Wie soll das funktionieren? Aller weiterere Code hängt doch davon ab, ob eine Verbindung zustandekommt oder nicht.

alcaeus 19. Feb 2005 17:26

Re: Eigene Fehlermeldung ausgeben
 
Hallo Luckie,

AFAIK wird beim Aufbau einer Socketverbindung ein zusaetzlicher Thread erzeugt (solange das Socket Non-Blocking ist). Beim Verbinden ist dein Programm also im Leerlauf, und nachdem keine unmittelbare Exception auftritt, ist der try-except-Block nutzlos. Ein Timeout tritt z.B. erst nach 10 Sekunden auf, und nachdem das Socket Non-Blocking ist wird das onError-Ereignis gefeuert und du kannst auf den Fehler reagieren. Bei Blocking Sockets wuerde das funktionieren, ich habs aber noch nie probiert.

Greetz
alcaeus

_master_ 19. Feb 2005 17:57

Re: Eigene Fehlermeldung ausgeben
 
on error machst einfach
Delphi-Quellcode:
showmessage('fehler: '+ inttostr(errorcode));
errorcode := 0;
wenns nicht auf 0 setzt dann kommt die normale meldung wieder ..

Muetze1 19. Feb 2005 22:22

Re: Eigene Fehlermeldung ausgeben
 
Moin!

Zitat:

Zitat von Luckie
Wie soll das funktionieren? Aller weiterere Code hängt doch davon ab, ob eine Verbindung zustandekommt oder nicht.

Jo, und dafür hast du ein Ereignis - OnConnect

MfG
Muetze1


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 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