「Delphi2010」の方法があるかどうかはわかりませんが、FindFirstとそのすべてのジャズを含まないWindowsの方法があります。
私はそのルーチンのこのDelphi変換をまとめました(そしてその過程で、必要に応じて4GBを超えるサイズのファイルを処理するように変更しました)。
uses
WinApi.Windows;
function FileSize(const aFilename: String): Int64;
var
info: TWin32FileAttributeData;
begin
result := -1;
if NOT GetFileAttributesEx(PWideChar(aFileName), GetFileExInfoStandard, @info) then
EXIT;
result := Int64(info.nFileSizeLow) or Int64(info.nFileSizeHigh shl 32);
end;
実際にはGetFileSize()を使用することもできますが、これにはファイル名だけでなくファイルHANDLEが必要であり、GetCompressedFileSize()の提案と同様に、呼び出すには2つの変数が必要です。GetFileSize( )とGetCompressedFileSize( )はどちらも戻り値をオーバーロードするため、成功のテストと有効な結果の確認は、少し厄介です。
GetFileSize Ex()は、4 GBを超えるファイルサイズを処理し、有効な結果を検出するという本質的な問題を回避しますが、名前ではなくファイルHANDLEも必要とし、(少なくともDelphi 2009の時点では、2010をチェックしていません)どこでもVCLで宣言されている場合は、独自のインポート宣言を提供する必要があります。