SmartPascal
$B
Compiler Directive
Whether to short cut and and or operations
1   {$B-}
2   {$B+}
Description
The $B compiler directive tells Delphi whether to continue a multi argument boolean expression evaluation when the result is known before evaluation completes.
 
{$B-} (default) means no continue {$B+} means continue checking
 
For example, by default, with an expression :
 
expr1 and expr2
 
expr2 is not evaluated if expr1 is false. With {$B+}, checking would have continued.
 
The example illustrates a normal use of the default.
Notes
$B is equivalent to $BoolEval.

This directive can be used multiple times within your code.

The default value is $B-
Related commands
$BoolEval Whether to short cut and and or operations
And Boolean and or bitwise and of two arguments
If Starts a conditional expression to determine what to do next
Or Boolean or or bitwise or of two arguments
 
Example code : Checking string contents
var
  FullString, EmptyString : string;

begin
  FullString  := 'Fred';
  EmptyString := '';

  // Set full checking OFF
  {$B-}

  // Check the 4th character of each string
  if (Length(FullString) >= 4) and (FullString[4] = 'd')
  then ShowMessage('FullString 4th character is d')
  else ShowMessage('FullString 4th character is NOT d');

  if (Length(EmptyString) >= 4) and (EmptyString[4] = 'd')
  then ShowMessage('EmptyString 4th character is d')
  else ShowMessage('EmptyString 4th character is NOT d');

  // Set full checking ON
  {$B+}

  // Check the 4th character of each string
  if (Length(FullString) >= 4) and (FullString[4] = 'd')
  then ShowMessage('FullString 4th character is d')
  else ShowMessage('FullString 4th character is NOT d');

  // Now we must protect the code from errors
  try
    if (Length(EmptyString) >= 4) and (EmptyString[4] = 'd')
    then ShowMessage('EmptyString 4th character is d')
    else ShowMessage('EmptyString 4th character is NOT d');
  except
    on E : EAccessViolation do
    ShowMessage(E.Message);
  end;

end;

Show full unit code
   The following is typical of the output from the above code:
  
   FullString 4th character is d
   EmptyString 4th character is NOT d
   FullString 4th character is d
  
   Access violation at address 00442196 in module 'PROJECT1.EXE'.
   Read of address FFFFFFFF