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.