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

有關TMemoryStream的操作方法

答題得分者是:justdo
jonesyeah
一般會員


發表:6
回覆:5
積分:2
註冊:2004-10-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-29 04:42:06 IP:203.73.xxx.xxx 未訂閱
我寫了一個測試的程式,因為不大熟操作方法,所以有些錯誤。請幫忙改正一下 感謝~~ int a=10; TMemoryStream *ms=new TMemoryStream; ms->Position=0; //這一行是必要的嗎? ms->Write(IntToStr(a).c_str(),IntToStr(a).Length()); //有把int轉成 void *更好的方法嗎? //如果我要轉的是一整個class,可以嗎? ms->SaveToFile("1.txt"); //此時1.txt裡應該是10 ms->LoadFromFile("1.txt"); ms->Read(&a,1); //這裡有錯,不會用read.. //我想把讀到的東西丟進a裡面 //這函式跟readbuffer有差別嗎? //如果是整個class那又該怎麼作? a=a-48; //char轉為int Edit1->Text=a; //輸出
justdo
高階會員


發表:2
回覆:359
積分:222
註冊:2004-08-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-29 08:47:31 IP:221.169.xxx.xxx 未訂閱
int a=50;
TMemoryStream *ms=new TMemoryStream;
ms->Position=0;
ms->Write(&a,sizeof(a)); //用&取得變數a的位址
ms->SaveToFile("1.txt");
ms->LoadFromFile("1.txt");
ms->Read(&a,sizeof(a)); //第二個參數為變數a的大小
a=a-48;
Edit1->Text=a;
當你原先用IntToStr(a)的時候,會將整數10轉換成字串"10" 在寫回來的時候還需要進行將字串轉回數字 然而這時候無法知道字串的長度,顯然要讀取原先的資料回來有其困難 再加上Write可以處理整數,這樣轉換實在是多此一舉 另外,我查了source code, WriteBuffer會轉呼叫Write 所以兩個使用上應該是沒有差別... 但Write既然為virtual函式, 理論上使用者應該是呼叫WriteBuffer即可 不過呼叫Write也不會有任何問題
jonesyeah
一般會員


發表:6
回覆:5
積分:2
註冊:2004-10-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-29 15:04:31 IP:203.73.xxx.xxx 未訂閱
引言:
int a=50;
TMemoryStream *ms=new TMemoryStream;
ms->Position=0;
ms->Write(&a,sizeof(a)); //用&取得變數a的位址
ms->SaveToFile("1.txt");
a=1;    ms->LoadFromFile("1.txt");
ms->Read(&a,sizeof(a)); //第二個參數為變數a的大小
//a=a-48;
Edit1->Text=a;
當你原先用IntToStr(a)的時候,會將整數10轉換成字串"10" 在寫回來的時候還需要進行將字串轉回數字 然而這時候無法知道字串的長度,顯然要讀取原先的資料回來有其困難 再加上Write可以處理整數,這樣轉換實在是多此一舉 另外,我查了source code, WriteBuffer會轉呼叫Write 所以兩個使用上應該是沒有差別... 但Write既然為virtual函式, 理論上使用者應該是呼叫WriteBuffer即可 不過呼叫Write也不會有任何問題
嗯嗯..大概瞭解用法了,可是我將上述的程式碼其中一行加入a=1; 然後再把a寫入檔案裡的值,可是之後的Edit1->Text還是等於1, 沒有被寫進檔案裡的值耶.
justdo
高階會員


發表:2
回覆:359
積分:222
註冊:2004-08-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-11-29 19:29:13 IP:221.169.xxx.xxx 未訂閱
對不起.. 做完 SaveToFile 之後要重設位置 ms->SaveToFile("1.txt"); ms->Position=0;
jonesyeah
一般會員


發表:6
回覆:5
積分:2
註冊:2004-10-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-11-29 19:31:47 IP:203.73.xxx.xxx 未訂閱
引言: 對不起.. 做完 SaveToFile 之後要重設位置 ms->SaveToFile("1.txt"); ms->Position=0;
喔喔~~原來如此...感謝... 大感謝~~
系統時間:2024-06-27 4:24:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!