SearchRec.Time の代替について


sigotnin  2022-10-20 14:08:09  No: 150591

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 14:37:11  No: 150593

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


take  2022-10-20 15:10:46  No: 150594

そもそも 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 10:15:31  No: 150612

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


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








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