Thema: Delphi FindFirst / FindLast

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.188 Beiträge
 
Delphi 12 Athens
 
#6

AW: FindFirst / FindLast

  Alt 10. Sep 2010, 11:47
Wenn du das Datum nur vergleichen willst, dann könntest mußt du die Zeitzone nicht umrechnen.
Delphi-Quellcode:
function FileCreated(fn: TFileName): TDateTime;
var
  sr: TSearchRec;
  st: TSystemTime;
begin
  if FindFirst(fn, faAnyFile, sr) = 0 then
  begin
    >>>>
    FileTimeToSystemTime(sr.FindData.ftCreationTime, st);
    Result := SystemTimeToDateTime(st);
    <<<<
    SysUtils.FindClose(sr);
  end else Result := 0;
end;
PS: Bei FAT wird die Zeitzone nicht gespeichert, aber via NTFS sollte Zeitzone eh schon von Windows im FindFirst/FindNext eingerechnet sein.

PSS: neben .ftCreationTime gibt es auch noch 2 andere Zeitangaben.
(z.B. eine für die letzte Änderung )


Nja, hier übergibst du einen Dateinamen und ließt nur dessen Datum aus.
Wenn du via FindFirst/FindNext das ganze Verzeichnis ausließt, dann kannst du in dieser Schleife genau das Selbe mit diesen Datumswerten machen.


SirThornberry:
Ja OK, das kann man, aber dafür muß man die Dateiauswertung doppelt vornehmen (einmal für die Erste und dann nochmal für alle restlichen Dateien).
Da sind die 2 Zeilen für das Initialisieren meißt schneller/kleiner/einfacher.

PS: Wenn mal keine Dateien vorhanden sind, dann hat hat man so auch gleich ein paar "Default"-Wert in diesen Variablen. (ich bin Faul und nehm da lieber die kleine Initialisierung)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (10. Sep 2010 um 11:51 Uhr)
  Mit Zitat antworten Zitat