一個檔案,能只讀取其中某部份到記憶體嗎? |
答題得分者是:qoo1234
|
iamjsn
初階會員 ![]() ![]() 發表:78 回覆:95 積分:44 註冊:2002-08-16 發送簡訊給我 |
|
00156
高階會員 ![]() ![]() ![]() ![]() 發表:45 回覆:195 積分:112 註冊:2002-06-01 發送簡訊給我 |
|
qoo1234
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:256 回覆:1167 積分:659 註冊:2003-02-24 發送簡訊給我 |
|
qoo1234
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:256 回覆:1167 積分:659 註冊:2003-02-24 發送簡訊給我 |
{這是使用記憶體區塊讀寫方式.}
procedure FileCopy(const FromFile, ToFile: string);
var
FromF, ToF: file;
NumRead, NumWritten: Word;
Buf: array[1..2048] of Char;
begin
AssignFile(FromF, FromFile);
Reset(FromF, 1); { Record size = 1 }
AssignFile(ToF, ToFile); { Open output file }
Rewrite(ToF, 1); { Record size = 1 }
repeat
BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
BlockWrite(ToF, Buf, NumRead, NumWritten);
until (NumRead = 0) or (NumWritten <> NumRead);
CloseFile(FromF);
CloseFile(ToF);
end;
![]() |
solnone
中階會員 ![]() ![]() ![]() 發表:2 回覆:97 積分:69 註冊:2003-05-06 發送簡訊給我 |
建議你使用 TFileStream 來做… var
fs: TStream;
buff: array [0..65535] of Byte; // buffer
begin
fs := TFileStream.Create(filename, fmOpenRead);
try
while fs.Position < fs.Size do begin
fs.Read(buff, SizeOf(buff));
// you can send buff
end;
finally
fs.Free;
end;
end;
|
qoo1234
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:256 回覆:1167 積分:659 註冊:2003-02-24 發送簡訊給我 |
{這是使用 File stream的程序.} Procedure FileCopy( Const sourcefilename, targetfilename: String );
Var
S, T: TFileStream;
Begin
S := TFileStream.Create( sourcefilename, fmOpenRead );
try
T := TFileStream.Create( targetfilename,
fmOpenWrite or fmCreate );
try
T.CopyFrom(S, S.Size ) ;
finally
T.Free;
end;
finally
S.Free;
end;
End;
![]() |
iamjsn
初階會員 ![]() ![]() 發表:78 回覆:95 積分:44 註冊:2002-08-16 發送簡訊給我 |
|
iamjsn
初階會員 ![]() ![]() 發表:78 回覆:95 積分:44 註冊:2002-08-16 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |