[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]