Moin Richard,
Zitat von
richard_boderich:
aber ich kenne nicht die entsprechenden binaerwerte für die delhi fileattr konstanten
womit Du schon einmal eine wunderbare Begründung geliefert hättest, warum man solche Konstanten mit or statt mit + verknüpft.
In Deinem Falle hast Du faAnyFile zu den anderen Konstanten addiert. faAnyFile ist aber schon die Kombination aus den anderen, wodurch ein Wert entstanden ist, mit dem die zugrunde liegende
API Funktion, vermutlich, nichts anfangen kann.
Für FindFirst stehen die Werte der Konstanten übrigens in der Delphi Hilfe von D5 Pro und D6
PE. Bei D7
PE stehen sie nicht. Warum auch immer Borland das jetzt eingespart hat
Es hat sich für mich übrigens als ganz sinnvoll herausgestellt immer mit faAnyFile (auf die anderen kannst Du dann ja verzichten) zu suchen, und anschliessend das gewünschte zu filtern.
Das Problem mit der Abfrage (if sr.attr = ...) ergibt sich dadurch, dass eben, im Falle eines zusätzlich mit einem oder mehreren anderen Attributen versehenen Verzeichnisses, der Wert nicht gleich dem eines einzelnen Attributes ist.
Durch die Verknüpfug die Jim durchführt hat, werden die Bits aus den Attributen ausmaskiert, die die Kennzeichnung für Verzeichnis darstellen (es ist zwar nur ein Bit, aber wenn man die Werte nicht kennt muss man auch die Möglichkeit in Betracht ziehen, dass es mehrere sind).
Ist der Wert der ausmaskierten Bits gleich der Maske hast Du eine Übereinstimmung.
Übrigens zählst Du auch die Verzeichnisse . und .. mit.
Ist das gewollt?