Delphi FileSize ファイル名指定
カテゴリー: ぷろぐらみんぐ
2017-03-11
Delphi FileSize ファイル名指定
標準の関数ではファイルハンドルが必要で、この関数は直接ファイル名を指定できます。
また、標準の関数では32ビット整数のため大きなサイズのファイルを正しく返せない不具合を起こしますがこの関数は64ビット整数で返します。
Unicodeファイル名対応です。 AnsiString,stringをいれても自動型変換が行われるので、SHIFT_JISファイル名でも動作します。
戻り値:
function FileLen(const AFilename: WideString): Int64; var info: TWin32FileAttributeData; begin Result := -1; if NOT GetFileAttributesExW(PWideChar(AFilename), GetFileExInfoStandard, @info) then EXIT; if (info.dwFileAttributes AND FILE_ATTRIBUTE_DIRECTORY > 0) then EXIT; // raise Exception.CreateFmt('Can not get file size : %s', [AFilename]); Result := Int64(info.nFileSizeLow) or Int64(info.nFileSizeHigh shl 32); end; function FileSize(const AFilename: WideString): Int64; begin Result := FileLen(AFilename); end;
標準の関数ではファイルハンドルが必要で、この関数は直接ファイル名を指定できます。
また、標準の関数では32ビット整数のため大きなサイズのファイルを正しく返せない不具合を起こしますがこの関数は64ビット整数で返します。
Unicodeファイル名対応です。 AnsiString,stringをいれても自動型変換が行われるので、SHIFT_JISファイル名でも動作します。
戻り値:
成功した場合は 0以上
失敗した場合は -1
の値が返ってきます