AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Neuste Datei suchen ?!?

Ein Thema von lorrey · begonnen am 6. Jun 2005 · letzter Beitrag vom 7. Jun 2005
 
Benutzerbild von St.Pauli
St.Pauli

Registriert seit: 26. Dez 2004
351 Beiträge
 
Delphi 7 Personal
 
#6

Re: Neuste Datei suchen ?!?

  Alt 6. Jun 2005, 13:44
Zitat von lorrey:
Das wäre ja echt ärgerlich !

Zumal müsste ich dann einen Loop über eventuell mehr als 1000 Dateien machen

Das kann es ja eigentlich nicht sein ...
kann man nicht irgendwie vielleicht die Funktion vom Explorer nutzen und nach Datum/Zeit sortieren ?
Dann bräuchte man nur über Taggleiche Dateien loopen ... ?!?

Oder so ...

Wieso?

Delphi-Quellcode:
procedure GetFilesInDirectory(Directory: String; const Mask: String;
                              List: TStrings;
                              WithSubDirs, ClearList: Boolean);

procedure ScanDir(const Directory: String);
var
  SR: TSearchRec;
begin
  if FindFirst(Directory + Mask, faAnyFile - faDirectory, SR) = 0 then try
    repeat
      List.Add(Directory + SR.Name) // <- Hier den Vergleich einbauen und List.Add einfach entfernen...
    until FindNext(SR) <> 0;
  finally
    FindClose(SR);
  end;
  if WithSubDirs then begin
    if FindFirst(Directory + '*.*', faAnyFile, SR) = 0 then try
      repeat
        if (SR.Attr = faDirectory) and
           (SR.Name <> '.') and (SR.Name <> '..') then
          ScanDir(Directory + SR.Name + '\');
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
  end;
end;

begin
  List.BeginUpdate;
  try
    if ClearList then
      List.Clear;
    if Directory = 'then Exit;
    if Directory[Length(Directory)] <> '\then
      Directory := Directory + '\';
    ScanDir(Directory);
  finally
    List.EndUpdate;
  end;
end;

function GetCreationTimeOfFile(const AFileName: String;): TDateTime;
var
  SR: TSearchRec;
  SystemTime: TSystemTime;
  NewCreationTime: TFileTime;
begin
  Result:=0;
  if FindFirst(AFileName, faAnyFile, SR)=0 then
  try
   IF (Windows.FileTimeToLocalFiletime(SR.FindData.ftCreationTime, NewCreationTime) and
           Windows.FileTimeToSystemTime(NewCreationTime, SystemTime)) Then
    Result:=Encodedate(SystemTime.wYear,
                       SystemTime.wMonth,
                        SystemTime.wDay) +
            Encodetime(SystemTime.wHour,
                       SystemTime.wMinute,
                       SystemTime.wSecond,
                       SystemTime.wMilliseconds);
  finally
   SysUtils.FindClose(SR)
  end;
end;
Bau hier gleich in der Suche ein, dass das du ein Datum z.B. als String speicherst, dass du dann immer mit der Aktuellen Datei vergleichst...
Wenn Altes neuer ist als Aktuelles, dann Altes = Aktuelles, ansonsten Altes = Altes...
Natürlich musst du auch den Namen der neusten Datei speicher. Das wäre schon alles. Nach einem *.* Durchlauf hättest du immer die neuste Datei, ohne auch nur eine Schleife zu brauche.

Wenn ich Fehler gemacht habe, mich bitte drauf hinweisen
Gruß St.Pauli
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz