AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Telnet + mehrzeilige Ausgabe in Memo
Thema durchsuchen
Ansicht
Themen-Optionen

Telnet + mehrzeilige Ausgabe in Memo

Ein Thema von drschubi · begonnen am 26. Jul 2006 · letzter Beitrag vom 26. Jun 2015
Thema geschlossen
drschubi

Registriert seit: 18. Dez 2003
94 Beiträge
 
#1

Telnet + mehrzeilige Ausgabe in Memo

  Alt 26. Jul 2006, 08:52
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é
 
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Telnet + mehrzeilige Ausgabe in Memo

  Alt 26. Jul 2006, 09:05
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
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
 
drschubi

Registriert seit: 18. Dez 2003
94 Beiträge
 
#3

Re: Telnet + mehrzeilige Ausgabe in Memo

  Alt 26. Jul 2006, 10:05
Hallo Benjamin,

IdTelnet1.ReadTimeout gibt es leider nicht.


Nur IdTelnet1. ReadLnTimeout und diesem kann man nichts zuweisen.

Gruß René
 
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Telnet + mehrzeilige Ausgabe in Memo

  Alt 26. Jul 2006, 10:23
Zitat von drschubi:
IdTelnet1.ReadTimeout gibt es leider nicht.
Dann musst du den Wert für Timeout der ReadLn-Funktion übergeben.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
 
drschubi

Registriert seit: 18. Dez 2003
94 Beiträge
 
#5

Re: Telnet + mehrzeilige Ausgabe in Memo

  Alt 26. Jul 2006, 10:28
aha Danke
 
jacky213

Registriert seit: 2. Mär 2011
146 Beiträge
 
#6

AW: Telnet + mehrzeilige Ausgabe in Memo

  Alt 20. Jun 2015, 03:22
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:
procedure TClient.telnetDataAvailable(Sender: TIdTelnet;
  const Buffer: TIdBytes);
begin
if Trim(BytesToString(Buffer))='then exit else
AddStatus(BytesToString(Buffer));
end;
Der übergebene Wert wird hiermit schlichtweg ins Memo geschrieben. Ich fand diesen Umweg etwas
ü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;
 
Alt 20. Jun 2015, 07:14     Erstellt von vagtler
Dieser Beitrag wurde von MrSpock gelöscht. - Grund: Keine Antwort auf die Frage.
Alt 23. Jun 2015, 03:37     Erstellt von jacky213
Dieser Beitrag wurde von MrSpock gelöscht. - Grund: Keine Antwort auf die Frage.
vagtler

Registriert seit: 9. Jul 2010
Ort: Köln
667 Beiträge
 
Delphi 2010 Professional
 
#7

AW: Telnet + mehrzeilige Ausgabe in Memo

  Alt 26. Jun 2015, 08:48
Die im Beitrag http://www.delphipraxis.net/1305843-post6.html vorgeschlagene Lösung ist durch Missachtung von Grundlagen objektorientierter Programmierung und Durchmischung mit prozeduraler Entwicklung nicht nachahmenswert.

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.

Geändert von TBx (26. Jun 2015 um 09:15 Uhr) Grund: Satz entfernt, vagtler per PN informiert
 
Thema geschlossen


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:27 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