Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy. ATerminator, ganzen Text empfangen (https://www.delphipraxis.net/109490-indy-aterminator-ganzen-text-empfangen.html)

Thomas83 2. Mär 2008 16:34


Indy. ATerminator, ganzen Text empfangen
 
hi,

habe mal wieder ein indy Problem. Wenn ich längeren Text sende teilt indy den text.

Wie kann ich sicher gehen das der gesamte Text ankommt?

Habe es schon so probiert
Delphi-Quellcode:
var
  fClient : TIdTCPClient;
...
...
If Length(fClient.CurrentReadBuffer)>0 then
begin
  Len := fClient.RecvBufferSize;
  lCommand.Text := fClient.ReadString(Len);
...
habe es auch schon mit einem Terminator probiert
Delphi-Quellcode:
fClient.ReadLn('#$%');
aber irgend wie funktioniert das ganze nicht so.....

Thomas83 2. Mär 2008 16:39

Re: Indy. ATerminator, ganzen Text empfangen
 
oder vielleicht doch mit Buffer arbeiten?

Thomas83 4. Mär 2008 11:50

Re: Indy. ATerminator, ganzen Text empfangen
 
kann mir da keiner einen Tipp geben?

DataCool 4. Mär 2008 14:50

Re: Indy. ATerminator, ganzen Text empfangen
 
Hi Thomas,

Du kannst bei Indy10 und glaube ich auch bei Indy9,
mit Readln + Terminator arbeiten.

Ich arbeite häufig und viel mit beiden Indy-Versionen,
habe bis jetzt nie Probleme mit ReadLn gehabt,
wie lang ist den Dein String der gesendet wird ?
Wie sieht der String aus ?
Bist Du sicher das im String kein CrLF drin ist ?

Greetz Data

Thomas83 4. Mär 2008 15:38

Re: Indy. ATerminator, ganzen Text empfangen
 
der string ist nicht gerade lang. 20-30 Zeichen.
Bin mir nich zu 100% sicher ob ein CRLF vielleicht doch drinne ist.
muss mir den String nochmal genau anschauen.....

Mit einem Terminator hat es gar nicht funktioniert.....
aber ich glaube ..... dann muss ich mir das auch noch mal anschauen.....

DataCool 4. Mär 2008 16:02

Re: Indy. ATerminator, ganzen Text empfangen
 
Hi,

in nem anderen Thread schreibst Du,
das Du eine StringList verschickst.
Wenn das der Fall ist ist hinter
jedem Eintrag der StringList ein CrLF

Greetz Data

Thomas83 4. Mär 2008 16:04

Re: Indy. ATerminator, ganzen Text empfangen
 
Hi Data,

ja das stimmt, aber ich ersetze diese durch ein anderes Zeichen.
//Edit
Delphi-Quellcode:
procedure TfrmMain.SendData(Command, Data: string);
var
  l : tstringlist;
  s : string;
begin
  l := tstringlist.Create;
  l.Add(command);
  data := StringReplace(data,#13#10,'/13/10',[rfReplaceAll]);
  l.Add(data);
  fServer.Broadcast(l.text);//+'#$A' //#§&# Terminator
  l.Free;
end;
stimmt doch nicht, sehe gerade das ich zwei listen habe :roll:
data -> stringlist.text und l.text

DataCool 4. Mär 2008 16:13

Re: Indy. ATerminator, ganzen Text empfangen
 
Hi,

mach's am besten so :

Delphi-Quellcode:
Var sToSend : String;
begin
  sToSend := StringReplace(yourStringList.CommaText,',','||');
  // ...
  yourIndyClient.WriteLn(sToSend);

end;
Greetz Data

Thomas83 4. Mär 2008 16:16

Re: Indy. ATerminator, ganzen Text empfangen
 
werde ich morgen mal ausprobieren.
thx


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:25 Uhr.

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