Here ist ein Auszug aus einem meiner Programme.
Noch vorab: Es gibt 4 Ebenen: 1. - 3. Ebene
NUR Ordner und 4. Ebene
NUR ".dat"-Dateien
Delphi-Quellcode:
procedure TForm1.FormActivate(Sender: TObject);
var SR : TSearchrec;
begin
if FindFirst('*.*', faAnyFile, SR) = 0 then
begin
repeat
// handelt es sich um ein Verzeichnis?
if (SR.Attr and faDirectory) = faDirectory then
begin
if (SR.Name <> '.') and
(SR.Name <> '..') then
ComboBox1.Items.Add(SR.Name);
end;
until
FindNext(SR) <> 0;
FindClose(SR); // wird benötigt um den Speicher wieder freizugeben
end;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
var SR : TSearchrec;
tmp : String;
begin
tmp := ComboBox1.Items[ComboBox1.ItemIndex] + '\*.*';
if FindFirst(tmp, faAnyFile, SR) = 0 then
begin
repeat
// handelt es sich um ein Verzeichnis?
if (SR.Attr and faDirectory) = faDirectory then
begin
if (SR.Name <> '.') and
(SR.Name <> '..') then
ComboBox2.Items.Add(SR.Name);
end;
until
FindNext(SR) <> 0;
FindClose(SR); // wird benötigt um den Speicher wieder freizugeben
end;
end;
procedure TForm1.ComboBox2Change(Sender: TObject);
var SR : TSearchrec;
tmp : String;
begin
tmp := ComboBox1.Items[ComboBox1.ItemIndex] + '\' + ComboBox2.Items[ComboBox2.ItemIndex] + '\*.*';
if FindFirst(tmp, faAnyFile, SR) = 0 then
begin
repeat
// handelt es sich um ein Verzeichnis?
if (SR.Attr and faDirectory) = faDirectory then
begin
if (SR.Name <> '.') and
(SR.Name <> '..') then
ComboBox3.Items.Add(SR.Name);
end;
until
FindNext(SR) <> 0;
FindClose(SR); // wird benötigt um den Speicher wieder freizugeben
end;
end;
In der ersten Prozedur (OnActivate) funktioniert die auflistung der Vorhandenen Ordner im Ordner der exe-Datei.
Leider passiert bei den anderen zweien nichts. Es werden keine Ordner aufgelistet!