又是TMemoryStream的问题 |
答題得分者是:lcsboy
|
bigdogchina
版主 發表:238 回覆:523 積分:312 註冊:2003-04-28 發送簡訊給我 |
我把最近大大们有关TMemoryStream的文章都看了,我还是愚昧,不清楚,请大家指点:
1. TMemorySteam中怎么控制要写入得变量,如果是想写入的是字符而不是字节呢,因为我看了一位大大的
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(SaveDialog1->Execute())
{
TMemoryStream *msBuf = new TMemoryStream();
BYTE bBuf=0;
msBuf->Size=256;
for(int i=0; i
------
人生在勤,不索何获? |
lcsboy
版主 發表:87 回覆:622 積分:394 註冊:2002-06-18 發送簡訊給我 |
所謂師父領進門, 修行在個人. (1) 一般, 我在處理TMemoryStream都是以Byte的觀念來處理...因為可能有些東西是要一個個byte去比對或是作置換. 就像你在使用陣列時的關念是差不多的. 若是你陣列的處理一直想不通, 除了char還能不能用int, long 去處理的話, 那真的是有待加強自己指標的觀念了 ><"
一個word等於兩個byte
你可以參考以下的觀念:
TMemoryStream *msBuf = new TMemoryStream(); msBuf->Size=256; WORD wBuf=0; wBuf=(WORD *)msBuf->Memory; for(int i=0; iSize; i =2) // { msBuf->Position=i; wBuf=i; msBuf->Write(&wBuf, 2); } msBuf->SaveToFile(SaveDialog1->FileName ".dat"); delete msBuf;(2) 看不出來那裡有問題, 而且我的BCB 5.0也可以compiler pass! (3) http://delphi.ktop.com.tw/topic.php?TOPIC_ID=30852 , 看文章不要斷章取義, 請注意 神吧....所有元件的LoadFormStream和SaveToStream裡面放的就是TMemorStream, 只是裡面的data自己要處理好 概念: 你可以使用SaveToStream, 把他存到一塊memory, 至於裡面的data是什麼, 就看你要怎麼處理, 比如說bmp檔, 你可以自己scan出紅色, 把他改成綠色, 然後再LoadFromStream, 再update一次, 你就可以發現你的bmp檔偷偷的被你換掉顏色了. 若是字串, 也是差不多的原理, 只是這麼一大堆的資料, 是存放在你PC上的某一堆Memory! 我絕對不可能跟你保證任意時候你處理的TMemoryStream的第一個bytes會是0 or 0xFF. 我只能告訴你觀念. 寫程式, 不一定就是要拘泥於一種寫法....找出自己最適用的寫法是最重要. 不過偶爾聽聽別人怎麼寫也是很不錯的 發表人 - |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |