SearchRec.Time の代替について


sigotnin  2022-10-20 05:08:09  No: 150591  IP: 192.*.*.*

FindFirstで得られるSearchRec.Timeが非奨励なので代替を考えましたが、もう少しすっきり変換できる方法はないでしょうか。ご指導お願いいたします。


       //   filedate := SearchRec.Time;
     代替     filedate := FileTimeToInt(SearchRec.FindData.ftLastWriteTime);

function FileTimeToInt(ATime: TFileTime): integer;
var
  LSystemTime : TSystemTime;
  LTempTime   : TFileTime;
  DTime:TDateTime;
begin
  try
    FileTimeToLocalFileTime(ATime, LTempTime);
    FileTimeToSystemTime(LTempTime, LSystemTime);
    DTime:=SystemTimeToDateTime(LSystemTime);
    result:=DateTimeToFileDate(DTime);
  except
    Result := 0;
  end;
end;


編集 削除
HFUKUSHI  2022-10-20 05:37:11  No: 150593  IP: 192.*.*.*

TSearchRec.Timeがdeprecatedなのはその格納形式が環境依存だからだと思うのですが、TSearchRec.TimeStampではだめなんでしょうか?

編集 削除
take  2022-10-20 06:10:46  No: 150594  IP: 192.*.*.*

そもそも FindFirstが非推奨って警告出てませんでしたっけ?
TDirectory.GetFilesとかで取得して日時を取得する方法ではダメですか?

var
  FileNames : TStringDynArray;
  Filename : string;
  DateTime : TDateTime;
begin
  FileNames := TDirectory.GetFiles('c:\', '*.*', TSearchOption.soTopDirectoryOnly);
  for Filename in FileNames do begin           // ファイル数ループ
    ListBox1.Items.Add(Filename);
    DateTime := TFile.GetCreationTime(Filename);
    ListBox1.Items.Add(FormatDateTime('yyyy/mm/dd hh:nn:ss', DateTime));
    DateTime := TFile.GetLastAccessTime(Filename);
    ListBox1.Items.Add(FormatDateTime('yyyy/mm/dd hh:nn:ss', DateTime));
  end;
end;

編集 削除
mam  2022-10-25 01:15:31  No: 150612  IP: 192.*.*.*

SearchRec.TimeStamp
を使うのは駄目なのでしょうか。
外していたらすいません。

編集 削除