Thema: Delphi FindFirst / FindLast

Einzelnen Beitrag anzeigen

Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#9

AW: FindFirst / FindLast

  Alt 10. Sep 2010, 12:25
Mit FindFirst/FindNext nur die Unterordner einlesen und die Ergebnisse einfach mit < > Vergleichen und merken. aus dem Ergebnis ein String basteln...
Delphi-Quellcode:
function GetLoHiSubDirs(aDirectory : String): String;
var
  sr : TSearchRec;
  loStr, hiStr : String;
begin
  loStr := '99999999';
  hiStr := '00000000';
  aDirectory := IncludeTrailingPathDelimiter(aDirectory) + '*.*';

  if FindFirst(aDirectory, faAnyFile, sr) = 0 then
  begin
    try
      repeat
        if (sr.Name[1] <> '.')
        and ((sr.Attr and faDirectory) = faDirectory) then
        begin
          if sr.Name < loStr then
            loStr := sr.Name;
          if sr.Name > hiStr then
            hiStr := sr.Name;
        end;
      until FindNext(sr) <> 0;
    finally
      FindClose(sr);
    end;
  end;

  Insert('-', loStr, 7);
  Insert('-', loStr, 5);
  Insert('-', hiStr, 7);
  Insert('-', hiStr, 5);
  result := loStr +' - '+ hiStr;
end;
Es wird für das kleinste Datum erstmal das größtmögliche gespeichert (99999999), und dann bei der Suche durch kleinere Datum ersetzt.Beim größten Datum genau umgekehrt.

Der Rest ist nur die Funktionsweise von FindFirst/FindNext zu verstehen und das Ergebnis (mit Insert) aufzuhübschen.

PS: Versuche vor allem die Bit-Operation zu verstehen, sowas wirst Du häufiger brauchen:
if ((sr.Attr and faDirectory) = faDirectory) then

Geändert von Satty67 (10. Sep 2010 um 12:35 Uhr)
  Mit Zitat antworten Zitat