請教Indy如何傳送Record型態的值 |
尚未結案
|
cubi
初階會員 發表:56 回覆:94 積分:35 註冊:2002-04-15 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
cubi
初階會員 發表:56 回覆:94 積分:35 註冊:2002-04-15 發送簡訊給我 |
引言: 把 TMsg 型態成 TStream 再做傳送? --- 每個人都是一本書 感謝前輩,可是小弟試了之後出前Invalid typecast的 錯誤訊息,以下是程式碼,請教是那錯了呢 type TMyMsg = packed record v1: String; v2: String; end; procedure TForm2.BitBtn1Click(Sender: TObject); var MyMsg: TMyMsg; begin MyMsg.v1 := 'ttt'; MyMsg.v2 := Edit1.Text; IdTCPClient1.WriteStream(TStream(MyMsg)); end; |
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
大概像這樣吧:
// 將 MyMsg 載入 TMemoryStream var Stream1: TStream; sList: TStringList; MyMsg: TMsg; begin Stream1 := TMemoryStream.Create; sList := TStringList.Create; try Stream1.WriteBuffer(MyMsg, SizeOf(TMsg)); sList.Add(MyMsg.v1); sList.Add(MyMsg.v2); sList.SaveToStream(Stream1); // 接下來做傳送的動作 finally sList.Free; Stream.Free; end; end; // 從 TMemoryStream 讀出 MyMsg var ms1: TStream; sList: TStringList; MyMsg: TMsg; begin Stream1 := TMemoryStream.Create; sList := TStringList.Create; try Stream1.ReadBuffer(MyMsg, SizeOf(TMsg)); sList.LoadFromStream(Stream1); MyMsg.v1 := sList.Strings[0]; MyMsg.v2 := sList.Strings[1]; finally sList.Free; Stream.Free; end; end;另外, Delphi 本身就有 TMsg 的型態 不知道這樣會不會有問題? --- 每個人都是一本書 發表人 - hagar 於 2003/04/03 16:30:37 |
cubi
初階會員 發表:56 回覆:94 積分:35 註冊:2002-04-15 發送簡訊給我 |
引言: 大概像這樣吧:感謝前輩 試了好久,也是不行,Server端都無反應,IdTCPServer端的OnExecute都 沒觸發,好像Client的東東沒送過去,若用Writeln就很正常,但用 WriteStream(Stream1),就沒反應了,小弟再試試,有心得會再po上來 謝謝// 將 MyMsg 載入 TMemoryStream var Stream1: TStream; sList: TStringList; MyMsg: TMsg; begin Stream1 := TMemoryStream.Create; sList := TStringList.Create; try Stream1.WriteBuffer(MyMsg, SizeOf(TMsg)); sList.Add(MyMsg.v1); sList.Add(MyMsg.v2); sList.SaveToStream(Stream1); // 接下來做傳送的動作 finally sList.Free; Stream.Free; end; end; // 從 TMemoryStream 讀出 MyMsg var ms1: TStream; sList: TStringList; MyMsg: TMsg; begin Stream1 := TMemoryStream.Create; sList := TStringList.Create; try Stream1.ReadBuffer(MyMsg, SizeOf(TMsg)); sList.LoadFromStream(Stream1); MyMsg.v1 := sList.Strings[0]; MyMsg.v2 := sList.Strings[1]; finally sList.Free; Stream.Free; end; end;另外, Delphi 本身就有 TMsg 的型態 不知道這樣會不會有問題? --- 每個人都是一本書 發表人 - hagar 於 2003/04/03 16:30:37 |
Skyer
高階會員 發表:43 回覆:111 積分:120 註冊:2002-04-04 發送簡訊給我 |
去年剛好有在研究 Indy 的 HTTP 元件
把研究的研果傳上來給您看看.. 是一個小型的 Client / Server 程式,
我也有用到 record
用來當 data 的 header http://delphi.ktop.com.tw/topic.php?TOPIC_ID=28319 --
Regards,
Skyer
------
-- Regards, Skyer |
cubi
初階會員 發表:56 回覆:94 積分:35 註冊:2002-04-15 發送簡訊給我 |
引言: 去年剛好有在研究 Indy 的 HTTP 元件 把研究的研果傳上來給您看看.. 是一個小型的 Client / Server 程式, 我也有用到 record 用來當 data 的 header http://delphi.ktop.com.tw/topic.php?TOPIC_ID=28319 -- Regards, Skyer感謝前輩的分享,小弟下載研究研究,再次感謝 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |