DelphiBasics
$B
Compiler Directive
Whether to short cut and and or operations
{$B-}
1
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
$BoolEvalWhether to short cut and and or operations
AndBoolean and or bitwise and of two arguments
IfStarts a conditional expression to determine what to do next
OrBoolean or or bitwise or of two arguments
 Download this web site as a Windows program.




 
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
 
Delphi Programming © Neil Moffatt . All rights reserved.  |  Home Page