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.

How would that work? "name" is just a string which you can assign an arbitrary value to. The compiler cannot store additional information in it.

The detection of the correct variant is completely up to the programmer. There is no help by the compiler.

Therefore, there is absolutly no difference between

TFigure = record
          X : TShapeList;
          case TShapeList of
             Rectangle: (Height, Width: Real);
             Triangle: (Side1, Side2, Angle: Real);
             Circle: (Radius: Real);
             Ellipse, Other: ();
             end;

and

TFigure = record
          case X : TShapeList of
             Rectangle: (Height, Width: Real);
             Triangle: (Side1, Side2, Angle: Real);
             Circle: (Radius: Real);
             Ellipse, Other: ();
             end;

It ends up in the same record and also the programmer does not see any difference. He can store whatever he wants in X in both cases. It has no influences on the variants.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to