ファイル単体の場合、FileAge関数でタイムスタンプを得ることができますがファイルを格納しているフォルダのタイムスタンプを得ようとすると-1が返ってきます。フォルダのタイムスタンプを得るにはどうしたらいいでしょうか?
過去ログで自己解決できました。
function FolderAge(name: string): Tdatetime;
var
Handle: THandle;
Data: TWin32FindData;
ft: TFileTime;
st: TSystemTime;
begin
Handle := Windows.FindFirstFile(Pchar(name), Data);
FileTimeToLocalFileTime(Data.ftLastWriteTime, ft);
FileTimeToSystemTime(ft, st);
Result := SystemTimeToDateTime(st);
end;
FindFirstでいいのでは……
(内部でやってることは同じでしょうけど。タイムスタンプ変換の手間が少し減るかな?)
いずれにしても、FindCloseをお忘れなく。
ツイート | ![]() |