![]() |
Auf Windowsordnerstruktur zugreifen
Ich hab leider gar keine Idee wie man sowas macht, deshalb konnte ich das jetzt auch in keine Kategorie einordnen.
Meine Aufgabe: ich habe eine List mit Namen. Jetzt will ich in einem bestimmten Verzeichniss, z.B. E:\\ suchen ob Ordner mit den Namen aus der Liste dort vorhanden sind. Wenn nicht sollen sie erstellt werden. Wie geht das? Hat da jemand einen Tipp für mich? PS Das Verzeichnis ist ein Netzlaufwerk, das einem Buchstaben zugeordnet ist, falls das was ändern sollte. |
Re: Auf Windowsordnerstruktur zugreifen
|
Re: Auf Windowsordnerstruktur zugreifen
Delphi-Quellcode:
//------------------------------------------------------------------------------
// Eine Verzeichnisliste lesen - im Ergebnis werden nur die Dateinamen übergeben //------------------------------------------------------------------------------ function AppendDirList(const DirList: TStrings; const Path: String): Integer; var SearchResult: TSearchRec; Error: Integer; begin Result := -1; if DirList<>nil then begin Error := FindFirst(Path, faDirectory, SearchResult); try While Error=0 do begin if (SearchResult.Attr and faDirectory = faDirectory) and (SearchResult.Name <> '.') and (SearchResult.Name <> '..') then begin DirList.Add(SearchResult.Name); end; Error := FindNext(SearchResult); end; finally FindClose(SearchResult); end; Result := DirList.Count; end; end; function GetDirList(const DirList: TStrings; const Path: String): Integer; begin Result := -1; if DirList<>nil then begin DirList.Clear; Result := AppendDirList(DirList, Path); end; end; |
Re: Auf Windowsordnerstruktur zugreifen
Ich hab das eher andersherum verstanden. Die Verzeichnisliste existiert bereits und die darin enthaltenen Verzeichnisse sollen ggf. angelegt werden.
Delphi-Quellcode:
var Verz: string;
begin for i := 0 to Namensliste.Count - 1 do begin Verz := IncludeTrailingPathDelimiter(angegebenes_Verzeichnis) + Namensliste[i]; if not (DirectoryExists(Verz) or ForceDirectories(Verz)) then ShowMessage(Format('Verzeichnis "%s" kann nicht angelegt werden',[Verz])); end; end; |
Re: Auf Windowsordnerstruktur zugreifen
@DeddyH: So rum hab ich das ganze auch verstanden. Trotzdem würde ich so heran gehen das ich mir den Inhalt des Verzeichnisses auflisten lasse und in der Ergebnismenge dann schaue was nicht vorhanden ist. Denn eine Prüfung ob ein Verzeichnis existiert greift auch jedesmal auf das Dateisystem zu weshalb ich denke das es länger dauert jedesmal DirectoryExists aufzurufen.
Zudem sollte DirectoryExists nicht notwendig sein bei Verwendung von ForceDirectorys da dies intern auch prüft was bereits vorhanden ist und was nicht. |
Re: Auf Windowsordnerstruktur zugreifen
Dann lassen wir DirectoryExists halt weg, ich hatte das ja nur im Editor heruntergetippt.
|
Re: Auf Windowsordnerstruktur zugreifen
Also die beiden letzten die geantwortet haben haben mich richtig verstanden ;).
Meine Idee:
Delphi-Quellcode:
So soll das aussehen, da fehlt mir jetzt halt nur der Code für.
for i := 1 to high (verzeichnisnamen) do
begin if not verzeichnisname[i] existiert then anlegen; end; Meine Fragen: was machen denn jetzt IncludeTrailingPathDelimiter DirectoryExists ForceDirectories Ok das 2. kann ich mir vorstellen. Man übergibt einen Pfad und bekommt heraus ob es den gibt. Und die anderen beiden? |
Re: Auf Windowsordnerstruktur zugreifen
|
Re: Auf Windowsordnerstruktur zugreifen
Zitat:
|
Re: Auf Windowsordnerstruktur zugreifen
Es ist schon ein Unterschied, ob Du "C:\Verzeichnis" oder "C:\Verzeichnis\" übergibst, oder? Und ja, ForceDirectories versucht, die angegebene Verzeichnisstruktur anzulegen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:04 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