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;
TSearchRec.Timeがdeprecatedなのはその格納形式が環境依存だからだと思うのですが、TSearchRec.TimeStampではだめなんでしょうか?
そもそも 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;
SearchRec.TimeStamp
を使うのは駄目なのでしょうか。
外していたらすいません。
ツイート | ![]() |