[Back to DATATYPE SWAG index]  [Back to Main SWAG index]  [Original]

{
  This is a small Unit I wrote when I got tired of writing great gobs
  of nested "if thens" or pages of parenthetic blobs.
  With this Unit you can Write as many Boolean expressions
  as you like as a block of Boolean.
  True mode:
       all interior expressions must be True For the block to be True.
       if one interior expression is False then the block is False.
  False mode:
       all interior expressions must be False For the block to be False.
       if one interior expression is True then the block is True.
  Any ideas on enhancing it?
}
Uses
  Crt;

Const
  AllBool  : Boolean = True;
  BoolMode : Boolean = True;

Var
  S : String;

Procedure SetBool(Mode : Boolean);
begin
  AllBool  := Mode;
  BoolMode := Mode;
end;

Procedure Bool(Expression : Boolean);
begin
  if ((BoolMode) and (not Expression)) then
    AllBool := False;
  if ((not BoolMode) and (Expression)) then
    AllBool := True;
end;

begin
  ClrScr;
  S := '1 This is the best there is \.';      {init. String}
  SetBool(True);                {set checkmode For all True}
  Bool( Length(s) > 4 );        {series of Boolean expressions}
  Bool( s[3] in ['A'..'Z'] );
  Bool( Ord(s[1]) - 48 < 10 );
  Bool( Pos('This', s) > 0 );
  Bool( s[Length(s)] = '.');
  Bool( 2 + 3 = 5);
  if AllBool then
    Writeln('1. All expressions are True')
  else
    Writeln('1. At least one expression is False');

  SetBool(False);              {set checkmode For all False}
  Bool( Length(s) > 44 );      {series of Boolean expressions}
  Bool( s[3] in ['a'..'z'] );
  Bool( Ord(s[1]) - 48 > 10 );
  Bool( Pos('This', s) = 0 );
  Bool( s[Length(s)] = 'g');
  Bool( 2 + 3 = 4);
  if not AllBool then
    Writeln('2. All expressions are False')
  else
    Writeln('2. At least one expression is True');
  Readln;
end.

[Back to DATATYPE SWAG index]  [Back to Main SWAG index]  [Original]