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

請問如何改變檔案的大小

答題得分者是:dllee
jessechan
版主


發表:109
回覆:394
積分:254
註冊:2002-04-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-11-26 12:17:08 IP:61.31.xxx.xxx 訂閱
如題, 要加長的話直接用 FileWrite 就可以了, 但是如果要減少長度好像不知要怎辦.
------
Jesse Chan
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-11-26 13:06:53 IP:220.134.xxx.xxx 訂閱
用 TFileStream 開檔,設 Size 即可。

以下是以前寫 GigaTailDelete 的程式片斷:

[code cpp]
// GigaTailDelete <2003-05-06>
// 用來刪除 giga 網站加料的檔案。
//----------------------------------------------------------------------------//
int __fastcall TForm1::FindTailPattern(AnsiString asFile,AnsiString asPattern,int iMoreByte,bool DeleteIt)
{
TFileStream *stm=NULL;
int iFoundLen=0;
int iLen=asPattern.Length();
if (FileExists(asFile))
{
try{
if(DeleteIt)
stm=new TFileStream(asFile,fmOpenReadWrite);
else
stm=new TFileStream(asFile,fmOpenRead | fmShareDenyNone );
}catch(...){
goto __return_FindTailPattern;
}
if(stm->Size<(iLen iMoreByte))
goto __return_FindTailPattern;

if(stm->Size<(iLen 3)) // 可能會有 0x0A 0x0D 0x00
goto __return_FindTailPattern;

char buf[MAX_TAIL_SIZE 1];
for(int iOffset=0;iOffset<3;iOffset ) // 多找找後面幾個
{
stm->Seek(-iLen-iOffset,soFromEnd);
stm->ReadBuffer(buf,iLen);
buf[iLen]='\0';
if(StrComp(buf,asPattern.c_str())==0) // FOUND
{
iFoundLen=iLen iOffset;
if(DeleteIt)
stm->Size=stm->Size-iLen-iMoreByte-iOffset;

break;
}
}
}

__return_FindTailPattern:
if(stm!=NULL)
delete stm;
return iFoundLen;
}
//----------------------------------------------------------------------------//
[/code]


VMASK - ViewMove Automation Software KernelVMIO-Server/SECS/GEMdllee's blogdllee's StatPlus
------
http://www.ViewMove.com
編輯記錄
dllee 重新編輯於 2007-11-26 13:10:30, 註解 加上程式片斷‧
jessechan
版主


發表:109
回覆:394
積分:254
註冊:2002-04-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-11-26 18:10:00 IP:61.31.xxx.xxx 訂閱
謝謝.
------
Jesse Chan
系統時間:2024-05-08 3:20:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!