線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1287
推到 Plurk!
推到 Facebook!

利用TFileStream讀檔 如何把前面的資料清除後存檔

尚未結案
ouwant
一般會員


發表:2
回覆:1
積分:0
註冊:2003-05-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-12 19:16:03 IP:218.167.xxx.xxx 未訂閱
我利用TFileStream開檔後 在檔頭的部分寫了一些有關檔案內容的資訊 當我處理完檔案後需要把檔頭的部分給trim掉 請問要如何實作 簡單來說 我檔案有1K的header 而這header在檔案處理完後是不需要的 請問如何把他拿掉 我是用TFileStream來實作檔案處理的 有試過再開個TFileStream 把1K後的資料copy過去在存檔 不過這樣做似乎很浪費記憶空間 是否有更好的做法 謝謝
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-13 01:31:16 IP:61.230.xxx.xxx 未訂閱
ouwant 您好:    請先參考一下這一篇,看看能不能幫上忙? 如何將資料寫入去檔頭???? http://delphi.ktop.com.tw/topic.php?topic_id=57140 7 天天敲鍵盤 v 時時按滑鼠 8
ouwant
一般會員


發表:2
回覆:1
積分:0
註冊:2003-05-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-13 13:37:32 IP:218.167.xxx.xxx 未訂閱
引言: ouwant 您好: 請先參考一下這一篇,看看能不能幫上忙? 如何將資料寫入去檔頭???? http://delphi.ktop.com.tw/topic.php?topic_id=57140 7 天天敲鍵盤 v 時時按滑鼠 8
hi, RedShow 你好 我目前想做的是把已用TFileStream開啟的檔案 去掉前面1k的資料在寫回 和這個範例所作的好像有點不太一樣 不過還是謝謝你的回應 感恩
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-13 15:03:03 IP:61.230.xxx.xxx 未訂閱
ouwant 您好:    我直覺想到的方法如下 (未做最佳化與容錯處理):
AnsiString file = "c:\\temp.dat";
TFileStream *fs = new TFileStream(file, fmOpenReadWrite);
BYTE *buf = new BYTE[fs->Size];
int cutsize = 1024;  // 此處改成您要截掉表頭大小的 Byte 數    fs->Position = cutsize;
fs->Read(buf, fs->Size - cutsize);
fs->Size = fs->Size - cutsize;
fs->Position = 0;
fs->Write(buf, fs->Size);    delete buf;
delete fs;
如果這樣子處理仍不符您所需,那麼可否請您說明一下,在截掉 1KB 的表頭資料後,您打算用何種方式做寫入的動作?如果方便的話,請將那段做寫入動作的程式碼貼上來,我看看是否能提供更為合適的方案? 7 天天敲鍵盤 v 時時按滑鼠 8
系統時間:2024-05-02 10:24:37
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!