gpt4 book ai didi

delphi - FileSize 函数的问题

转载 作者:行者123 更新时间:2023-12-02 08:15:59 24 4
gpt4 key购买 nike

我正在尝试使用system.filesize函数来获取delphi中文件的大小,它对于<4GB的文件可以正常工作,但对于>4GB的文件则失败。所以我实现了自己的,将所需的文件作为文件流打开,并获取完美运行的流大小。

这是一个片段

   function GiveMeSize(PathtoFile : string): int64;
var
stream : TFileStream;
size : int64;
begin
try
stream := TFileStream.Create(PathtoFile, fmOpenReadWrite or fmShareDenyNone);
size := stream.size;
except
showmessage('Unable to get FileSize');
end
finally
stream.free;
end;

但是我上面的函数的问题是它打开的文件在处理大量文件时会产生一些开销。有没有什么函数可以在不先打开文件的情况下获取> 4GB的文件大小?我尝试过一些在线功能,但对于大于 4GB 的文件,它们往往会报告错误的文件大小。

德尔福版本:XE5

谢谢。

最佳答案

System.FileSize是一个对 Pascal File 变量进行操作的 Pascal I/O 函数。如果您想获取路径指定的文件的大小,那么使用 System.FileSize 函数根本就是错误的。

此外,您很可能不想只是为了获取其大小而打开该文件。我得到的文件大小是这样的:

function FileSize(const FileName: string): Int64;
var
AttributeData: TWin32FileAttributeData;
begin
if GetFileAttributesEx(PChar(FileName), GetFileExInfoStandard, @AttributeData) then
begin
Int64Rec(Result).Lo := AttributeData.nFileSizeLow;
Int64Rec(Result).Hi := AttributeData.nFileSizeHigh;
end
else
Result := -1;
end;

关于delphi - FileSize 函数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24929026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com