Zitat von
Dragon27:
Hallo,
also ich habs jetzt mal so probiert:
[...]
Aber leider funktioniert das nicht
Danke für Eure Hilfe!
Ändere es mal so ab (an sonsten wie gesagt, schau Dir mal die Prozedur in meiner Komponente an!)
Delphi-Quellcode:
function ListFiles : TStringList; // Rückgabewert
var
LStrList: TStringlist;
LPfad: String;
LSearchRec: TSearchRec;
begin
LPfad := 'C:\'; // NICHT "C:/", weiß nicht, ob es sonst klappen würde
LStrList := TStringlist.Create;
if FindFirst(LPfad + '*.*', faAnyFile, LSearchRec) = 0 then
begin
repeat
if (LSearchRec.Attr and faDirectory) = 1 then // Klammern gesetzt
begin
LStrList.Add(LSearchREc.Name);
end;
until FindNext(LSearchRec) <> 0;
FindClose(LSearchRec);
end;
Result := LStrList; // Ergebnis als StringList zurückgeben
LStrList.Free;
end;
Aufruf:
Listbox1.Items := ListFiles;
Ob jetzt Deine eigentliche Suchfunktion korrekt programmiert ist, habe ich gerade leider keine Zeit zu testen. Rekursives Suchen dürfte so aber auf jeden Fall (falls nötig) nicht möglich sein. Evtl. könntest Du noch einen Parameter "function listfiles(dir : string) : TStringList" einbauen, damit man der Funktion noch das Verzeichnis übergeben kann, welches man auflisten möchte...
Ich hatte mal das ein komisches Verhalten, dass Verzeichniss nur gefunden wurden, wenn man statt "*.*" nur "*" eingegeben hat. Hat sich dann allerdings beim weiteren Programmieren in Luft aufgelöst!?! Evl. auch einen Versuch wert.
.. und weil das Editieren soo viel Spass macht:
Achte darauf, dass der Pfad, wenn nicht grad "c:\" immer mit einem "\" abgeschlossen wird. Also z.B. "c:\test\" und NICHT "c:\test", sonst pass ja der Ausdruck "LPfad + '*.*'" nicht mehr...
Viel Glück
SCRaT