Entwickler-Ecke

Dateizugriff - Verzeichnis vorhanden?


D. Annies - Di 09.01.07 22:58
Titel: Verzeichnis vorhanden?
Hi, Delpher,

gibt es einen Befehl, o.ä., mit dem man erkennen kann, ob es in einem Laufwerk ein Verzeichnis/Unterverzeichnis (steht z.B. in Label3.caption) schon gibt?

Grüße von
Detlef A.


Moderiert von user profile iconChristian S.: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Di 09.01.2007 um 22:16


C.Schoch - Di 09.01.07 23:14

Suche in: Delphi-Forum, Delphi-Library DIRECTORYEXISTS


D. Annies - Mi 10.01.07 22:20

Hi, Christian,

danke für deine Antwort(liste). Diesen Befehl kenne ich in der Tat schon, ich meinte, etwas genauer ausgedrückt, ob es dann auch möglich ist, den Pfad zu diesem Verzeichnis sichtbar zu machen, bzw. dahin zu wechseln.

Weißt du, oder jemand anderer, auch darüber etwas?

Danke für weitere Hilfe,
Detlef A.


Marco D. - Mi 10.01.07 22:26

user profile iconD. Annies hat folgendes geschrieben:
Hi, Christian,

danke für deine Antwort(liste). Diesen Befehl kenne ich in der Tat schon, ich meinte, etwas genauer ausgedrückt, ob es dann auch möglich ist, den Pfad zu diesem Verzeichnis sichtbar zu machen, bzw. dahin zu wechseln.

Weißt du, oder jemand anderer, auch darüber etwas?

Danke für weitere Hilfe,
Detlef A.

Weiß beim besten Willen nicht, wie genau du dir das vorstellst! :gruebel:
Du meinst, du willst den Inhalt des Verzeichnisses auslesen?


ZeitGeist87 - Mi 10.01.07 22:29

Hallo!

Bitte drück dich präziser aus!

Willst du, dass wenn dieses Verzeichnis existiert, der Explorer aufgeht mit diesem Pfad?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
 //WICHTIG - einbinden
 uses shellapi;
 ...
 
 //Befehl ausführen
 shellexecute(application.handle, 'explorer', pchar(''), nil, pchar(derPfad), sw_shownormal);
 
 //shellexecute(Handle, Aktion, Datei, ?, Pfad, AnzeigeModi);
 
 {

  Anzeigemodi:   - sw_shownormal (Fenster normal aufmachen);
     - sw_showminimized (Fenster minimiert öffnen);
    - sw_showmaximized (Fenster maximiert öffnen);

 }


LG
Stefan


D. Annies - Mi 10.01.07 22:31

Nein, Marco: ich habe folgendes festgestellt: Ich gebe den Verzeichnisnamen ein - von dem ich weiß, dass er in der z.B. 3. Unterverzeichnisebene des Verzeichnisses liegt, in dem ich mich gerade befinde (kann ja auch vom Stammverzeichnis aus sein). Dann sagt mir directoryExists, dass es dieses Verzeichnis gibt, aber nicht, wo, also mit welchem (relativen) Pfad.

Das möchte ich wissen.

Detlef


Marco D. - Mi 10.01.07 22:46

Was genau bedeutet für dich:

"Ich befinde mich in C:/Programme"?


D. Annies - Mi 10.01.07 22:55

@[quote]Stefan: Ich suche den Pfad für den Namen des Verzeichnisses, dessen Namen (=Name des Unterverzeichnisses) ich kenne.

Also, ich weiß, das Verzeichnis heißt NAMEN und ich will wissen:
jo, der Pfad dahin ist C:\programme\projekt155\Daten\NAMEN

As Klar?
Detlef


Marco D. - Mi 10.01.07 23:00

Wie willst du das wissen? Es kann ja hunderte Ordner "NAMEN" geben!
Du musst dir eben vorher den Pfad abspeichern. ;) Gibt der User dir denn den Ordnernamen an?


C.Schoch - Mi 10.01.07 23:02

IMO gibt es so eine funktion in der VCL nicht.

Verzeichnisse kannst du aber rekursiv mit ForceDirectories anlegen.

Falls du sowas brauchst musst du es dir selbst Programieren


D. Annies - Mi 10.01.07 23:07

Hi,

2 Verzeichnisse mit diesem Namen würden ja schon für die NichtEindeutigkeit reichen, aber dann würden mich ja auch beide Pfade interessieren ...

Aber vlt ist es ja auch zu viel verlangt ...

Gruß, Detlef


ZeitGeist87 - Mi 10.01.07 23:17

nichts ist zuviel verlangt!

Musste halt suchen: findFirst und findnext mit Paramater faDirectory =)

Have Fun xD

Das Ding würde zum Bleistift bei C:\ anfangen und alle Ordner durchgrasen und suchen, nach deinem Ordnernamen...

Lad dir den EasyHelper von [URL]http://www.dsdt.info[/URL] herunter, da findest du alles was du brauchst, das was du nicht findest, gibts hier im Forum, und das was es nicht gibt, kann hier gelöst werden =)

LG
Stefan


D. Annies - Do 11.01.07 10:26

Hi, Stefan,

habe jetzt erstmal EasyHelper gesogen und fräse da mal durch.
Der Tipp mit faDirectory hört sich gut an ...

Gruß, Detlef


Manina - Do 11.01.07 20:02

Versuch mal so:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
procedure VerzSuche;
var lstSearch, lstFound : TStringList;
    i : Integer;
    sr : TSearchRec;
    dir, dirMask, dirStart : String;
begin
  dirStart := 'C:\Programme';   // oder was immer als Startverz.
  dirMask := 'NAMEN';           // in deinem Fall
  lstSearch := TStringList.Create;
  lstSearch.Sorted := TRUE;
  lstSearch.Add(dirStart);
  lstFound := TStringList.Create;
  while lstSearch.Count > 0 do begin
    dir := lstSearch[0];
    lstSearch.Delete(0);
    i := FindFirst(dir + '\*', faDirectory, sr);
    while i = 0 do begin
      if sr.Name[1] <> '.' then begin  // '.' und '..' ignorieren
        if sr.Name = dirMask then lstFound.Add(dir + '\' + sr.Name)
        else lstSearch.Add(dir + '\' + sr.Name);
      end;
      i := FindNext(sr);
    end;
    FindClose(sr);
  end;
  for i := 0 to lstFound.Count - 1 do begin
    ShowMessage('Gefunden: ' + lstFound[i]); // da sind die Ergebnisse
  end;
  lstSearch.Free;
  lstFound.Free;
end;