![]() |
Phänomen bei Telnet-Client: Writeln geht nicht...
Hallo und guten Abend Smile
Zunächst, ich habe das Problem zwar bereits umgangen, finde die Lösung aber nicht schön: Ich versuche mit einer TIDTelnet eine Verbindung zu einem Telnet-Server aufzubauen ein (oder mehrere) Kommandos zu übermitteln und mich dann wieder zu trenne. Das ganze wird hier zunächst über einen Button gestartet:
Delphi-Quellcode:
Soweit zu meiner Lösung, denn dieser Code funktioniert.
procedure TForm1.IdTelnet1DataAvailable(Sender: TIdTelnet;
const Buffer: String); procedure sendData(Data: String; CR: Boolean); var I: Byte; begin for I:=1 to Length(Data) do begin IdTelnet1.SendCh(Data[i]); sleep(10); end; if CR then IdTelnet1.SendCh(#13); end; begin if (Pos('IPS1>',Buffer) > 0) then SendData('A', true) else if (Pos('Password:',Buffer) > 0) then SendData('', true) else if (Pos('Username:',Buffer) > 0) then SendData('admin', true); Memo1.Lines.Add(Buffer); end; procedure TForm1.Button1Click(Sender: TObject); begin IdTelnet1.Host:='192.168.2.103'; IdTelnet1.Connect; end; Mein erste Versuch mit Writeln() schlug aber fehl. Und ich weiß nicht warum. Ich musste dieses Writeln() durch die Procedure sendData(Data: String; CR: Boolean); ersetzen, in der ich jedes Zeichen einzeln übermittle und ggf die "Zeile" mit einem CR abschließe. Dies macht doch aber Writeln im Prinzip auch, oder? Warum aber geht dann folgender Code nicht?
Delphi-Quellcode:
BTW: Mich würde auch interessieren, ob es eine schönere Methode gibt, auf die Frage des Servers die entsprechende Antwort zu geben, als den gesendeten String zu untersuchen. Denn Diese Methode funktioniert nur bei EINEM speziellen Server und nur bei einer Version (Da sich ggf der Text ändern kann).)
procedure TForm1.IdTelnet1DataAvailable(Sender: TIdTelnet;
const Buffer: String); begin if (Pos('IPS1>',Buffer) > 0) then IdTelnet1.writeln('A') else if (Pos('Password:',Buffer) > 0) then IdTelnet1.writeln('') else if (Pos('Username:',Buffer) > 0) then IdTelnet1.writeln('admin'); Memo1.Lines.Add(Buffer); end; procedure TForm1.Button1Click(Sender: TObject); begin IdTelnet1.Host:='192.168.2.103'; IdTelnet1.Connect; end; Merci für eure Mühen :lol: Oliver (Und ich bitte um Entschuldigung, da ich warscheinlich gegen mindestens hundert Foren-Regeln verstoßen habe. Gestern schrieb ich den gleichen Artikel, habe diesen aber völlig falsch abgelegt. Bis jetzt hab eich nicht verstanden, wie ich diesen verschieben kann, sorry). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:39 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