AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Auf Windowsordnerstruktur zugreifen

Ein Thema von eragon123 · begonnen am 7. Mär 2010 · letzter Beitrag vom 7. Mär 2010
Antwort Antwort
eragon123

Registriert seit: 6. Mär 2010
53 Beiträge
 
#1

Auf Windowsordnerstruktur zugreifen

  Alt 7. Mär 2010, 12:17
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.
  Mit Zitat antworten Zitat
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#2

Re: Auf Windowsordnerstruktur zugreifen

  Alt 7. Mär 2010, 12:20
FindFirst

FindFirst solltest du dir mal angucken siehe link
Lars
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#3

Re: Auf Windowsordnerstruktur zugreifen

  Alt 7. Mär 2010, 12:48
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;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Auf Windowsordnerstruktur zugreifen

  Alt 7. Mär 2010, 13:16
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Auf Windowsordnerstruktur zugreifen

  Alt 7. Mär 2010, 14:55
@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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Auf Windowsordnerstruktur zugreifen

  Alt 7. Mär 2010, 15:05
Dann lassen wir DirectoryExists halt weg, ich hatte das ja nur im Editor heruntergetippt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
eragon123

Registriert seit: 6. Mär 2010
53 Beiträge
 
#7

Re: Auf Windowsordnerstruktur zugreifen

  Alt 7. Mär 2010, 15:08
Also die beiden letzten die geantwortet haben haben mich richtig verstanden .
Meine Idee:

Delphi-Quellcode:
for i := 1 to high (verzeichnisnamen) do
begin
  if not verzeichnisname[i] existiert then
  anlegen;
end;
So soll das aussehen, da fehlt mir jetzt halt nur der Code für.

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?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Auf Windowsordnerstruktur zugreifen

  Alt 7. Mär 2010, 15:11
Delphi-Referenz durchsuchenIncludeTrailingPathDelimiter, Delphi-Referenz durchsuchenForceDirectories
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
eragon123

Registriert seit: 6. Mär 2010
53 Beiträge
 
#9

Re: Auf Windowsordnerstruktur zugreifen

  Alt 7. Mär 2010, 16:17
Zitat von DeddyH:
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;
Ah ok jetzt verstehe ich das. Danke. Muss das Zeichen am Ende des Strings unbedingt sein oder warum nutzt du IncludeTrailingPathDelimiter? Und: macht der in dieser Schreibweise automatisch Forcedirectories wenn DirectoryExcists false ist?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Auf Windowsordnerstruktur zugreifen

  Alt 7. Mär 2010, 17:46
Es ist schon ein Unterschied, ob Du "C:\Verzeichnis" oder "C:\Verzeichnis\" übergibst, oder? Und ja, ForceDirectories versucht, die angegebene Verzeichnisstruktur anzulegen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 04:51 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