Hi agm,
du brauchst hier eine Rekrusive Funktion.
Vielleicht hilft Dir das weiter die folgende Prozedur zeigt dir wie du lokal auf deinem Rechner alle
Dateien eines Verzeichnis mit Unterverzeichnissen auflistest. So hast du zumindest schon mal einen Ansatz nachdem Prinzip
musst du dann deine Procedure umschreiben. Ich habe die Funktion auch aus dem Netz und habe mir die damals umgeschrieben.
Delphi-Quellcode:
//Liefert alle Dateien eines Ordners mit Unterverzeichnissen zurück, die
//Funktion ruft
//ScanDir auf durch WithSubDirs Rekrusiv
procedure TForm1.GetFilesInDirectory(Directory: String; const Mask: String;
List: TStrings;
WithSubDirs, ClearList: Boolean);
//ScanDir ist eine Rekrusive Funktion und ruft sich solange auf bis kein
//Verzeichniss oder eine Datei mehr vorhanden sind.
procedure ScanDir(const Directory: String);
var
Datei: TSearchRec;
begin
if FindFirst(Directory + Mask, faAnyFile - faDirectory, Datei) = 0 then try
repeat
List.Add(Datei.Name);
//jede Datei wird hier bei einem Durchlauf angesprochen (sprich hier musst du deine Operation einfügen)
until FindNext(Datei) <> 0;
finally
FindClose(Datei);
end;
if WithSubDirs then begin
if FindFirst(Directory + '*.*', faAnyFile, Datei) = 0 then try
repeat
if ((Datei.attr and faDirectory) = faDirectory) and
(Datei.Name <> '.') and (Datei.Name <> '..') then
ScanDir(Directory + Datei.Name + '\');
until FindNext(Datei) <> 0;
finally
FindClose(Datei);
end;
end;
end;
begin
List.BeginUpdate;
try
if ClearList then
List.Clear;
if Directory = '' then Exit;
if Directory[Length(Directory)] <> '\' then
Directory := Directory + '\';
ScanDir(Directory);
finally
List.EndUpdate;
end;
end;
Zum testen machst du ein Projekt mit einem Form, darauf schmeist du einen Button und eine ListBox
im OnClick vom Button rufst du die Methode wie folgt auf:
GetFilesInDirectory('C:\testordner', '*.*', Listbox1.Items, True, True);
Der dritte Parameter macht die Funktion Rekrusiv in dem Du WithSubDir auf True setzt. Springt
die Funktion ScanDir (if WithSubDirs then begin) hierrein und ruft sich neu auf.
Das ganze funktioniert zwar noch nicht so wie du das möchtest mit
indy und dem ftpServer.
Aber so hast du schon mal ne Richtung wie du das Problem angehen musst.
greetz Lun