一个简单的问题。(50分)

  • 主题发起人 主题发起人 阿蛮
  • 开始时间 开始时间

阿蛮

Unregistered / Unconfirmed
GUEST, unregistred user!
我想得到EXPLORER.EXE的大小,用Reset被告之文件已被打开。
如果不能用这种方法得到文件的大小,那还有什么方法可以
得到呢?
 
你没说用的什么方法?试试下面

var
f: file of Byte;
size : Longint;
S: string;
begin
AssignFile(f, 'c:/windows/explorer.exe');
Reset(f);
size := FileSize(f);
S := 'File size in bytes: ' + IntToStr(size);
end;
 
我就是用这个方法,但却被提示文件已被打开。不信你试试。
 
给你一个小函数,OK。
function DGetFileSize(FullFileName: string): LongWord;
var
h: Longword;
begin
h := CreateFile(PChar(FullfileName), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
Result := GetFileSize(h, nil);
end;
 
可以使用GetFileSize
procedure TForm1.Button2Click(Sender: TObject);
var
hFile: Integer; // holds the file handle
size:integer;
begin

hFile:=CreateFile('d:/winnt/explorer.exe', GENERIC_READ, FILE_SHARE_READ, nil,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
size:=GetFileSize(hfile,nil);
showmessage(IntToStr(size))


end;
 
可以用FILESTREAM实现。

fm:=TFilestream.create(filename,fmopenread or fmShareDenyNone);
size:=fm.size;
fm.free;
 
多谢各位,由于答案都正确,只好都给分了。
 
后退
顶部