Entwickler-Ecke

Dateizugriff - Ermitteln welche dateien in einem Verzeichnis sind (name)


crip - Sa 29.06.02 17:02
Titel: Ermitteln welche dateien in einem Verzeichnis sind (name)
Koennte mir jemand sagen wie ich ermitteln kann welche dateien bzw. ihren namen in einem Verzeichnis drin sind!!
Z.B der User waehlt einen Verzeichnis aus und ich gebe ihm eine Liste (in listbox oda so) welche dateien in der listbox drin sind!


Klabautermann - Sa 29.06.02 17:13

Hallo Crip,

wenn du es selber machen willst musst du mit FindFirst, FindNext und FindClose arbeiten.
Hierbei Findest FindFirst die erste Datei die in den Suchschema (z.B. C:\*.*) passt und FindNext die jeweils nächste. Mit FindClose gibst du am ende wieder den Speicher Frei. Genauere Infos dazu findest du in der Online-Hilfe.

Alternatv kannst du auch die Komponenten FileListBox, DirListBox & DriveComboBox von der Komponentenpalette Win 3.1 verwenden.

Unter Delphi 6 Findest du auf der Komponentenpalette Beispiele auch noch 4 zusätzliche Komponenten die für dich in Frage kommen könnten.

Was für dich am besten passt must du selbst entscheiden.

Gruß
Klabautermann


crip - Sa 29.06.02 17:49

Noch ne Frage wie kann ich den Open dialo sagen, dass man da ein Verzeichnis und keine Dtaei auswaehlen soll?!!! oda brauch ich anderen Dialog dazu? Obwohl man koennte nach einer datei indem Verzeichnis Fragen und dann den auch ermitteln, geht auch :D Aber was ist denn besser ? :-)


crip - Sa 29.06.02 18:03

Danke Klabautermann!!!
Ich hab auch schon passenden Beispiel dazu gefunden :

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
procedure GetDirs(RootDir: string; dirlist: TStrings);
var
  search: TSearchRec;
  ts: TStringList;
begin
  ts := TStringList.Create;
  try
    if FindFirst(RootDir + '*.*', faDirectory, search) = 0 then
    begin
      repeat
        if ((search.Attr and faDirectory) = faDirectory) and
            (search.Name <> '.') and (search.Name <> '..') then
          ts.Add(search.Name);
      until FindNext(search) <> 0;
      FindClose(search);
    end;
    ts.sort;
    dirlist.Text := ts.Text;
  finally
    ts.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  GetDirs('C:\', listbox1.Items);
end;

mal sehen was draus wird :-)


Klabautermann - Sa 29.06.02 20:53

crip hat folgendes geschrieben:
Noch ne Frage wie kann ich den Open dialo sagen, dass man da ein Verzeichnis und keine Dtaei auswaehlen soll?!!!


Wenn du nur ein Verzeichnis auswählen willst, dann kannst du den Befehl SelectDirectory verwenden.

Gruß
Klabautermann