Name
$BoolEval Compiler Directive
Syntax
{$B-} // default
{$BoolEval Off} // default
{$B+}
{$BoolEval On}Scope
Local
Description
By default, the
and and or operators do not
evaluate their right-hand operands if the expression result is known
from the left-hand operand. This is known as
short-circuiting the expression. C, C++, and
Java programmers are familiar with short-circuit logical operators.
If you prefer the traditional Pascal use of the
and and or operators, you can
disable short-circuit operators with the
$BoolEval
compiler directive. Note that most
Delphi programmers prefer using short-circuit operators because they
produce code that is easier to read.
Tip
Most Delphi programs work correctly only when
$BoolEval is disabled. Do not enable this option
unless you know the code does not rely on short-circuit operators.
Example
// Ensure that a path ends with a backslash.
// The first approach uses the short-circuit AND operator.
{$BoolEval Off}
if (Length(Path) > 0) and (Path[Length(Path)] <> '\') then
Path := Path + '\';
// This is how you must write the same expression without
// using the short-circuit operator.
{$BoolEval On}
if Length(Path) > 0 then
if Path[Length(Path)] <> '\' then
Path := Path + '\';See Also
| And Keyword, Boolean Type, Or Keyword |
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access