Break-statement in TP 5.5

Hi experts
i'm using TB 5.5 (free pascal)
the problem is;
i need to write a function who compares two arrays of 4 shortint to see if 2 numbers are the same
take for example those 2 arrays
1 2 3 4
2 2 2 8

i wrote this code

FUNCTION Case1:Boolean;
Var Temp, i, j:ShortInt;
Begin
Temp:=0;
FOR i:=1 TO 4 DO
 FOR j:=1 TO 4 DO
  IF Digit[i]=Guess[j] THEN
   Temp:=Temp+1;
IF Temp>=2 THEN Case1:=TRUE;
IF Temp<2 THEN Case1:=FALSE;
End;

the problem is that because there are in the second array more than one '2' the output = TRUE but that shouldn't be
because there is only 1 number in the two arrays who are the same

i thaught i could use the BREAK-statement like this

FUNCTION Case1:Boolean;
Var Temp, i, j:ShortInt;
Begin
Temp:=0;
FOR i:=1 TO 4 DO
 FOR j:=1 TO 4 DO
  IF Digit[i]=Guess[j] THEN
   begin
   Temp:=Temp+1;
   BREAK;
   end;
IF Temp>=2 THEN Case1:=TRUE;
IF Temp<2 THEN Case1:=FALSE;
End;

from an algoritmic point of view that should be good I THINK
but the BREAK statement (which is used to abort the actual loop) doesn't work in TP 5.5
could someone help me out ???
 thanks in advance

Elvis
Elvis1Asked:
Who is Participating?
 
Elvis1Author Commented:
SORRY EVERYONE
i found the answe myself
to "break" a while loop i did

FOR i:=1 TO 10 DO
 Begin
 WriteLn(i);
 IF i=5 THEN i:=10;
 End;

The Output is
1
2
3
4
5

sorry
Elvis
0
 
Elvis1Author Commented:
or maybe you can just give me a way to go out or to skip the current loop
an alternative to the BREAK statement

Elvis
0
 
Wim ten BrinkSelf-employed developerCommented:
Doesn't matter. However, personally I consider the use of the Break statement something that you should avoid at all costs. Like the Goto statement and some other statements the Break statement makes the source a bit less readable.
Instead of a for-next loop you could also use a While-Do loop like this:

var
  I:Integer;
  EndOfLoop: Boolean;
begin
  I := 0;
  EndOfLoop := False;
  while (I < 10) and not EndOfLoop do begin
    I := I + 1;
    WriteLn(I);
    if (I=5) then begin
      EndOfLoop := True;
    end else begin
      // Perhaps do some other code.
    end;
  end;
end;
0
 
Elvis1Author Commented:
thanks i will remember
but now i got it
thanks
Elvis
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.