![]() |
[C++] Prüfen ob Ordner existiert
Hallo DPler :hi:
mit folgendem Code möchte ich prüfen ob ein Ordner existiert:
Code:
Allerdings kommt dabei immer true raus, auch wenn der Ordner nicht existent ist. Bei der Überprüfung
dwAttr = GetFileAttributes(p_csAnhang);
if( dwAttr & FILE_ATTRIBUTE_DIRECTORY) { return true; } else { return false; }
Code:
hingegen wird manchmal false zurückgegeben, auch wenn der Ordner existent ist.
dwAttr == FILE_ATTRIBUTE_DIRECTORY
Ich hoffe ihr könnt mir wieder einmal helfen :) |
Re: [C++] Prüfen ob Ordner existiert
Das geht so nicht. GetFileAttributes liefert dir eine Bitmaske zurück. Das heißt du musst prüfen, ob das entsprechende Bit gesetzt ist oder nicht.
In Delphi würde das so aussehen:
Delphi-Quellcode:
In C:
if (Attribut and FILE_ATTRIBUTE_DIRECTORY = FILE_ATTRIBUTE_DIRECTORY) then
// existiert else // nicht da
Code:
Für den C-Code lege ich meine Hand aber nicht ins Feuer, da bin ich nicht so firm drin.
if (Attribut && FILE_ATTRIBUTE_DIRECTORY == FILE_ATTRIBUTE_DIRECTORY)
{ // existiert } else { // nicht da } |
Re: [C++] Prüfen ob Ordner existiert
Grade probiert, geht leider nicht.
Naja, jetzt ist es eh zu spät und der Prof hat das Programm bekommen^^ |
Re: [C++] Prüfen ob Ordner existiert
Zitat:
|
Re: [C++] Prüfen ob Ordner existiert
Die erste Überprüfung von dir ist eigentlich richtig: Bitweises and mit dem &-Operator und das == FILE_ATTRIBUTE_DIRECTORY entfällt, da es ein einfaches Flag ist. Dein Fehler liegt vermutlich darin, dass GetFileAttributes DWord(-1) zurückgibt, falls ein Fehler (z.B. ungültiger Dateiname) aufgetreten ist. In DWord(-1) sind natürlich alle Flags gesetzt.
|
Re: [C++] Prüfen ob Ordner existiert
Zitat:
Code:
[edit] :oops: Das stand ja schon im Ausgangspost. [/edit]
if (Attribut & FILE_ATTRIBUTE_DIRECTORY)//nur ein &, da Binärvergleich
|
Re: [C++] Prüfen ob Ordner existiert
Zitat:
ist Attribut!=0 (TRUE) wird geprüft, ob FILE_ATTRIBUTE_DIRECTORY == FILE_ATTRIBUTE_DIRECTORY. Da die 2.Bedingung immer zutrifft, wird sie wohl wegoptimiert: bleibt als Bedingung: (Attribute!=0) und die wird auch bei nicht-ordnern true zurück geben. die in der Fragestellung gepostete Bedingung sollte richtig sein. müsste dann nach Apollonius nur noch etwas erweitert werden:
Code:
oder auch:
if(Attribute>=0 && Attribut&FILE_ATTRIBUTE_DIRECTORY) return 1;return 0;
Code:
return Attribute>=0 && Attribut&FILE_ATTRIBUTE_DIRECTORY;
|
Re: [C++] Prüfen ob Ordner existiert
Danke für die Antworten, wieder was gelernt.
|
Re: [C++] Prüfen ob Ordner existiert
wie gesagt, meine C-Kenntnisse sind nicht die besten. ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:43 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