![]() |
Re: prüfen, ob es ein Ordner ist
Hmm, dann mache ich irgendwas falsch, denn wenn ich auf faDirectory prüfe, liefert er mir false zurück, obwohl ich definitiv einen Ordner prüfe...
Kannst du mir mal please die genaue Formulierung posten? Tausend Dank, Gina. |
Re: prüfen, ob es ein Ordner ist
Moin Gina,
zeig' doch mal, wie Du es machst. |
Re: prüfen, ob es ein Ordner ist
Also ich hab das unter anderem so probiert:
Delphi-Quellcode:
:gruebel: Gina.
if (FindFirst(Datei,faDirectory,SR) = 0) then
if ((SR.Attr and faDirectory) = faDirectory) then |
Re: prüfen, ob es ein Ordner ist
Zitat:
hast Du es schonmal mit meiner Variante probiert? Die sollte eigentlich funktioniern... mfG mirage228 |
Re: prüfen, ob es ein Ordner ist
Ne, sorry. Hab nur Delphi 6. Und bei deinem Code kenne ich einiges nicht. z.B. das: 'dwFileAttributes'
Außerdem sollte es so kurz wie möglich sein, weil es in einer Schleife aufgerufen wird. Das kann dann schon mal mehrere tausend Mal sein... Gina. |
Re: prüfen, ob es ein Ordner ist
Zitat:
Ich habe es eben unter Delphi 6 Personal getestet und den Code in ein neues Projekt kopiert. Es lief einwandfrei. Du musst lediglich die Units Windows (TWin32FindDataW und TWin32FindDataA, etc.) und SysUtils (ExcludeTrailingBackslash) in Deiner Uses-Liste haben. Die Länge sollte hier keine allzu große Rolle spielen. Im Notfall kannst du ja nur die IsDirectoryA() Funktion benutzen. Die ist relativ kurz, kann aber nur mit ANSI-String Pfaden umgehen. mfG mirage228 |
Re: prüfen, ob es ein Ordner ist
Moin Gina,
probier's mal so:
Code:
[EDIT]
if (FindFirst(Datei,[color=red][b]faAnyFile[/b][/color],SR) = 0) then
Mirages Source per Copy&Paste in D6 kopiert: Kompiliert anstandslos. An D6 kann's nicht liegen. ;-) [/EDIT] |
Re: prüfen, ob es ein Ordner ist
Zitat:
Nehmen wir mal an, in Datei steht 'F:\test\utest\'. Ich möchte jetzt wissen, ob utest ein Ordner ist oder eine Datei. Wenn ich jetzt FindFirst anwende, schaut er in F:\test\utest rein und sucht dort nach dem ersten Eintrag und prüft, ob es ein Ordner oder eine Datei ist. Entsprechend sieht auch das Ergebnis im Debug-Modus aus. Und genau so verstehe ich auch die Funktionsweise von Findfirst. [EDIT:] Ok, jetzt hab ichs kapiert. :oops: Es hängt alles an dem letzten Backslash. Wenn der da ist, sucht er in dem Verzeichnis und wenn er weg ist sucht er das Verzeichnis... Ist schon erstaunlich, was so ein kleines Zeichen bewirken kann. Sorry für die Verwirrung. Jetzt muss ich mir nur überlegen, ob ich es so mache, weil ich dann immer zuerst den Backslash wegnehmen müßte und ihn danach wieder ransetzen müßte... Vielen lieben Dank für Eure Geduld. Jetzt muss ich nur noch rausfinden, was am schnellsten geht und dann ist meine Frage erledigt... :wink: [/EDIT] Zitat:
Inzwischen hab ich ihn natürlich getestet. Er funktioniert auch einwandfrei. Ich werd mal schauen, ob ich das etwas abkürzen kann, weil so wie er ist, braucht er etwa doppelt so lange wie eine Prüfung mit DirectoryExists, wobei mir das eigentlich sagt, dass DirectoryExists ziemlich lahm zu sein scheint... Vielen lieben Dank für die Hilfe, Gina. |
Re: prüfen, ob es ein Ordner ist
Soo...
Von der Schnelligkeit her nimmt sich FindFirst, IsDirectory von Mirage und auch FileExists gar nichts. Einzig und alleine DirectoryExists ist immer noch schneller. Warum auch immer. Das bezieht sich natürlich nur auf mein System und meine Delphi-Version und kann mit einer anderen Konfiguration ganz anders aussehen. Ich würde mich daher erstmal für DirectoryExists entscheiden. Ist irgendjemandem noch etwas eingefallen, wo damit Probleme auftauchen könnten? Wo mir also eventuell nicht das gewünschte Ergebnis angezeigt werden könnte? Thx, Gina. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:33 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