其实我也尝试过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;