Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Unterverzeichnisse ermitteln (https://www.delphipraxis.net/97903-unterverzeichnisse-ermitteln.html)

Jackthecoder 18. Aug 2007 11:22


Unterverzeichnisse ermitteln
 
HI @ all

ich habe folgendes problem:

ich möchte die unterverzeichnisse eines verzeichnisses ermitteln und am besten in einer txt datei speichern.

zum beispiel:

Das ist mein Hauptverzeichnis

C:\Programme\Messenger

Unterverzeichnisse:

C:\Programme\Messenger\Hello
C:\Programme\Messenger\Hi
C:\Programme\Messenger\Ciao

in diesem Messenger Verzeichnis befinden sich weitere verzeichnisse und diese will ich ermitteln und in einer txt datei festhalten. Die text datei soll dann folgendermasen aussehen:

Hallo, Hi, Ciao

ich hoffe ihr wisst was ich meine, bin noch voll der anfänger.....

thx

Jelly 18. Aug 2007 11:24

Re: Unterverzeichnisse ermitteln
 
Erster Schritt sollte definitiv mal die hübsche Suchfunktion hier im Forum sein. Das Thema hatten wir tonnenweise... Stichwort: FindFirst, FindNext, TSearchRec

Jackthecoder 18. Aug 2007 11:30

Re: Unterverzeichnisse ermitteln
 
ich habe die suche schon durchforstet aber verstehe die ergebnisse noch nicht ganz deswegen dachte ich mir ob jemand mir das nicht doch vieleicht noch besser erklären könnte

Jelly 18. Aug 2007 11:33

Re: Unterverzeichnisse ermitteln
 
Wenn ich nach findfirst unterverzeichnisse suche, kriege ich eine ganze Reihe an sinnvoller Threads. Was genau verstehst Du denn nicht?

EDIT:
z.B. dieser Thread beschreibt eigentlich genau was Du vorhast.

Jackthecoder 18. Aug 2007 13:57

Re: Unterverzeichnisse ermitteln
 
wie genau benutze ich diese procedure?

Delphi-Quellcode:
procedure GetSubDirs(const sRootDir: string; slDirectories: TStrings);
var
   srSearch: TSearchRec;
   sSearchPath: string;
   slSub: TStrings;
begin
   Screen.Cursor := crHourGlass;
   slSub := TStringList.Create;
   slDirectories.BeginUpdate;
   try
      sSearchPath := sRootDir;
      if FindFirst(sSearchPath + '*', faDirectory, srSearch) = 0 then
         repeat
            if ((srSearch.Attr and faDirectory) = faDirectory) and
               (srSearch.Name <> '.') and
               (srSearch.Name <> '..') then begin
               slDirectories.Add(sSearchPath + srSearch.Name);
               slSub.Add(sSearchPath + srSearch.Name);
            end;
         until
            (FindNext(srSearch) <> 0);

      FindClose(srSearch);
   finally
      slDirectories.EndUpdate;
      FreeAndNil(slSub);
      Screen.Cursor := crDefault;
   end;
end;
also wie rufe ich sie auf?

wenn ich jetzt das ergebnis in ein memo reinschreiben lassen will.

DeddyH 18. Aug 2007 14:12

Re: Unterverzeichnisse ermitteln
 
Hallo,

ich habe die Prozedur ein wenig abgeändert:
Delphi-Quellcode:
procedure GetSubDirs(const sRootDir: string; slDirectories: TStrings);
var
   srSearch: TSearchRec;
   sSearchPath: string;
//   slSub: TStrings;
begin
   Screen.Cursor := crHourGlass;
//   slSub := TStringList.Create;
   slDirectories.BeginUpdate;
   slDirectories.Clear;
   try
     sSearchPath := IncludeTrailingBackslash(sRootDir);
     if FindFirst(sSearchPath + '*', faDirectory, srSearch) = 0 then
       begin
         repeat
            if ((srSearch.Attr and faDirectory) = faDirectory) and
               (srSearch.Name <> '.') and
               (srSearch.Name <> '..') then begin
               slDirectories.Add(sSearchPath + srSearch.Name);
//               slSub.Add(sSearchPath + srSearch.Name);
            end;
         until
            (FindNext(srSearch) <> 0);

         FindClose(srSearch);
       end;
   finally
      slDirectories.EndUpdate;
//      FreeAndNil(slSub);
      Screen.Cursor := crDefault;
   end;
end;
Aufrufen kannst Du sie z.B. so:
Delphi-Quellcode:
GetSubDirs('C:\Programme',Memo1.Lines);
//Edit: IncludeTrailingBackslash an die richtige Stelle gesetzt

Jackthecoder 18. Aug 2007 14:26

Re: Unterverzeichnisse ermitteln
 
das ist echt voll nett von dir danke......

jetzt hätte ich nur noch eine kleine frage:

ich will nur den ordnernamen haben und nicht den ganzen pfad wie kann ich den pfad noch aus dem memo löschen?

quendolineDD 18. Aug 2007 14:29

Re: Unterverzeichnisse ermitteln
 
Delphi-Quellcode:
slDirectories.Add(sSearchPath + srSearch.Name);
in

Delphi-Quellcode:
slDirectories.Add(srSearch.Name);
ändern

Matze 18. Aug 2007 14:31

Re: Unterverzeichnisse ermitteln
 
@DeddyH: Afaik sollte man anstelle von Delphi-Referenz durchsuchenIncludeTrailingBackslash besser Delphi-Referenz durchsuchenIncludeTrailingPathDelimiter nutzen. Ich bin mir aber nicht mehr ganz sicher, mach es selbst aber so, seitdem ich das irgendwo mal gelesen habe.

@Jackthecoder: Dir fehlen einige Delphi-Grundlagen, glaube ich. Arbeite mal den Delphi-Crashkurs durch. Ohne die Grundlagen wirst du dich immer schwer tun, glaub mir. ;)

Jackthecoder 18. Aug 2007 14:42

Re: Unterverzeichnisse ermitteln
 
@Matze
jo ich setz mich da gleich ma ran

@ all

danke für eure hilfe ich hab alles so hinbekommen wie ich wollte......big thx


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:02 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz