AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Ordner in einer Listbox auflisten
Thema durchsuchen
Ansicht
Themen-Optionen

Ordner in einer Listbox auflisten

Ein Thema von ZERO_COOL · begonnen am 9. Apr 2005 · letzter Beitrag vom 10. Apr 2005
Antwort Antwort
ZERO_COOL

Registriert seit: 27. Okt 2004
12 Beiträge
 
Delphi 2005 Architect
 
#1

Ordner in einer Listbox auflisten

  Alt 9. Apr 2005, 18:23
Ich habe ein kleines Problem ...
Wie kann man Ordner die sich in einem anderen Ordner befinden in einer Listbox auflisten.

Beispiel:
Der Ordner heißt c:\test
in diesem Ordner befinden sich weitere Ordner:
1
2
3 ...
Jetzt müsste die Listbox so ausschauen:
1
2
3

Ich hoffe ihr versteht was ich meine und hoffentlich kann mir wer helfen.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Ordner in einer Listbox auflisten

  Alt 9. Apr 2005, 18:24
Einfach den Code von FindAllFilesFindAllFiles so abändern, dass er nur die Ordner auflistet.


Nachtrag: Schnell hingetippt (nicht sehr performant):

Delphi-Quellcode:
function TForm1.IsInListBox(FileName: string): boolean;
var i: integer;
begin
  result := false;

  for i := 0 to ListBox1.Items.Count - 1 do
  begin
    if ListBox1.Items[i] = FileName then
    begin
      result := true;
      break;
    end;
  end;
end;

procedure TForm1.FindAllFolders(RootFolder: string; Recurse: Boolean = True);
var
  SR: TSearchRec;
begin
  if AnsiLastChar(RootFolder)^ <> '\then
    RootFolder := RootFolder + '\';
  if Recurse then
    if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then
      try
        repeat
          if SR.Attr and faDirectory = faDirectory then
            if (SR.Name <> '.') and (SR.Name <> '..') then
            begin
              FindAllFolders(RootFolder + SR.Name, Recurse);
              if not IsInListBox(RootFolder) then
              begin
                ListBox1.Items.Add(RootFolder);
                Application.ProcessMessages;
              end;
            end;
        until FindNext(SR) <> 0;
      finally
        FindClose(SR);
      end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  FindAllFolders('c:\');
end;
  Mit Zitat antworten Zitat
ZERO_COOL

Registriert seit: 27. Okt 2004
12 Beiträge
 
Delphi 2005 Architect
 
#3

Re: Ordner in einer Listbox auflisten

  Alt 9. Apr 2005, 19:38
Danke schon mal
aber da sind zwei Sachen die ich nicht so gut gebrauchen kann
1. Er listet auch die Unterordner auf. Ich brauch blos die die in dem Verzeichniss sind das ich ausgewählt habe.
2. ich brach nur den letzten Ordnername one das C:\... davor

Ist das möglich? Währe echt wichtig
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Ordner in einer Listbox auflisten

  Alt 9. Apr 2005, 20:14
dann bau das doch um. Die unterordner vermeidest du indem du die rekursion verhinderst und den puren ordnernamen ohne pfad davor bekommst du direkt vom TSearchRec...
Die Infos sind absichtlich so sperlich da ich den eindruck habe das du den source nicht verstanden hast und du somit nicht wirklich programmierst sondern einfach dein Programm aus bausteinen anderer zusammensetzt ohne diese zu verstehen.
Auf diese Art und weise hoff ich das du versuchst den source zu verstehen und somit irgendwann auch besser wirst... (in sachen programmieren)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
ZERO_COOL

Registriert seit: 27. Okt 2004
12 Beiträge
 
Delphi 2005 Architect
 
#5

Re: Ordner in einer Listbox auflisten

  Alt 10. Apr 2005, 10:19
@ SirThornberry
hast ja vollkommen recht kannst du mir den Quelltext mal erklären??
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#6

Re: Ordner in einer Listbox auflisten

  Alt 10. Apr 2005, 10:26
@Matze

was passiert, wenn ich als Pfas z.B. "ordner/" mache? dann baut das script ja fälschlicherweise in "ordner/\" um.

air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Nogge

Registriert seit: 15. Jul 2004
336 Beiträge
 
Delphi 7 Professional
 
#7

Re: Ordner in einer Listbox auflisten

  Alt 10. Apr 2005, 18:24
Delphi-Quellcode:
Procedure FindDirs(DirPath: String; StringList:TStrings; Recurse: Boolean = false);
var SR:TSearchRec;
begin
  if AnsiLastChar(DirPath)^ <> '\'
  then DirPath:=DirPath + '\';
  try
    { im angegebenen Verzeichniss nach Unterordnern suchen -- }
    if FindFirst(DirPath+'*.*',faDirectory,SR)=0 then
    repeat
      { wenn SR ein Ordner ist und nicht '.' und '..' heißt, dann... }
      if ((SR.Attr and faDirectory)<>0) and (SR.Name <> '.') and (SR.Name <> '..') then
      begin
        { ...füge den Ordner der StringList (z.B. einer Listbox(.Items)) hinzu }
        StringList.Add(DirPath+SR.Name+'\'); // s.u. Erläuterung
        { wenn Recurse = true, dann durchsuche den aktuellen Ordner (SR.Name) nach Unterordnern }
        if Recurse then FindDirs(DirPath+SR.Name,StringList,true);
      end;
    until FindNext(SR) <> 0; // wenn keine Unterordner mehr gefunden wurden, Suche beenden
  finally
    FindClose(SR); // Search Handle schließen, da es nicht mehr gebraucht wird
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  FindDirs('c:',listbox1.Items);
end;
Wenn du jetzt nur den Ordnernamen anzeigen lassen möchtest, dann schreibe nur 'StringList.Add(SR.Name);' wie es SirThornberry schon vorgeschlagen hatte.

@Airblader: Du hast ja recht mit deiner Vermutung, aber wieso sollte das Verzeichnis so heißen? Das wäre dann ja nur ein Schreibfehler vom Programmierer, denn bei Windows ist es unmöglich, ein Verzeichnis so zu benennen.
  Mit Zitat antworten Zitat
ZERO_COOL

Registriert seit: 27. Okt 2004
12 Beiträge
 
Delphi 2005 Architect
 
#8

Re: Ordner in einer Listbox auflisten

  Alt 10. Apr 2005, 19:14
Vielen Dank
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#9

Re: Ordner in einer Listbox auflisten

  Alt 10. Apr 2005, 19:43
@Nogge

nein, das mein ich nicht.
die funktion erwartet doch als ordner entweder etwas a la "ordner" oder "ordner\"
wobei das backslash automatisch geaddet wird, wenn es fehlt.

aber es gibt leute, die geben als pfad "ordner/" an, wobei der ordner natürlich nur "ordner" heißt

air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz