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
Antwort Antwort
lorrey

Registriert seit: 29. Jul 2003
42 Beiträge
 
Delphi 7 Professional
 
#1

Neuste Datei suchen ?!?

  Alt 6. Jun 2005, 13:10
Hallo !

Kurze Frage:

Wie kann ich am einfachsten die neuste(n) Datei(en) in einem Verzeichnis im Vergleich zu einem definierten DateTime Wert finden ?!?
Geht das ohne das ich mit "FindNext" alles durchlaufen muss ?!?

Danke und Gruss
  Mit Zitat antworten Zitat
Benutzerbild von Boombuler
Boombuler

Registriert seit: 14. Mär 2003
Ort: Osnabrück
244 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Neuste Datei suchen ?!?

  Alt 6. Jun 2005, 13:55
Denke mal nicht das du da herum kommst... Windows stellt nunmal nur FindFirst und FindNext zur verfügung...

Greetz
Boombuler
"Look at you, Hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?"
SwapIt Highscore:
  Mit Zitat antworten Zitat
lorrey

Registriert seit: 29. Jul 2003
42 Beiträge
 
Delphi 7 Professional
 
#3

Re: Neuste Datei suchen ?!?

  Alt 6. Jun 2005, 14:14
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 ...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Neuste Datei suchen ?!?

  Alt 6. Jun 2005, 14:18
Zitat von lorrey:
Zumal müsste ich dann einen Loop über eventuell mehr als 1000 Dateien machen
Da wirst du nicht drumrumkommen.

Zitat:
Das kann es ja eigentlich nicht sein ...
Ist aber so.
Zitat:
kann man nicht irgendwie vielleicht die Funktion vom Explorer nutzen und nach Datum/Zeit sortieren ?
Der Benutzt genaud ie gleichen APIs.

Code dafür gibt es übrigens in der Code-Lib.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von mr47
mr47

Registriert seit: 6. Dez 2004
Ort: Stuttgart
644 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Neuste Datei suchen ?!?

  Alt 6. Jun 2005, 14:27
Mal ganz logisch hinterfragt: Wie willst du die neuste Datei nehmen, wenn du keine Liste aller Dateien hast? Zu diesem Zeitpunkt weist du ja noch garnicht ob überhaupt so eine Datei existiert...
  Mit Zitat antworten Zitat
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, 14: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
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#7

Re: Neuste Datei suchen ?!?

  Alt 6. Jun 2005, 15:10
wenn dein programm live läuft bzw permanent läuft kannst du die neuen dateien mit den dateisystemevents fangen.
  Mit Zitat antworten Zitat
lorrey

Registriert seit: 29. Jul 2003
42 Beiträge
 
Delphi 7 Professional
 
#8

Re: Neuste Datei suchen ?!?

  Alt 6. Jun 2005, 16:06
Echt ?
Kann man die Events von nur einem Verzeichnis triggern ?!?
Ansonsten macht diese Variante kein Sinn, wenn ich bei jeder neuen Datei ein Message bekomme...

Der Vorschlag von "St.Pauli" sieht eigentlich gut aus und ich denke viel anders wird es leider net gehen.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Neuste Datei suchen ?!?

  Alt 6. Jun 2005, 16:10
dann ist es eventuell das Hier im Forum suchenFindFirstChangeNotification was du suchst.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
lorrey

Registriert seit: 29. Jul 2003
42 Beiträge
 
Delphi 7 Professional
 
#10

Re: Neuste Datei suchen ?!?

  Alt 7. Jun 2005, 09:46
Super!

"FindFirstChangeNotification" sieht sehr gut aus - ich denke damit kann man was anfangen...!

Vielen Dank an alle die geholfen haben
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz