ディレクトリの日付について

解決


恵子  2007-03-07 14:45:56  No: 25194

ディレクトリーの作成日付、更新日付、アクセス日付を得る方法を教えてください。簡単そうなのに見つかりません。


orz  2007-03-07 17:19:17  No: 25195

ファイルハンドル := Windows.FindFirstFile(フォルダ名, TWin32FindData型変数)
Windows.FindClose(ファイルハンドル);

日付関連
TWin32FindData型変数.ftCreationTime
TWin32FindData型変数.ftLastWriteTime
TWin32FindData型変数.ftLastAccessTime

最後に...
FileTimeToLocalFileTime:たぶんタイムゾーンに合わせた日付に変換
FileTimeToDosDateTime:DOSの日付形式(整数型)に変換
FileDateToDateTime:TDateTime型に変換

・・・で、とってきています。


恵子  2007-03-08 07:59:33  No: 25196

どうもありがどうございました。Windows.FindFirstFileという関数についてはまったく知りませんでした。
ついでで恐縮ですが、各日付をTDateTimeに変換するには、次のように
TFileTime⇒TSystemTime⇒TDateTimeのような2段かでの変換しか方法はないのでしょうか。


procedure TForm1.Button1Click(Sender: TObject);
var
  Handle: THandle;
  Data: TWin32FindData;
  ft: TFileTime;
  st: TSystemTime;
  dt: TDateTime;

begin
  Handle := Windows.FindFirstFile('C:\Temp\新しいフォルダ', Data);
  if Handle = INVALID_HANDLE_VALUE then
    Label1.Caption := '見つかりません'
  else
  begin
    FileTimeToLocalFileTime(Data.ftLastWriteTime, ft);
    FileTimeToSystemTime(ft, st);
    dt := SystemTimeToDateTime(st);
    Label1.Caption := FormatDateTime('YYYY.mm.dd hh:mm:ss', dt);

    FileTimeToLocalFileTime(Data.ftLastAccessTime, ft);
    FileTimeToSystemTime(ft, st);
    dt := SystemTimeToDateTime(st);
    Label2.Caption := FormatDateTime('YYYY.mm.dd hh:mm:ss', dt);

    FileTimeToLocalFileTime(Data.ftCreationTime, ft);
    FileTimeToSystemTime(ft, st);
    dt := SystemTimeToDateTime(st);
    Label3.Caption := FormatDateTime('YYYY.mm.dd hh:mm:ss', dt);
  end;
end;


orz  2007-03-08 17:23:26  No: 25197

ソースをお持ちであれば、SysUtils.FileAge関数をご覧アレ
FindFirstFile〜FindClose〜FileTimeToLocalFileTime〜FileTimeToDosDateTime
で、タイムスタンプ取得しています。
そして、FileAgeのHelpには、以下の記述があります
> 戻り値は,FileDateToDateTime 関数を使って TDateTime オブジェクトに変換できます

ということで、自分で関数を作る以外にないか、(あれば)別の方法を使うしかないでしょうな。


恵子  2007-03-09 06:18:25  No: 25198

どうもありがとうございました。
SysUtils.FileAge関数のソースまで見ることは、思いもよらなかったです。
今後は、困ったときには、そこから見てみたいと思います。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加