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:
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;
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?
Bis dann,
S - tefano