Zitat von
wido:
Allerdings bevorzuge ich im Zweifelsfall dann doch eher die dokumentierte Methode alleine schon deshalb um eine gewisse Zukunftssicherheit für meinen Code zu gewährleisten.
Rofl - ehrlich - schon allein dadurch baust du dir selber eine Unsicherheit für die Zukunft. Schon allein da CodeGear diesen Fehler mit spätestens D7 in der Hilfe umformuliert hat und die Abfrage von Attributen mit dem AND Operator erklärt.
Zitat:
Um ein Attribut zu testen, führen Sie eine AND-Verknüpfung des Attr-Feldes mit der Attributkonstante durch. Besitzt die Datei das betreffende Attribut, ist der zurückgegebene Wert größer als 0. Wurde beispielsweise eine verborgene Datei gesucht, ergibt der folgende Ausdruck true:
Delphi: (SearchRec.Attr and faHidden) <> 0.
C++: (SearchRec.Attr & faHidden) != 0.
Mir kommt es eher so vor, als wenn CodeGear für dich unfehlbar ist und du blind folgst. So lange man dir nicht sagt "stehen bleiben", gehst du weiter auf die Klippe zu, wider besserem Wissens.
Zitat von
wido:
CodeGear möchte, daß man die Werte addiert. Es ist so von ihnen dokumentiert und sie selbst handhaben es innerhalb des
VCL Codes ebenfalls so.
Das Beispiel wurde spätestens mit Delphi 7 aus der Hilfe entfernt. Ansonsten sehe ich keine Stelle wo CodeGear das selbst so macht. Und in den
VCL Codes nutzen sie immer "or", "and not" bzw. "and" im Zusammenhang mit diesen Attributflags. Nirgendwo, wirklich nirgendwo, habe ich diese Addition in den
VCL Quellen im Zusammenhang mit diesen Attributflags gefunden.
FileIsReadOnly, FileSetReadOnly, etc machen dies so.
Das beste Beispiel ist sogar die erste Zeile der FindFirst Implementation von Codegear:
faSpecial = faHidden or faSysFile or faVolumeID or faDirectory;
(Copyright (c) 1995-2002 Borland Softwrare Corporation)
Der Schreibfehler ist Original!
Ich kann diese sture Haltung bezüglich überzeugender Argumente wirklich nicht verstehen - und ich finde über sowas muss man diskutieren. Schon grundlegend weil wir hier Informationen anbieten und damit verbreiten von denen viele andere lernen - oftmals still und leise durch die SuFu, google, etc. Von daher kann ich es nicht mit mir vereinbaren etwas gut zu heissen was definitiv und "bewiesener Maßen" falsch ist. Als das größte deutschsprachige Delphi-Forum und zusätzlich zu Delphi als Lehrsprache in den Schulen haben wir eine gewisse Verantwortung und somit muss man darüber diskutieren.