Einzelnen Beitrag anzeigen

Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

Boolsche Datentypen, die mehr als 1 Byte belegen

  Alt 12. Jan 2006, 22:50
Hallo,

ja, ich habe eine Frage zu den einfachen Datentypen LongBool, Bytebool und WordBool. Mir ist der Sinn dieser Datentypen nicht klar.

In Dietmars Tutorial steht dazu folgendes:

Zitat von Dietmar:
Bei einem normalen Boolean ist es so, daß "True" den Ordinalwert "1" hat. Bei ByteBool, WordBool und LongBool hat "True" normalerweise den Ordinalwert "-1".
Einige Windows-API-Aufrufe liefern ein Ergebnis vom Typ BOOL. Dabei gilt für den einen Fall "Ergebnis=0" und im anderen Fall "Ergebnis<>0". Ein Wert ungleich 0 muß aber nicht unbedingt 1 oder -1 sein! Das Ergebnis: die Variable ist bei <>0 möglicherweise weder true noch false!
In der Online Hilfe steht dazu:

Zitat von OH:
Es gibt vier vordefinierte Boolesche Typen: Boolean, ByteBool, WordBool und LongBool. In der Praxis wird in erster Linie der Typ Boolean verwendet. Die anderen Typen dienen der Kompatibilität zu anderen Sprachen und Betriebssystembibliotheken.

Eine Boolean-Variable belegt ebenso wie eine ByteBool-Variable ein Byte Speicherplatz. Eine WordBool-Variable belegt zwei (ein Word) und eine LongBool-Variable vier Bytes (zwei Word).
Einmal ganz konkret: Wofür benötigt man diese Datentypen?

Möchte ich Wahrheitswerte haben, reicht mir ein normaler Boolean, der mir true / false (0 / 1) bereitstellt, was 1 Byte Speicherplatz belegt. Wieso soll ich für einen Boolean dann 2 oder sogar stolze 4 Byte, also 4 mal so viel Speicherplatz, belegen lassen? Möchte ich andere Werte als true und false dann greife ich sicher nicht auf einen boolschen Datentyp zu, sondern nehme Byte oder ähnliches.

Klärt mich bitte auf. Eigentlich gehört das ja zu den Delphi Grundlagen, nur konnte ich nirgendwo den Sinn und Zweck dieser Datentypen finden.

Insbesondere das hier:

Zitat von OH:
Die anderen Typen dienen der Kompatibilität zu anderen Sprachen und Betriebssystembibliotheken.
Ist mir unklar. Wieso gibt es generell andere boolsche Datentypen?
  Mit Zitat antworten Zitat