Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: [gelöst] TFindFile-Komponente - Nur Verzeichnisse listen

  Alt 1. Jan 2008, 22:42
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 )
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat