gpt4 book ai didi

delphi - 在 Delphi 2010 或更高版本中获取文件的大小?

转载 作者:行者123 更新时间:2023-12-03 14:33:33 24 4
gpt4 key购买 nike

Delphi 2010 在 IOUtils.pas 中有一组很好的新文件访问函数(我特别喜欢与日期相关的函数的 UTC 版本)。到目前为止我想念的是这样的

TFile.GetSize (const Path : String)

Delphi 2010 获取文件大小的方法是什么?我是否必须返回并使用 FindFirst 来访问 TSearchRec.FindData

谢谢。

最佳答案

我不确定是否有“Delphi 2010”方式,但有一个Windows way that doesn't involve FindFirst and all that jazz .

我将该例程的 Delphi 转换放在一起(并在此过程中修改它以处理 > 4GB 大小的文件,如果您需要的话)。

  uses
WinApi.Windows;

function FileSize(const aFilename: String): Int64;
var
info: TWin32FileAttributeData;
begin
result := -1;

if NOT GetFileAttributesEx(PChar(aFileName), GetFileExInfoStandard, @info) then
EXIT;

result := Int64(info.nFileSizeLow) or Int64(info.nFileSizeHigh shl 32);
end;

您实际上可以只使用 GetFileSize() 但这需要一个文件句柄,而不仅仅是文件名,并且与 GetCompressedFileSize() 建议类似,这需要两个要调用的变量。 GetFileSize()GetCompressedFileSize() 都重载了它们的返回值,因此测试是否成功并确保有效结果有点尴尬。

GetFileSizeEx() 避免了处理 > 4GB 文件大小和检测有效结果的细节,但也需要文件句柄,而不是名称,并且 (至少从 Delphi 2009 开始,我还没有检查过 2010),在任何地方的 VCL 中都没有为您声明,您必须提供自己的导入声明。

关于delphi - 在 Delphi 2010 或更高版本中获取文件的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1642220/

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