ich möchte in meinem Programm eine Telnetveribndung aufbauen. Hierfür nutze ich die Komponente TIdTelnet und implementiere die Methode für OnDataAvailable:
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
begin
IdTelnet1.Host := 'localhost';
IdTelnet1.Port := 23;
IdTelnet1.Connect;
end;
procedure TForm1.IdTelnet1DataAvailable(Sender: TIdTelnet; const Buffer: String);
begin
ShowMessage(Buffer);
end;
Zum Senden habe ich folgende Methode implementiert:
Code: Alles auswählen
procedure TForm1.SendTelnetCommand(S: String);
var
I: Integer;
begin
for I := 1 to Length(S) do IdTelnet1.SendCh(S[I]);
IdTelnet1.SendCh(#13);
end;
Nun sende ich zwei Befehle, die beide eine Ausgabe liefern müssten:
Code: Alles auswählen
procedure TForm1.Button2Click(Sender: TObject);
begin
SendTelnetCommand('eins');
SendTelnetCommand('zwei');
end;
Mein erstes Problem besteht darin, dass das Ereignis OnDataAvailable nie ausgelöst wird. Offensichtlich werden die Kommandos nicht übermittelt, obwohl ich dachte, dass #13 doch eigentlich ein Kommando abschließt?
Und meine zweite Frage bezieht sich auf die Zuordnung der Antworten. Die Variable Buffer enthält ja einfach nur Text. Woher weiß ich jetzt aber, ob dieser Text zu Befehl "eins" oder zu Befhl "zwei" gehört? Möglicherweise werden gar keine zwei Ereignisse ausgelöst, sondern beide Ausgaben kommen gleich in einem Buffer. Theoretisch könnte ja sogar die Reihenfolge nicht mal stimmen...
Vielen Dank schonmal und viele Grüße