請問有關TMemoryStream的問題?? |
尚未結案
|
willchen
初階會員 發表:64 回覆:81 積分:29 註冊:2003-05-23 發送簡訊給我 |
|
brook
資深會員 發表:57 回覆:323 積分:371 註冊:2002-07-12 發送簡訊給我 |
|
willchen
初階會員 發表:64 回覆:81 積分:29 註冊:2003-05-23 發送簡訊給我 |
加密後的資料還沒存入txt檔時沒問題,也就是我把加密後的資料貼在Memo或Edit然後用其資料解密都不成問題,我有現成的VCL元件可用,但是他的function是丟進AnsiString丟出AnsiString(加解密都是),照理來說,使用TStringList應該存檔後讀取沒問題,但是事實上卻並非如此,喔..有一件事必須要說的是,加密後的文字經過Base64編碼過,是不是因為如此,所以用TStringList存檔會出問題??那如果是這樣的話,那要怎麼處理這個問題??TMemoryStream我有看過站上的文章,但發現,似乎都得要知道buffer的長度才可以讀取,可是我並不知道Buffer的長度(加密後長度不一定),那要怎麼使用TMemoryStream??
|
brook
資深會員 發表:57 回覆:323 積分:371 註冊:2002-07-12 發送簡訊給我 |
1.加解密你要先測看看是否正常,先不要存到檔案中.
2.AnsiString 如何存入 TMemoryStream 如下面程式.
//存入檔案 void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString ss = "aaaaaa"; TMemoryStream *m = new TMemoryStream(); m->SetSize(ss.Length()); memcpy(m->Memory,ss.c_str(),ss.Length()); m->SaveToFile("C:\\T.TXT"); delete m; } // 從檔案讀出 void __fastcall TForm1::Button2Click(TObject *Sender) { AnsiString ss; char buf[512]; TMemoryStream *m = new TMemoryStream(); m->LoadFromFile("C:\\T.TXT"); memcpy(buf,m->Memory,m->Size); buf[m->Size] = 0x00; ss = buf; delete m; } |
willchen
初階會員 發表:64 回覆:81 積分:29 註冊:2003-05-23 發送簡訊給我 |
|
brook
資深會員 發表:57 回覆:323 積分:371 註冊:2002-07-12 發送簡訊給我 |
|
willchen
初階會員 發表:64 回覆:81 積分:29 註冊:2003-05-23 發送簡訊給我 |
|
brook
資深會員 發表:57 回覆:323 積分:371 註冊:2002-07-12 發送簡訊給我 |
引言: 可是不是要copy前先清空嗎??怎麼會在整個copy完了在最後加入0x00?? 還是我的觀念是錯誤的,雖然有點離題,但我還是希望能弄懂,謝謝這位高手的指點1.copy前先清空嗎? 要先清空也可以. 2.假如 char buf[512]="BBBBB"; m->Memory = "AAA"總共3個字元. 3.memcpy(buf,m->Memory,m->Size); 則 buf 會= "AAABB"; 4.buf[m->Size] = 0x00; 第一個B會變成 0x00,字串到此結束, buf 就= "AAA"; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |