Четыре логических типа определены в Delphi: логический, байтбол, Wordbool и Longbool. Последние три логических типа представлены для совместимости с другими языками.
Количество памяти занимает эти четыре типа логических значений следующим образом:
Логический 1 байт
Bytebool 1 байт
Wordbool 2 байт (1 слово)
Longbool 4 байт (2 слова)
Для Bytebool значения трех типов истинных констант, Wordbool и Longbool, являются ненулевыми, а false-ноль, что может быть подтверждено функцией ORD;
Для логического типа значение истинной константы составляет 1, а false - ноль. В контексте ожидания логических значений компилятор преобразует ненулевые значения Bytebool, Wordbool и Longbool в True.
Тем не менее, логические выражения и целое число/реальные несовместимы в Delphi. Следующая таблица сравнивает сходства и различия между логическим и байтбул/Wordbool/Longbool:
Логический
Ложь <истинно
Ord (false) = 0
Ord (true) = 1
Succ (false) = true
Pred (true) = false
BooltoStr (true) = -1 // Эта функция очень ненормальная
BooltoStr (false) = 0
Bytebool, Wordbool, Longbool
Ложь <> true
Ord (false) = 0
Ord (true) <> 0
Succ (false) = true
Pred (false) = true
Функция BooltoStr является наиболее необъяснимой. Прототип функции:
функция BooltoStr (b: boolean; UseBoolStrs: boolean = false): String;
Следующая таблица является правилами конверсии для функций:
Buseboolstrsvalue верховой строки
TrueFalse'-1 '
Верно, верно первое значение массива TrueBoolStrs (по умолчанию, «true»)
Ложный ложь '0'
Неверно Истину первое значение массива falseboolstrs (по умолчанию, «false»)