![]() |
Listbox ohne Anzeige für TStrings
Ich such mit dem folgenden Code nach Mp3-Dateien in einem Verzeichnis. Die Ergebniss werden dann in einer Listbox dargestellt. Gibt es eine alternative, so dass ich die Ergebnisse nur im Speicher merke, aber nicht anzeige? Die Daten der Listbox werden dann als nächstes in eine Datenbank übertragen, dann brauch ich die Listbox nicht mehr.
Delphi-Quellcode:
Danke,
procedure GetAllFilesEM(Path, ExtMask: String; List: TStrings;
SubFolder: Boolean); var Attrib, k: Integer; Search: TSearchRec; begin Attrib := faArchive + faReadOnly + faHidden; if Path[Length(Path)] <> '\' then Path := Path + '\'; with TStringList.Create do try CommaText := ExtMask; for k := 0 to Count - 1 do if FindFirst(Path + '*.' + Strings[k], Attrib, Search) = 0 then repeat List.Add(AnsiUpperCase(Path + Search.Name)); until FindNext(Search) <> 0; FindClose(Search); finally Free end; if SubFolder then begin if FindFirst(Path + '*.*', faDirectory, Search) = 0 then begin repeat if ((Search.Attr and faDirectory) = faDirectory) and (Search.Name[1] <> '.') then GetAllFilesEM(Path + Search.Name, ExtMask, List, SubFolder); until FindNext(Search) <> 0; FindClose(Search); end; end; end; {Popov} Marcel |
Re: Listbox ohne Anzeige für TStrings
Nimm doch eine TStringList.
|
DP-Maintenance
Dieses Thema wurde von "Christian Seehase" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
Ein delphispezifisches Problem |
Re: Listbox ohne Anzeige für TStrings
Moin Marcel,
ein paar Sachen, die mir so aufgefallen sind: Das
Delphi-Quellcode:
geht schief, wenn Path leer ist.
if Path[Length(Path)] <> '\' then Path := Path + '\'
Zwei Lösungsansätze:
Delphi-Quellcode:
Ausserdem noch etwas, das definitiv falsch ist:
Path := IncludeTrailingPathDelimiter(Path);
// oder if (Length(Path) > 0) and (Path[Length(Path)] <> '\') then Path := Path + '\';
Delphi-Quellcode:
filtert auch gültige Verzeichnisnamen heraus.
(Search.Name[1] <> '.')
Du musst explizit auf
Delphi-Quellcode:
prüfen, da ein Datei-/Verzeichnisname durchaus mit einem . beginnen kann.
(Search.Name <> '.') and (Search.Name <> '..')
List würde ich auch nicht als Wert- sondern als Const-Parameter übergeben, damit man nicht versehentlich bei einer Überarbeitung List einen Wert zuweist, und sich dann anschliessend wundert, warum man kein Ergebnis zurück erhält. Ich für meinen Teil verwende sogar ausschliesslich Var- oder Const-Parameter ;-) |
Re: Listbox ohne Anzeige für TStrings
Moin Christian,
diese Kritik müsstest Du aber an Popov richten ;). Außerdem stößt mir die Zeile
Delphi-Quellcode:
auf, Bitmasken verknüpft man mit or.
Attrib := faArchive + faReadOnly + faHidden;
|
Re: Listbox ohne Anzeige für TStrings
Jupp, User ist da mal nicht selbst dran Schuld,
aber ich = Erster :tongue: ![]() [add] Zitat:
[/add] nur ich nicht da angemeldet und Popov's HP ist wohl auch down :nerd: @holle: hier im Forum und ich glaub auch in der Code-Library finden sich da bessere Funktionen hierfür. |
Re: Listbox ohne Anzeige für TStrings
Moin Deddy,
Zitat:
Zitat:
Wobei ich sowieso bei FindFirst nur faAnyFile verwende, und später selber filtere. Das mit dem [1] <> '.' dürfte wohl der "beliebteste" Fehler sein, wenn es darum geht Verzeichnisstrukturen durchzugehen :mrgreen: |
Re: Listbox ohne Anzeige für TStrings
Moin himitsu,
Zitat:
Zitat:
Dein SB-Beitrag ist von 19:07 und meiner hier im Thread auch :mrgreen: (Ich denke mal, meinen Beitrag zu schreiben hat etwas länger gedauert als Deiner :tongue: ;-)) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:16 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