![]() |
Problem mit Indy (Not Connected)
Hi
Ich schreibe momentan an einem Chat. Mein Problem ist, dass ich einen Fehler bekomme sobald ich Disconnecte. TCPClient meldet dann "Not Connected". Je länger ich mit dem Disconnect warte desto mehr geht das Programm in den Timer desto mehr "Not Connected" fehler werden angezeigt.
Delphi-Quellcode:
procedure TClientForm.TCPClientConnected(Sender: TObject);
begin Messages.Lines.Add('Connected to '+ TCPClient.Host); TCPClient.WriteLn(ClientName); TBConnect.Down := True; TBConnect.Hint := 'Disconnect from Server'; Timer.Enabled := True; end;
Delphi-Quellcode:
procedure TClientForm.TimerTimer(Sender: TObject);
var Msg : String; begin if TCPCLient.Connected = True then begin Msg := TCPClient.ReadLn('', 5); if Msg <> '' then begin if Msg[1] <> '@' then begin Messages.Lines.Add(Msg); end; end; end; end;
Delphi-Quellcode:
(Dies sind nur einige(Wichtige?) ausschnitte aus dem Programm)
procedure TClientForm.TCPClientDisconnected(Sender: TObject);
begin Timer.Enabled := False; Messages.Lines.Add('Connection closed'); TBConnect.Hint := 'Connect to Server'; end; Ich hoffe ihr könnt mir helfen denn ich bin mit meinem Latein am ende. Mfg |
Re: Problem mit Indy (Not Connected)
Hi
Tritt das Problem auf, wenn du die Anwendung aus Delphi heraus startest, oder auch wenn du die *.exe normal unter Windows ausführst? Wie disconnectest du denn? Achja, und den Satz versteh ich nicht: Zitat:
Christian |
Re: Problem mit Indy (Not Connected)
Der Fehler tritt in beiden Fällen auf
|
Re: Problem mit Indy (Not Connected)
Zitat:
Wenn das Programm 3sec lauft gibt es 3 (gleiche) Fehler. Wenn es 4sec lauft 4 usw |
Re: Problem mit Indy (Not Connected)
Hi
bau in die Prozedur die die Msg ausliest mal einen try-except Block:
Delphi-Quellcode:
Den Code hab ich ohne zu testen umgebaut. Kann sein das das E in der Showmessage nicht funktioniert. Wenns nicht geht schmeißt du es einfach raus.
procedure TClientForm.TimerTimer(Sender: TObject);
var Msg : String; begin if TCPCLient.Connected = True then begin try Msg := TCPClient.ReadLn('', 5); if (Msg <> '') and (Msg[1] <> '@') then Messages.Lines.Add(Msg); except showmessage ('Fehler beim lesen der Msg' + E); end; end; end; Starte dann die exe unter Windows nicht unter Delphi. Kommt dann die Fehlermeldung, dann ist der Timer nach dem disconnect noch aktiv. Es ist aber eh sinnvoller den Timer schon im button-Klick auf active= false zu setzen. probiers einfach mal aus. MfG Christian |
Re: Problem mit Indy (Not Connected)
I.
mit einem try except block habe ich es auch schon ausprobiert. leider ist das ergebnis das gleiche. egal ob ich das programm in delphi oder in windows starte. II. Der Timer wird deaktiviert. Ich habe es per Step-by-Step geprüft III. der fehler tritt auch auf wenn ich den timer in der button-disconnect prozedur deaktiviere. |
Re: Problem mit Indy (Not Connected)
Hi
Kannst du Server und CLient mal hochladen? Wenn du alles mit try-except unterdrückst würde kein Fehler kommen, wenn du das prog unter Windows startest. MfG Christian |
Re: Problem mit Indy (Not Connected)
Liste der Anhänge anzeigen (Anzahl: 4)
Also ich habe mal den Client & die Source vom Client hochgeladen.
Der Server ist momentan noch keine eigenentwicklung sondern der Server von der Chat Demo der Indy Komponenten. |
Re: Problem mit Indy (Not Connected)
Hm, also einen Fehler hab ich nicht gefunden. Schreib aber das Timer.Active := false unbedingt in den Disconnect-Button.
Wie hast du denn das Intervall eingestellt? Das sollte so ungefähr bei 500ms sein. Achja, nochwas. Der Indy-Demo Chat ist relativ schlecht. Wenn du eine gute Demo haben willst dann guck dir mal die DEMO idTCPDemo von den Indys an. Die funktioniert mit Threads und stürzt auch nicht ab, wenn du die Form auf dem Desktop bewegst. MfG Christian |
Re: Problem mit Indy (Not Connected)
Also die De-/Aktivierung habe ich mal in den Button geschrieben.
Das hat aber nicht viel geholfen. Mein Intervall ist bei 500ms. Wo bekomme ich diese Demo? In meinem Indy Ordner finde ich keine idTCPDemo. Vielen Dank für deine Hilfe! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:00 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