var f: file of Byte; size : Longint; S: string; y: Integer; begin if OpenDialog1.Execute then begin AssignFile(f, OpenDialog1.FileName); Reset(f); size := FileSize(f); S := 'File size in bytes: ' + IntToStr(size); y := 10; Canvas.TextOut(5, y, S); y := y + Canvas.TextHeight(S) + 5; S := 'Seeking halfway into file...'; Canvas.TextOut(5, y, S); y := y + Canvas.TextHeight(S) + 5; Seek(f,size div 2); S := 'Position is now ' + IntToStr(FilePos(f)); Canvas.TextOut(5, y, S); CloseFile(f); end; end;
好象有一个函数可以直接获得文件大小getfilesize
function GetMyFileSize(const AFilename: string): DWORD; var HFILE: THandle; begin HFILE := CreateFile(PChar(AFilename), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if HFILE <> INVALID_HANDLE_VALUE then begin Result := GetFileSize(HFILE, nil); CloseHandle(HFILE); end else Result := 0; end;
if OpenDialog1.Execute() then begin mPath := OpenDialog1.FileName; CutiFileHandle := FileOpen(mPath, fmOpenRead); FileSize := FileSeek(CutiFileHandle,0,2); end
f: file of Byte;
size : Longint;
S: string;
y: Integer;
begin
if OpenDialog1.Execute then
begin
AssignFile(f, OpenDialog1.FileName);
Reset(f);
size := FileSize(f);
S := 'File size in bytes: ' + IntToStr(size);
y := 10;
Canvas.TextOut(5, y, S);
y := y + Canvas.TextHeight(S) + 5;
S := 'Seeking halfway into file...';
Canvas.TextOut(5, y, S); y := y + Canvas.TextHeight(S) + 5;
Seek(f,size div 2);
S := 'Position is now ' + IntToStr(FilePos(f));
Canvas.TextOut(5, y, S);
CloseFile(f);
end;
end;
var
HFILE: THandle;
begin
HFILE := CreateFile(PChar(AFilename), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if HFILE <> INVALID_HANDLE_VALUE then
begin
Result := GetFileSize(HFILE, nil);
CloseHandle(HFILE);
end
else
Result := 0;
end;
begin
mPath := OpenDialog1.FileName;
CutiFileHandle := FileOpen(mPath, fmOpenRead);
FileSize := FileSeek(CutiFileHandle,0,2);
end
Reset(f);
try
size := FileSize(f);
finally
CloseFile(f);
end;