Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi prüfen, ob es ein Ordner ist (https://www.delphipraxis.net/36803-pruefen-ob-es-ein-ordner-ist.html)

Luckie 26. Dez 2004 11:00

Re: prüfen, ob es ein Ordner ist
 
Was macht DirectoryExists, wenn es sich um eine Datei handelt?

Daniel 26. Dez 2004 11:01

Re: prüfen, ob es ein Ordner ist
 
Ich will schwer hoffen, dass dann false zurückgeliefert wird. Schrieb ich aber auch schon oben.

Matze 26. Dez 2004 11:03

Re: prüfen, ob es ein Ordner ist
 
Zitat:

Zitat von Luckie
Was macht DirectoryExists, wenn es sich um eine Datei handelt?

Ich meinte das so

Datei: c:\Rumpelstilzchen\Feuerlöscher.jpg
Ordner: c:\Rumpelstilzchen\Feuerlöscher.jpg\ <== so kann ja auch ein Ordner heißen

Wenn der Ordner nun ohne Backslash am Ende da steht und es diese Datei auch gibt, kann man es wohl nicht unterscheiden, oder irre ich mich da? :gruebel:

Alexander 26. Dez 2004 11:08

Re: prüfen, ob es ein Ordner ist
 
Probier es aus, aber ich meine, dass es mit DirectoryExist geht.

PS: Kann es gerade selber nicht ausprobieren...

Gina 26. Dez 2004 11:14

Re: prüfen, ob es ein Ordner ist
 
Uii, so schnell kann man ja kaum mitlesen...

Mal schauen, ob ich alles entdeckt habe. Also:

Mit Dateiendung abfragen geht nicht, weil auch Dateien bei sind, die evtl keine Endung haben, aber trotzdem keine Ordner sind und umgekehrt kanns ja auch sein.

FindFirst: Bitte nicht schlagen, aber wenn ich FindFirst auf einen Ordner anwende, frage ich dann nicht den Inhalt des Ordners ab und nicht den Ordner selbst?

An DirectoryExists hatte ich auch schon gedacht, bin aber davon ausgegenagen, dass es "unsauber" sei... :oops: Aber wenn es schnell und zuverlässig ist... Werds gleich mal testen.

Bis gleich, Gina.

Luckie 26. Dez 2004 11:16

Re: prüfen, ob es ein Ordner ist
 
Zitat:

Zitat von Gina
FindFirst: Bitte nicht schlagen, aber wenn ich FindFirst auf einen Ordner anwende, frage ich dann nicht den Inhalt des Ordners ab und nicht den Ordner selbst?

Nein, entscheidet ist diese Zeile:
Delphi-Quellcode:
Result := ((f.dwFileAttributes and faDirectory) = faDirectory);
Dort wird geprüft, ob die gefundene Datei ein Ordner ist oder nicht.

Gina 26. Dez 2004 12:09

Re: prüfen, ob es ein Ordner ist
 
Also ich kann unter XP keine Datei mit dem gleichen Namen wie ein im selben Verzeichnis befindlichen Ordner erstellen... Ist das immer so? Dann würde DirectoryExists funktionieren. Es wird auf jeden Fall false zurückgegeben, wenn eine Datei ohne Dateiendung geprüft wird...

Das wäre dann wohl das Kürzeste, oder?

Thx, Gina.

PS: Was ist eigentlich "dwFileAttributes" ? Ist das aus D2005? :roll:

Christian Seehase 26. Dez 2004 13:23

Re: prüfen, ob es ein Ordner ist
 
Moin Zusammen,

warum beisst ihr euch eigentlich alle an DirectoryExists fest?
Wenn sicher ist, dass es sich um eine Datei oder ein Verzeichnis handelt, könnte man einfach mit FileExists prüfen, ob es eine Datei ist.

BTW:
Meiner Erfahrung nach funktioniert DirectoryExists unter Windows ME nicht sauber, zumindest die Version aus D5.

Gina 26. Dez 2004 14:04

Re: prüfen, ob es ein Ordner ist
 
Hi, hier will doch keiner beißen :wink:

Es geht lediglich um eine schnelle und sichere Methode, um zu prüfen, ob es ein Ordner ist. Ich sehe da keinen großen Unterschied, ob ich nun FileExist oder DirectoryExist nehme. Ob nun eine davon verläßlicher ist, kann ich leider nicht beurteilen. Die Frage ist, ob eins der beiden ausreicht.

"Wenn sicher ist, dass es sich um eine Datei oder ein Verzeichnis handelt..."

Was könnte es denn sonst noch sein? :gruebel: Ein Laufwerk wird als Ordner erkannt, was für meine Zwecke ok ist...

Nochmal zu faDirectory:

Kann ich das zur auch Prüfung benutzen, ohne vorher FindFirst anzuwenden? Ich bin immernoch der Meinung, dass mit FindFirst der Inhalt des angegebenen Pfades nach Ordnern geprüft wird, nicht der Pfad selbst. Ansonsten hab ich Euch falsch verstanden. :oops: Vielleicht hilft mir dann ein kleines Beispiel weiter, wie es gemeint sein soll? Das wäre supi.

Vielen lieben Dank, Gina.

Christian Seehase 26. Dez 2004 16:09

Re: prüfen, ob es ein Ordner ist
 
Moin Gina,

Zitat:

Zitat von Gina
Kann ich das zur auch Prüfung benutzen, ohne vorher FindFirst anzuwenden?

Nein kannst Du nicht, denn womit willst Du es denn vergleichen? ;-)

Zitat:

Zitat von Gina
Ich bin immernoch der Meinung, dass mit FindFirst der Inhalt des angegebenen Pfades nach Ordnern geprüft wird, nicht der Pfad selbst.

FindFirst liefert Dir immer das erste Auftauchen des angegebenen Pfades zurück, unabhängig davon, ob es sich um eine Datei oder ein Verzeichnis handelt, natürlich vorausgesetzt, dass der angegebene Pfad überhaupt existiert.
Wenn jetzt der Pfad keine Wildcards (*,?) enthält wird exakt der angebene Pfad gesucht.

Ich habe die Erfahrung gemacht, dass es am Besten ist als Attributflags faAnyFile anzugeben, und anschliessend auf Directory usw. zu prüfen.

Für Deinen Anwendungsfall dürfte allerdings die unmittelbare Prüfung mittels DirectoryExists/FileExists am meisten Sinn machen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:48 Uhr.
Seite 2 von 3     12 3      

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