Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Problem mit Indy (Not Connected) (https://www.delphipraxis.net/12395-problem-mit-indy-not-connected.html)

Bubblegun 26. Nov 2003 15:25


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:
procedure TClientForm.TCPClientDisconnected(Sender: TObject);
begin
  Timer.Enabled := False;
  Messages.Lines.Add('Connection closed');
  TBConnect.Hint := 'Connect to Server';
end;
(Dies sind nur einige(Wichtige?) ausschnitte aus dem Programm)

Ich hoffe ihr könnt mir helfen denn ich bin mit meinem Latein am ende.


Mfg

Chris1986 26. Nov 2003 15:56

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:

Je länger ich mit dem Disconnect
warte desto mehr geht das Programm in den Timer desto mehr "Not Connected"
fehler werden angezeigt.
MfG
Christian

Bubblegun 26. Nov 2003 16:03

Re: Problem mit Indy (Not Connected)
 
Der Fehler tritt in beiden Fällen auf

Bubblegun 26. Nov 2003 16:04

Re: Problem mit Indy (Not Connected)
 
Zitat:

Achja, und den Satz versteh ich nicht:
Das TimeOut des timers ist bei 1000.
Wenn das Programm 3sec lauft gibt es 3 (gleiche) Fehler.
Wenn es 4sec lauft 4 usw

Chris1986 26. Nov 2003 16:20

Re: Problem mit Indy (Not Connected)
 
Hi
bau in die Prozedur die die Msg ausliest mal einen try-except Block:

Delphi-Quellcode:
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;
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.

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

Bubblegun 26. Nov 2003 16:31

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.

Chris1986 26. Nov 2003 16:45

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

Bubblegun 26. Nov 2003 16:50

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.

Chris1986 26. Nov 2003 17:08

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

Bubblegun 26. Nov 2003 17:17

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.
Seite 1 von 2  1 2      

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