Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (12. Jul 2011 um 03:54 Uhr)
  Mit Zitat antworten Zitat