简单问题:如何在使用TFileStream读取文件的时候获得文件大小?(50分)

  • 主题发起人 叮叮当当
  • 开始时间

叮叮当当

Unregistered / Unconfirmed
GUEST, unregistred user!



我知道如果是定义File类型的变量可以在打开文件后用FileSize()获取文件大小,这里问的是用TFileStream操作文件时的方法。
 
procedure TForm1.Button1Click(Sender: TObject);
var
f:TFileStream;
begin
f:=TFileStream.Create('d:temp.txt',fmOpenRead );
showmessage(inttostr(f.size));
f.free;
end;
 
另法:
FStream.Seek(0, soFromEnd);
ShowMessage(IntToStr(FStream.Position));
 
其实我也尝试过TFileStream.Size来获取TFileStream打开的文件的大小的,方法同jsxjd,但是我是设置了断点运行停下来后把鼠标移到F.Size上查看的,结果显示为0,所以我才有这一问,看到jsxjd的回答我又试了一下,结果在程序中用ShowMessage(IntToStr(F.Size))倒是可以正确地显示文件大小,真奇怪Delphi的调试环境怎么会有这样的问题。beta兄的方法也不错,后来我又按住Ctrl单击程序中的“Size”跳到TFileStream对Size属性的实现,发现其实该属性本质上就是用beta兄的方法获取文件大小的,哈。
function TStream.GetSize: Int64;
var
Pos: Int64;
begin
Pos := Seek(0, soCurrent);
Result := Seek(0, soEnd);
Seek(Pos, soBeginning);
end;
 
顶部