[fpc-pascal] Case in Record
Anton Tichawa
anton.tichawa at chello.at
Tue Oct 6 19:16:31 CEST 2009
On Tue, 2009-10-06 at 23:37 +0800, 章宏九 wrote:
> Thank you. I saw all the examples you gave, but I still cannot master
> how to use a variant record without a specified tag.
>
> For example:
> type
> TShapeList = (Rectangle, Triangle, Circle, Ellipse, Other);
> TFigure = record
> case TShapeList of
> Rectangle: (Height, Width: Real);
> Triangle: (Side1, Side2, Angle: Real);
> Circle: (Radius: Real);
> Ellipse, Other: ();
> end;
> var
> Figure1: TFigure;
>
AFAIK there has to be some fixed part before the variant, e. g.
TFigure = record
name: string;
case TShapeList of
Rectangle: (Height, Width: Real);
Triangle: (Side1, Side2, Angle: Real);
Circle: (Radius: Real);
Ellipse, Other: ();
end;
The program could then determine from the contents of the "name" field
which variant is used in a certain instance. This saves memory ("TShapeList"
has no memory reserved at run time), but the program is responsible
to correctly identify the variant using the "name" field.
Anton
More information about the fpc-pascal
mailing list