Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

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

Re: Effizientes Arbeiten mit Bitmasken

  Alt 3. Jul 2007, 13:06
Moin Deddy,

ich hätte da auch noch zwei kleine Ergänzungen
Zum einen struktureller Natur:
Da das Abfragen/Setzen/Löschen wohl den Regelfall darstellen, Negieren wohl nur sehr selten vorkommt (ich kann mich nicht erinnern das bei Flags je gebraucht zu haben), halte ich es für sinnvoll dies erst am Ende zu nennen.

Zum anderen:
Ich sehe oft, dass Flags mit + und - bearbeitet werden, was sehr leicht zu Fehlern führen kann.
Der Grund für mögliche Fehler ist recht einfach:
Wenn eine Konstante bereits mehrere Flags kombiniert (Beispiel: faAnyFile, wie es bei FindFirst benutzt wird) erhält man durch Addition/Subtraktion mit anderen Flags andere Werte als erwartet, wohingegen die Verwendung von or/and not sich hier neutral verhält.
Diese unerwarteten Werte können jetzt verschiedene Effekte erzeugen:
  • Der Funktionsaufruf schlägt komplett fehl (i.d.R. mit Fehler 87, falscher Parameter).
    Das wäre nicht weiter tragisch, man muss halt den Fehler finden.
  • Man fragt etwas ab, und erhält nicht das gewünschte Ergebnis.
    Je nachdem, inwieweit das Ergebnis das Programm steuert, wird auch dieses Fehler in erster Linie mal ärgerlich sein, ansonsten aber nicht weiter schlimm.
  • Der Funktionsaufruf macht etwas ganz anderes als man möchte. Es wird u.U. eine Datei neu erstellt, obwohl man sie nur öffnen wollte.
    Das nur mal als fiktives Beispiel, aber es zeigt, wohin es führen kann.
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