![]() |
try ClientSocket1.active:=true führt zu fehler
Also ich führe regelmäßig folgenden Code aus:
Code:
Dies klappt für ein paar Minuten, danach kommen dann bei jedem weiteren Prozeduraufruf Fehlermeldung á la WinSocket oder so.
procedure TForm1.PingServerTimer(Sender: TObject);
begin if ClientSocket1.Active=false then begin try ClientSocket1.Open; richedit1.Lines.Add('Checking Server: '+ClientSettingsIP.edit1.text); except HandleExceptionPing; end; exit; end; if ClientSocket1.Active=true then begin panel4.Color:=clGreen; Label4.Caption:='Server Online'; end; end; Weiß jemand wieso das eine Zeit lang gut läuft und dann nicht mehr? |
Re: try ClientSocket1.active:=true führt zu fehler
Was für einen Interval hat der Timer denn?
Unter Umständen dauert das Öffnen des Sockets irgendwann länger als einen Interval, und du rufst bspw zweimal hintereinander das Open auf. Du könntest dir ne globale Variable machen. Nen Boolean, den zu z.B, "connecting" nennst. Nach dem Aufruf vom Open des Sockets setzt du connecting auf true, überprüfst aber vorher ob connecting vielleicht schon true ist. Also die Modifikation:
Delphi-Quellcode:
Naja, nur kann ich dir nicht 100%ig sagen, dass das die Fehlerquelle ist. Gibt Delphi bzw. die Exception dir genauere Informationen über den aufgetretenen Fehler?
procedure TForm1.PingServerTimer(Sender: TObject);
begin if ClientSocket1.Active=false and not connecting then begin try ClientSocket1.Open; connecting:= true; richedit1.Lines.Add('Checking Server: '+ClientSettingsIP.edit1.text); except HandleExceptionPing; end; exit; end; if ClientSocket1.Active=true then begin panel4.Color:=clGreen; connecting:= false; Label4.Caption:='Server Online'; end; end; Bis dann, S - tefano |
Re: try ClientSocket1.active:=true führt zu fehler
Hmm, das würde aber nur Sinn machen, wenn nach dem Open-Versuch dieser Versuch noch nicht beendet wird.
Wenn der Versuch doch beendet wird, würde der Client niewieder probieren die Verbindung zu öffnen, weil immernoch connecting=true ist! Aber vielleicht ist das wirklich der Grund, dass alle Versuche nie beendet werden, und irgendwann sind die Handles oder was weiß ich, was er für die Opens verwendet /aus/weg/verbraucht Hmm werde das bei Gelegenheit mal testen, aber eigentlich sollte man doch davon ausgehen können, wenn nicht connected werden kann, das der Versuch dann auch beendet ist :?: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz