Autor Beitrag
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mo 10.02.03 08:34 
Irgendwie komme ich nicht weiter. Ich will nur die Ordner eines Verzeichnisses auslesen (also ohne Dateinamen). Zwar hab ich das noch nie gemacht, ich war mir aber sicher, daß man da an FindFirst nur das faDirectory übergeben muß. Ist aber nicht so. Mit dem Attribut FindFirst werden alle Dateien ausgelesen (zumindest bei mir). Hat einer eine Idee wie man das zu laufen kriegt.

Hier der Code den ich benutze.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure GetAllFilesF(PathAndMask: String; Sl: TStrings);
var Search: TSearchRec; i, Attrib: Integer;
begin
  Attrib := faDirectory; 

  Sl.Clear;
  if FindFirst(PathAndMask, Attrib, Search) = 0 then
    repeat Sl.Add(Search.Name) until FindNext(Search) <> 0;

  for i := Sl.Count - 1 downto 0 do
    if (Sl.Strings[i] = '.') or (Sl.Strings[i] = '..') then Sl.Delete(i);
end;


Es wird ein Pfad mit Maske übergeben. Das Ergebnis landet in der Listbox.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 10.02.03 09:21 
Hi Popov. Ich benutze meist das Attribut faAnyFile und teste vor der Darstellung im Programm, ob es sich wirklich um einen Ordner handelt:
ausblenden Quelltext
1:
2:
3:
if(Search.Attribute and faDirectory <> 0) and
  (Search.Name <> '.') and (Search.Name <> '..') then
S1.Add(Search.Name);


btw: Für Listboxen gibt´s übrigens noch die Nachricht "LB_DIR", mit der du die Ordner noch einfacher einlesen kannst. Habe ich nie ausprobiert, aber ich bin im PSDK darüber gestolpert.
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mo 10.02.03 17:54 
Danke. Die Möglichkeit mit der Nachricht "LB_DIR" kenne ich auch. Allerdings braucht man das so selten, daß man, wenn man es braucht, meistens garnicht draufkommt oder es auf die Schnelle nicht hinkriegt.
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Mo 10.02.03 18:31 
Was mit bei
Zitat:
ausblenden Quelltext
1:
2:
if FindFirst(PathAndMask, Attrib, Search) = 0 then 
    repeat Sl.Add(Search.Name) until FindNext(Search) <> 0;

fehlt, ist ein FindClose(Search).

_________________
Ist Zeit wirklich Geld?
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mo 10.02.03 22:33 
Hast du recht. Sehe ich auch gerade.
Ist die Frage beantwortet? Das Problem gelöst?

Dann klicke hier, um das Thema entsprechend zu markieren!