天
天邪狼
Unregistered / Unconfirmed
GUEST, unregistred user!
大家好,我有个telnet的问题,想问问大家,请知道方法的给我个意见,看我怎么弄.谢谢了
用了telnet控件,也已经登录上去了,发一条指令后,也能返回内容。关键是连续发送几条指令,返回的内容的顺序就乱了。
(1)---发送指令(指令都已经放到CheckListBox1里了,要发多条指令用for循环)
procedure TMain_Form.BitBtn_ExecClick(Sender: TObject);
var
i,j: integer;
ts: string;
begin
for i:=0 to CheckListBox1.count-1 do
begin
if CheckListBox1.Checked<>'' then
begin
ts:=CheckListBox1.Items+#13+#10;
IdTelnet1.Write(ts);
end;
end;
end;
(2)接收返回信息(IdTelnet 的 DataAvailable事件是自动接收的)
procedure TMain_Form.IdTelnet1DataAvailable(Buffer: String);
begin
Memo1.Lines.add(Buffer);
end;
如果我设断点用F7一步一步调试,所有返回内容(每条指令的返回内容,不是一次返回的,而是分几次回来)最后都能按顺序显示在memo1中;但如果直接用F9执行,在Memo1中返回的信息就会乱,有时还有的指令返回内容还不显示。
有人给我了个主意,说指令不能这样一下都发完了,要等每条指令的返回内容都回来了(虽然返回内容分几次返回,但最后会有一个标志信息是“End of Report”),再发下一条指令,我也觉得这个方法可行,但不知道怎么实现,那位高手能否帮帮我啊。
用了telnet控件,也已经登录上去了,发一条指令后,也能返回内容。关键是连续发送几条指令,返回的内容的顺序就乱了。
(1)---发送指令(指令都已经放到CheckListBox1里了,要发多条指令用for循环)
procedure TMain_Form.BitBtn_ExecClick(Sender: TObject);
var
i,j: integer;
ts: string;
begin
for i:=0 to CheckListBox1.count-1 do
begin
if CheckListBox1.Checked<>'' then
begin
ts:=CheckListBox1.Items+#13+#10;
IdTelnet1.Write(ts);
end;
end;
end;
(2)接收返回信息(IdTelnet 的 DataAvailable事件是自动接收的)
procedure TMain_Form.IdTelnet1DataAvailable(Buffer: String);
begin
Memo1.Lines.add(Buffer);
end;
如果我设断点用F7一步一步调试,所有返回内容(每条指令的返回内容,不是一次返回的,而是分几次回来)最后都能按顺序显示在memo1中;但如果直接用F9执行,在Memo1中返回的信息就会乱,有时还有的指令返回内容还不显示。
有人给我了个主意,说指令不能这样一下都发完了,要等每条指令的返回内容都回来了(虽然返回内容分几次返回,但最后会有一个标志信息是“End of Report”),再发下一条指令,我也觉得这个方法可行,但不知道怎么实现,那位高手能否帮帮我啊。