Zitat von Frank Church <vfcli...@gmail.com>:
I will be upgrading to 2.4.0 soon.
It shouldn't be an error then.
2010/7/1 Guillermo Martínez Jiménez <gmarti...@burdjia.com>
> 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".
No. A semicolon ends *all* open if/if-else/do statements.
The second semicolon is an empty statement - a 'no operation'.
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.
In general I agree, but in this case there are no nested ifs, so it
won't help here.
Mattias
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal