AGB  ·  Datenschutz  ·  Impressum  







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

Files suchen und sortieren

Ein Thema von stahli · begonnen am 11. Jul 2011 · letzter Beitrag vom 12. Jul 2011
 
Benutzerbild von himitsu
himitsu

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

AW: Files suchen und sortieren

  Alt 12. Jul 2011, 03:17
Resourcenscchutz?

FreeAndNil ist, bei Variablen, welche eh nicht geprüft werden und nur lokal genutzt werden, etwas übertrieben.

Wieso ist das lokale F global deklariert, bzw. wo wurde es eigentlich deklariert?

Und jupp, an die anonymen Methoden gewöhne ich mich auch so langsam, aber ob es hier wirklich sinnvoll/nötig ist, ist eine andere Frage
(aber oftmals machen sie den Code schon lesbarer, da der Code dann zwar nicht wiederverwendbar ist, aber wenigenstens, bei linearen Funktionen, im Kontext des aufrufenden Codes bleibt und man nicht erst suchen/umblättern muß ... z.B. bei Synchronize-Aufrufen ist das eine geile Angelegenheite und auch kleinere Thread-Prozeduren erstelle ich heutzutage anonym )

Da man FindClose eh nur aufrufen muß, wenn FindFirst erfolgreich war, ist die Repeat-Schleife (aus dem OH-Beispiel) keine schlechte Idee.

Zitat:
ExtractFileExt(sr.Name) = '.pdf'
irgendwas.PDF oder x.PdF willst du nicht finden?

Delphi-Quellcode:
procedure GetFiles;
var
  sr: TSearchRec;
  srList: TList<TSearchRec>;
begin
  srList := TList<TSearchRec>.Create(function(const sr1, sr2: TSearchRec): Integer
    begin
      Result := 0;
      if Result = 0 then
        Result := -CompareValue(sr1.TimeStamp, sr2.TimeStamp);
      if Result = 0 then
        Result := CompareStr(sr1.Name, sr2.Name);
    end));
  try
    if (PathReport <> '') and (FindFirst(PathReport + '*.pdf', (faAnyFile and not faDirectory), sr) = 0) then
    begin
      repeat
        //if SameText(ExtractFileExt(sr.Name), '.pdf') then
        if EndsText('.pdf', sr.Name) then //Unit StrUtils
          srList.Add(sr);
      until FindNext(sr) <> 0;
      FindClose(sr);
    end;
    srList.Sort;
    ListBoxReport.Clear;
    for sr in srList do
      ListBoxReport.Items.Add(sr.Name);
  finally
    srList.Free;
  end;
end;
PS: Leider hat man in TDirectory.GetFiles (Unit IOUtils) die Sortierung vergessen, aber sonst könnte man diese neue Unit sich schonmal ansehn, auch wenn ich persönlich diese Unit für total Mißlungen halte.
Aber zumindestens die Methoden, um über nur einen Befehl auf bestimmte Dateieigenschaften zuzugreifen, ist manchmal recht praktisch.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (12. Jul 2011 um 03:54 Uhr)
  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 07:25 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 by Thomas Breitkreuz