![]() |
Telnet + mehrzeilige Ausgabe in Memo
Hallo
ich benutze folgenden Code um Eingaben an Telnet zu schicken. Wenn ich eine mehrzeilige Ausgabe von Telnet habe, wie bekomme ich die ins Memo?
Delphi-Quellcode:
procedure TForm1.sndCmdClick(Sender: TObject);
var s: String; a,i: Integer; begin s := edit1.Text; for a := 1 to length(s) do begin idTelnet1.SendCh(s[a]); end; idTelnet1.SendCh(#13); for i := 1 to idtelnet1.//???Hier finde ich keine funktion Memo1.Lines.Add(IdTelnet1.ReadLn()); end; Gruß René |
Re: Telnet + mehrzeilige Ausgabe in Memo
Es sollte in etwa so funktionieren:
Delphi-Quellcode:
IdTelnet1.ReadTimeout:=1000; //generelles Timout setzen
repeat Memo1.Lines.Add(IdTelnet1.ReadLn); //lesen bis ... until IdTelnet1.ReadLnTimedOut; //... ein Timeout kam |
Re: Telnet + mehrzeilige Ausgabe in Memo
Hallo Benjamin,
Delphi-Quellcode:
gibt es leider nicht.
IdTelnet1.ReadTimeout
Nur
Delphi-Quellcode:
und diesem kann man nichts zuweisen.
IdTelnet1. ReadLnTimeout
Gruß René |
Re: Telnet + mehrzeilige Ausgabe in Memo
Zitat:
|
Re: Telnet + mehrzeilige Ausgabe in Memo
aha Danke
|
AW: Telnet + mehrzeilige Ausgabe in Memo
Ich habe es erstmal so gemacht wie von chaosben beschrieben, aber irgendwie kam da nie alles
ins memo was der Server geantwortet hat. Also hab ich das folgendermaßen gelöst: Also erstmal prüfen ob die empfangenen Daten auch wirklich was zum eintragen ins Memo enthalten. Wenn das der Fall ist, dann wird das ganze ins Memo eingetragen.
Delphi-Quellcode:
Der übergebene Wert wird hiermit schlichtweg ins Memo geschrieben. Ich fand diesen Umweg etwas
procedure TClient.telnetDataAvailable(Sender: TIdTelnet;
const Buffer: TIdBytes); begin if Trim(BytesToString(Buffer))='' then exit else AddStatus(BytesToString(Buffer)); end; übersichtlicher weil ich nicht nur die ausgabe des telnet clients ins memo schreiben wollte und so spar ich mir das wiederholen von Memo1.Lines.Add()
Delphi-Quellcode:
Procedure AddStatus (str:string);
begin frmConsole.Memo1.Lines.Add(str); end; |
AW: Telnet + mehrzeilige Ausgabe in Memo
Die im Beitrag
![]() Hier wird eine globale Prozedur aus einer Klasseninstanz aufgerufen, die wiederum Objekte einer spezifischen Klasseninstanz anspricht, die wiederum über eine benannte globale Instanzvariable angesprochen wird. Das entspricht keinen Best Practices und sollte wo immer es geht vermieden werden - das mag im konkreten Glücksfall (noch) funktionieren, fällt einem früher oder später aber auf die Füße. Es spricht absolut nichts dagegen, die AddStatus-Prozedur z.B. als Methode der Klasse zu deklarieren und z.B. über eine Singleton-Implementierung der entsprechenden Form-Klasse aus der TClient-Klasse anzusprechen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:30 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