全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3250
推到 Plurk!
推到 Facebook!

問一下TIdTelnet的指令及Delphi的語法

答題得分者是:Mickey
sherlockyun
一般會員


發表:3
回覆:7
積分:2
註冊:2004-10-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-12-05 13:47:15 IP:61.219.xxx.xxx 訂閱
1.TIdTelnetCommand = (tncNoLocalEcho, tncLocalEcho, tncEcho);
請問有人知道這樣的寫法的意義嗎?
若要使用這樣的變數, 要如何施行?
2.請問是否在使用TIDTelnet元件時, 有什麼方法可以判斷Server端的資料已輸出完成
我有利用回傳值是提示詞(如$, :, >, ..等)來判斷, 但無法很穩定的執行, 大約過一段時
間後, 就會判別錯誤,

有懂的人, 請不吝賜教
g9221712
高階會員


發表:145
回覆:344
積分:162
註冊:2006-07-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-01-03 19:54:34 IP:220.134.xxx.xxx 訂閱
http://www.indyproject.org/Sockets/Demos/index.en.aspx
你參考一下範例!應該對你有幫助!
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」
程式寫的越久,卻發現自己越來越不會寫程式!
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-01-15 14:53:37 IP:61.219.xxx.xxx 訂閱

參考看看
1. 增加變數宣告
public
{ Public declarations }
TelnetWorking : boolean;
2. IdTelnet.OnDataAvailable 程式
procedure TFmTelnet.IdTelnet1DataAvailable(Sender: TIdTelnet;
const Buffer: String);
const
EndCR:array[0..1] of string = (':'#32 , '$'#32); // Command Completed Identifier
var
i : Integer;
begin
for i := Low(EndCR) to High(EndCR) do
if (Copy(Buffer,length(Buffer)-Length(EndCR[i]) 1 , Length(EndCR[i])) = EndCR[i]) then
TelnetWorking := False;
end;
3. 執行 Command
TelnetWorking := True;
Cmd := 'ls';
for j := 1 to Length(Cmd) do IdTelnet1.SendCh(Cmd[j]);
IdTelnet1.SendCh(#13);
st := GetTickCount;
repeat
Application.HandleMessage;
until (not TelnetWorking) or ((GetTickCount - st)>(5000)); // 5 Second Timeout


系統時間:2024-05-01 12:28:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!