Директива $BoolEval компілятора Delphi чи скорочуються обчислення під час операцій or або and.
- {$BoolEval Off}
- {$BoolEval On}
Директива компілятора $BoolEval каже Delphi, чи продовжити обчислення багатоаргументного булева виразу чи ні, коли результат заздалегідь відомий.
- {$BoolEval Off} (значення за замовчуванням) означає не продовжувати.
- {$BoolEval On} означає продовжувати перевірку.
Наприклад, за замовчуванням, з виразом:
expr1 and expr2
expr2 не буде обчислюватися, якщо expr1 є помилковим. З {$BoolEval On}, перевірка продовжилася б.
Приклад ілюструє нормальне використання значення за замовчуванням.
Примітка.
$BoolEval еквівалентна $B.
Ця директива може використовуватися в межах вашого коду багато разів.
$BoolEval Off є значенням за замовчуванням.
Директива компілятора $BoolEval: Перевірка змісту рядка
var
FullString, EmptyString : string;
begin
FullString := 'Fred';
EmptyString := '';
// Вимкнення повної перевірки
{$BoolEval Off}
// Перевірка 4-го символу кожного рядка
if (Length(FullString) >= 4) and (FullString[4] = 'd')
then ShowMessage('4-ий символ FullString - d')
else ShowMessage('4-ий символ FullString НЕ d');
if (Length(EmptyString) >= 4) and (EmptyString[4] = 'd')
then ShowMessage('4-ий символ EmptyString - d')
else ShowMessage('4-ий символ EmptyString НЕ d');
// Ввімкнення повної перевірки
{$BoolEval On}
// Перевірка 4-го символу кожного рядка
if (Length(FullString) >= 4) and (FullString[4] = 'd')
then ShowMessage('4-ий символ FullString - d')
else ShowMessage('4-ий символ FullString НЕ d');
// Тепер ми повинні захистити код від помилок
try
if (Length(EmptyString) >= 4) and (EmptyString[4] = 'd')
then ShowMessage('4-ий символ EmptyString - d')
else ShowMessage('4-ий символ EmptyString НЕ d');
except
on E : EAccessViolation do
ShowMessage(E.Message);
end;
end;
Результат
Наступне типово для виведення вищезгаданого коду:
4-ий символ FullString - d
4-ий символ EmptyString НЕ d
4-ий символ FullString - d
Access violation at address 00442196 in module 'PROJECT1.EXE'.
Read of address FFFFFFFF
Подібні функції, процедури та команди
$B — чи скорочуються обчислення при операціях or або and.
And — булев and або порозрядний and двох аргументів.
If — починає умовний вираз, щоб вирішити, що робити далі.
Or — булевська or або порозрядна or двох аргументів.