![]() |
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 |
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
|
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
|
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. ![]() |
Re: Unterverzeichnisse ermitteln
wie genau benutze ich diese procedure?
Delphi-Quellcode:
also wie rufe ich sie auf?
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; wenn ich jetzt das ergebnis in ein memo reinschreiben lassen will. |
Re: Unterverzeichnisse ermitteln
Hallo,
ich habe die Prozedur ein wenig abgeändert:
Delphi-Quellcode:
Aufrufen kannst Du sie z.B. so:
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;
Delphi-Quellcode:
//Edit: IncludeTrailingBackslash an die richtige Stelle gesetzt
GetSubDirs('C:\Programme',Memo1.Lines);
|
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? |
Re: Unterverzeichnisse ermitteln
Delphi-Quellcode:
in
slDirectories.Add(sSearchPath + srSearch.Name);
Delphi-Quellcode:
ändern
slDirectories.Add(srSearch.Name);
|
Re: Unterverzeichnisse ermitteln
@DeddyH: Afaik sollte man anstelle von
![]() ![]() @Jackthecoder: Dir fehlen einige Delphi-Grundlagen, glaube ich. Arbeite mal ![]() |
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 |
Re: Unterverzeichnisse ermitteln
@matze: Ich denke, das hat mit der Plattformunabhängigkeit zu tun, oder? Dann wäre das ja nicht so schlimm, falls man nur für Windows proggt. Aber Du hast schon Recht, schaden kann Deine Methode auf keinen Fall.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:29 Uhr. |
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