AGB  ·  Datenschutz  ·  Impressum  







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

[C++] Prüfen ob Ordner existiert

Ein Thema von Aurelius · begonnen am 28. Jul 2008 · letzter Beitrag vom 29. Jul 2008
Antwort Antwort
Benutzerbild von Aurelius
Aurelius

Registriert seit: 29. Jan 2007
Ort: Erfurt
753 Beiträge
 
Delphi 7 Personal
 
#1

[C++] Prüfen ob Ordner existiert

  Alt 28. Jul 2008, 17:37
Hallo DPler

mit folgendem Code möchte ich prüfen ob ein Ordner existiert:
Code:
dwAttr = GetFileAttributes(p_csAnhang);
if( dwAttr & FILE_ATTRIBUTE_DIRECTORY)
{
   return true;
}
else
{
   return false;
}
Allerdings kommt dabei immer true raus, auch wenn der Ordner nicht existent ist. Bei der Überprüfung
Code:
dwAttr == FILE_ATTRIBUTE_DIRECTORY
hingegen wird manchmal false zurückgegeben, auch wenn der Ordner existent ist.

Ich hoffe ihr könnt mir wieder einmal helfen
Jonas
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: [C++] Prüfen ob Ordner existiert

  Alt 28. Jul 2008, 22:58
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:
if (Attribut and FILE_ATTRIBUTE_DIRECTORY = FILE_ATTRIBUTE_DIRECTORY) then
  // existiert
else
  // nicht da
In C:
Code:
if (Attribut && FILE_ATTRIBUTE_DIRECTORY == FILE_ATTRIBUTE_DIRECTORY)
{
  // existiert
}
else
{
  // nicht da
}
Für den C-Code lege ich meine Hand aber nicht ins Feuer, da bin ich nicht so firm drin.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Aurelius
Aurelius

Registriert seit: 29. Jan 2007
Ort: Erfurt
753 Beiträge
 
Delphi 7 Personal
 
#3

Re: [C++] Prüfen ob Ordner existiert

  Alt 28. Jul 2008, 23:36
Grade probiert, geht leider nicht.

Naja, jetzt ist es eh zu spät und der Prof hat das Programm bekommen^^
Jonas
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: [C++] Prüfen ob Ordner existiert

  Alt 28. Jul 2008, 23:44
Zitat von xX0815Xx:
Grade probiert, geht leider nicht.
WAS geht nicht? Was sollen wir mit deiner Fehlerbeschreibung anfangen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: [C++] Prüfen ob Ordner existiert

  Alt 28. Jul 2008, 23:51
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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#6

Re: [C++] Prüfen ob Ordner existiert

  Alt 29. Jul 2008, 08:31
Zitat von Luckie:
Code:
if (Attribut && FILE_ATTRIBUTE_DIRECTORY == FILE_ATTRIBUTE_DIRECTORY)
Mein C ist auch mehr als eingerostet, aber AFAIR könnte es so gehen:
Code:
if (Attribut & FILE_ATTRIBUTE_DIRECTORY)//nur ein &, da Binärvergleich
[edit] Das stand ja schon im Ausgangspost. [/edit]
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
new32

Registriert seit: 10. Mai 2005
160 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: [C++] Prüfen ob Ordner existiert

  Alt 29. Jul 2008, 10:53
Zitat von Luckie:
Code:
if (Attribut && FILE_ATTRIBUTE_DIRECTORY == FILE_ATTRIBUTE_DIRECTORY)
Die Bedingung wird von links nach rechts abgearbeitet:

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:
if(Attribute>=0 && Attribut&FILE_ATTRIBUTE_DIRECTORY) return 1;return 0;
oder auch:

Code:
return Attribute>=0 && Attribut&FILE_ATTRIBUTE_DIRECTORY;
~?&/%§$§%\&?~
8)
  Mit Zitat antworten Zitat
Benutzerbild von Aurelius
Aurelius

Registriert seit: 29. Jan 2007
Ort: Erfurt
753 Beiträge
 
Delphi 7 Personal
 
#8

Re: [C++] Prüfen ob Ordner existiert

  Alt 29. Jul 2008, 12:22
Danke für die Antworten, wieder was gelernt.
Jonas
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: [C++] Prüfen ob Ordner existiert

  Alt 29. Jul 2008, 22:50
wie gesagt, meine C-Kenntnisse sind nicht die besten.
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 03:59 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