Moin Michael,
die
Unit, die Du da hast, enthält eine böse Macke:
Flags sollte man niemals mit + verknüpfen, sondern mit OR.
Wenn man sich die Zahlenwerte dahinter schreibt, und mal nachrechnet, wird auch klar warum:
Delphi-Quellcode:
Attr := 0;
if ffaReadOnly in FileAttr then Attr := Attr + faReadOnly; // Wert: $00000001
if ffaHidden in FileAttr then Attr := Attr + faHidden; // Wert: $00000002
if ffaSysFile in FileAttr then Attr := Attr + faSysFile; // Wert: $00000004
if ffaVolumeID in FileAttr then Attr := Attr + faVolumeID; // Wert: $00000008
if ffaDirectory in FileAttr then Attr := Attr + faDirectory; // Wert: $00000010
if ffaArchive in FileAttr then Attr := Attr + faArchive; // Wert: $00000020
if ffaAnyFile in FileAttr then Attr := Attr + faAnyFile; // Wert: $0000003F
Werden alle Werte angegeben, so ergibt sich beim aufsummieren der Wert $7E, werden die Werte verknüpft, so ist es $3F.
faAnyFile entspricht nämlich schon der Oder-Verknüpfung aller übrigen Werte. Legt man diesen Wert noch einmal mit OR-Verküpft drauf, passiert nichts weiter, bei + erhält man einen ungültigen Wert.
(Ich weiss, in der Delphi-Hilfe steht es auch so, aber dadurch wird es nicht richtiger
)