Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Exception Messagebox unterdrücken (https://www.delphipraxis.net/28904-exception-messagebox-unterdruecken.html)

MrZweig 8. Sep 2004 19:32

Re: Exception Messagebox unterdrücken
 
Da muss ich doch nochmal einhaken.

Die Meldung "Connection Closed Gracefully" kommt leider weiterhin - trotz
das ich den Schalter deaktiviert habe, neu compiled, und als .exe gestartet.

Soll ich vielleicht in den INDY exceptions etwas aendern
damit es unterdrueckt wird?

Gruss,
der Zweig

Matze 8. Sep 2004 19:34

Re: Exception Messagebox unterdrücken
 
Ich würde solche "richtigen" Exceptions nicht einfach abfangen, das muss doch einen Grund haben, wieso die Meldung kommt.

Du solltest lieber danach schauen, wie du den Fehler behebst und nicht einfach den Fehler ignorieren. ;)

Treffnix 8. Sep 2004 19:39

Re: Exception Messagebox unterdrücken
 
Soweit ich weiss ist "Connection closed gracefully" kein wirklicher Fehler sondern bedeutet, dass alle geklappt hat. Die Indys benutzen die Exceptions scheinbar gerne als Statusmeldung.

MrZweig 8. Sep 2004 20:09

Re: Exception Messagebox unterdrücken
 
Richtig. Diese spezielle Indy-Exception steht in den Debug-Optionen
auch mit einem Haeckchen davor - naemlich das Delphi die Grafecul-
Exception ignorieren soll.

Allerdings kommt eben trotzdem die Messagebox - und diese will ich
schlich unterdruecken. Habe auch ein Try.. except Block drumherum
welcher durchlaufen wird.. aber die Box kommt trotzdem (das Programm
laeuft ja normal im Hintergrund weiter..)

Bin da wirklich am Ende mit meinem Delphianisch

Gruss,
der Zweig

Aenogym 8. Sep 2004 20:27

Re: Exception Messagebox unterdrücken
 
hi,

such doch in den indy-source-files nach dem string "connection cloced gracefully" (suchen > suchen in dateien). dsort einfach auskommentieren ;)

Aenogym

Luckie 9. Sep 2004 21:34

Re: Exception Messagebox unterdrücken
 
Und das ist genau das Schlimmste, was er machen kann. Mit der Forensuche hätte man erstens einen Beitrag gefunden, wie man diese Exception deaktiviert und einen Beitrag von hagen, warum diese Exception eigentlich keine ist, aber denn noch vom Indy Team geworfen wird.

Lord Dave 9. Sep 2004 21:38

Re: Exception Messagebox unterdrücken
 
Hi,

soweit ich das noch in Erinnerung habe ist die "Connection closed gracefully" nur bei Servern keine Fehlermeldung, bei Clients jedoch schon... oder irre ich mich da? :wiejetzt:

negaH 9. Sep 2004 23:33

Re: Exception Messagebox unterdrücken
 
ist eine Exception ein Fehler ?
Übersetze mal 1 zu 1 das Wort Exception, dann dürfte klar sein das man auch andere Ausnahmebedingungen mit Exceptions abhandeln kann. Genau dies machten die Indy Coder.

EAbort ist ja auch kein Fehler sondern eine Ausnahme.


EConnectionClosedGraceFully: wie soll eine TCP/IP Verbindung sauber getrennt werden ? Egal ob zuerst der Server oder der Client die Verbindung kappt, es entsteht immer diese Ausnahme. Somit eben kein Fehler sondern eine Ausnahme die im Normalfalle, egal ob Client oder Server eine Endlosschleife im Source beenden sollte. Dies vereinfacht die Programmierung der TCP Server/Clients erheblich.

Gruß Hagen

PS: Foremmaster ihr solltet mal den Tooltipp für Exception überprüfen ;)

MagicAndre1981 26. Sep 2004 13:39

Re: Exception Messagebox unterdrücken
 
Hi,
in meinem Datenbankprojekt nutze ich die Komponente TApplicationEvents. Dort gibt es das Ereignis "OnExeption". Dort habe ich Fehler vom Interbase abgefangen und nur die anderen Exceptions werden angezeigt.


IBError := E is EIBError;

if not IBError Then
Application.ShowException(E);


Vielleicht hilf das dir bei deinem Problem.

André

negaH 26. Sep 2004 14:25

Re: Exception Messagebox unterdrücken
 
Das hilft nicht wirklich weiter, da damit nur die Anzeige das eine Exception eingetreten ist unterdrückbar ist. Mit dieser Methode kann man also nicht ganz gezielt den Programablauf beeinflussen.

Im Grunde ist es doch absolut easy, die einzenlnen TCP/IP Client->Server arbeiten fast immer nach dem gleichen Schemata:

1.) Client verbindet mit Server
2.) Client TCP/IP Procedure ist fast immer eine Schleife bzw. linear sequentiell aufgebaut
3.) Server spaltet eigenen Thread pro verbundenen Clienten ab, dessen Thread Funktion ist immer eine Schleife
4.) Client und Server kapseln ihren TCP/IP Code immer in try except end Blöcken.
5.) Client sollte sich regulär beim Server per Kommando abmelden
6.) aus Clientside wird damit zwangsläufig immer eine Exception ausgelösst da es der Server ist der die Verbindung aktiv trennt.

So, auf beiden Seiten wird also die komplette Schleife in einem try except Block gekapselt. Das wars dann schon, denn in dem lokalen Exception Handler kann man nun ganz gezielt EConnectionCloseGraceFully abfangen.

In meinen TCP/IP Servern stelle ich zusätzlich aber noch sicher das der Client sich immer beim Server über ein Kommando abmeldet. Der Server beendet also seinen ClientThread nach dem Empfang dieses Commandos und auf Client-Seite wird damit zwangsläufig immer diese Exeption ausgelösst und die Clientprocedure verlassen.
Da der Server eine gemeinsam genutzte Resource imWEB darstellt ist es besser immer im konzeptionellen davon auszugehen das der Server so wenig wie möglich durch einen Clienten belastet wird. Demzufolge sollte es der Server sein der die Verbingungen zu seinen Clients aktiv trennt.

Gruß hagen


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:51 Uhr.
Seite 2 von 2     12   

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