[fpc-pascal] Re: Is this if /else syntax wrong?
    Guillermo Martínez Jiménez 
    gmartinez at burdjia.com
       
    Thu Jul  1 10:38:43 CEST 2010
    
    
  
> procedure TfrmHometel.SetSplitterSizes;
> var
>  i: integer;
> begin
>  for i:=3D 0 to ComponentCount - 1 do
>  begin
>   if Components[i] is TSplitter then
>   begin
>     with TSplitter(Components[i]) do
>     begin
>      if Cursor =3D crHSplit then
>        Width :=3D 7
>      else if Cursor =3D crVSplit then
>        Height :=3D 7;
>      ; // <-- removing this semicolon results in a syntax error. Is it
> syntax error some kind of extra strict compiler check.
>      Color :=3D clBlue;
>     end;
>   end;
>  end;
> end;
Compare with next:
      if Cursor =3D crHSplit then
        Width :=3D 7
      else
        if Cursor =3D crVSplit then
          Height :=3D 7; // <-- This semicolon is for the "if".
      ; // <-- This semicolon is for the "else".
Is like this:
IF ... THEN
BEGIN
  ...
END
ELSE BEGIN
  IF ... THEN
  BEGIN
    ...
  END;  // <-- This END is for the "IF".
END;  // <-- This END is for the "ELSE".
I recommend to use "BEGIN ... END" blocks in nested "IF" always to
prevent this kind of mistakes.
Regards,
Guillermo "Ñuño" Martínez.
    
    
More information about the fpc-pascal
mailing list