Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TSearchRec in einer TListBox (https://www.delphipraxis.net/70185-tsearchrec-einer-tlistbox.html)

qb-tim 26. Mai 2006 14:13


TSearchRec in einer TListBox
 
Hi,

kann mir jemand sagen, wie ich das Ergebnis einer FindFirst-FindNext-FindClose als TSearchRec in eine TListBox laden kann?

Mir wäre am liebsten, wenn ich in einer for..do Schleife nacheinander die Dateinamen der TSearcRec in einen String umwandeln kann. --- Ich kann's nicht :cry:

Delphi-Quellcode:
for x := 1 to z do // wobei z die Anzahl der Dateien ist
begin
  s := // ? - Wie lese ich den nächsten Eintrag des TSearchRec in den String ein?
  ListBox1.Items.Add(s);
end;

Klaus01 26. Mai 2006 14:38

Re: TSearchRec in einer TListBox
 
Delphi-Quellcode:
var
  searchResult : TSearchRec;

begin
  // Try to find regular files matching Unit1.d* in the current dir
  if FindFirst('Unit1.d*', faAnyFile, searchResult) = 0 then
  begin
    repeat
      ListBox1.Items.Add(searchResult.name);
    until FindNext(searchResult) <> 0;

    // Must free up resources used by these successful finds
    FindClose(searchResult);
  end;
end;
in etwa so, mußt es nur Deinen Bedingungen anpassen.
Aber hatten wir das nicht schonmal hier -> http://www.delphipraxis.net/internal...876&highlight=

Grüße
Klaus

qb-tim 26. Mai 2006 14:45

Re: TSearchRec in einer TListBox
 
Danke :-D

Wie würde es den bei der Suche nach Ordnern funktionieren?

Irgendwas mit "faDirectory", oder?

Klaus01 26. Mai 2006 14:48

Re: TSearchRec in einer TListBox
 
ja, und wenn Du es recursive haben möchtest -> http://www.martinstoeckli.ch/delphi/...earchDirectory

Grüße
Klaus

semo 26. Mai 2006 14:50

Re: TSearchRec in einer TListBox
 
Zitat:

Irgendwas mit "faDirectory", oder?
genau

Delphi-Quellcode:
    if FindFirst(sPath, faAnyFile, SearchRec) = 0 then
    begin
      repeat
        // handelt es sich um ein Verzeichnis?
        if (SearchRec.Attr and faDirectory) = faDirectory then
        begin
          if (SearchRec.Name <> '.') and
             (SearchRec.Name <> '..') then
            doSomething();
        end;
      until
        FindNext(SearchRec) <> 0;
      FindClose(SearchRec); // wird benötigt um den Speicher wieder freizugeben
    end;
Als kleiner Tip, nutze die TWin32FindData-Struktur, das ganze läuft ein wenig schneller, da direkt mit Windows-Api-Funktionen gearbeitet wird. Die Funktionen der Sysutils setzen ja nur darauf auf.

qb-tim 26. Mai 2006 14:58

Re: TSearchRec in einer TListBox
 
Zitat:

doSomething()
Fehler: Undefinierter Bezeichner

qb-tim 26. Mai 2006 15:06

Re: TSearchRec in einer TListBox
 
:oops: Oh, entschuldigung...

:wall:

Do something (engl: mache etwas)

Da soll also mein Quellentext hin.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz