[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