marcov hat geschrieben:FPC hat 2 boolean typen, und deren Logic kann man nicht ändern.
ich weiß nicht, bin auf jeden Fall mächtig verwirrt.
Das ist doch nur Theorie. Sobald man damit zu tun hat, dass hinter dem Typen Boolean mit seinen beiden Zuständen auch nur nur Bits und Bytes stecken, stößt man auf das Problem, dass
(1) der Typ Boolean 1 Byte groß ist
(2) 1 Byte aus 8 Bits mit insgesamt 256 möglichen Werten besteht.
Also muss man die 256 Werte irgendwie den beiden Boolean-Werten zuordnen. Da verliert eine Aussage "TRUE = 1" ihren Sinn. Was ist, wenn in dem Byte, das als BOOLEAN umgewandelt wird, zufällig der Wert 2 steht? Wenn dies streng geprüft würde, dann müsste das folgende Programm in den letzten beiden Zeilen abstürzen. - Macht es nicht, auch mit allen Checks gesetzt. Wenn TRUE nur 1 sein kann, wieso "weiß" das TRUE von "boolean(2)" dann noch, dass es aus der 2 erzeugt worden ist?
Code: Alles auswählen
program Project1;
begin
WriteLn(TRUE); // --> TRUE
WriteLn(ord(TRUE)); // --> 1
WriteLn(boolean(2)); // ---> TRUE
WriteLn(ord(boolean(2))); // ---> 2
end.
Ich denke, das einzige, das bei der binären Darstellung von Boolean's sicher ist, dass der Wert 0 dem Boolean-Wert FALSE entspricht, und alle anderen Werte TRUE sind