Jupp, davon kanns du ausgehen (nja, zumindestens die Feldausrichtung im Record dieses hergibt)
drum verwende ich oftmals ganz gern packed Records und Arrays
Delphi-Quellcode:
Rec = record
case x: Integer of
0: (p1, p2, p3, p4: TPoint);
1: (p: Array[1..4] of TPoint);
end;
ohne Feldnahmen im CASE wird der dort angegebene Type zur Unterteilng er einzelnen überlagerten Teile verwendet
Delphi-Quellcode:
Rec = record
case Boolean of
false: (p1, p2, p3, p4: TPoint);
true: (p: Array[1..4] of TPoint);
end;
// oder
MySet = (msPoints, msPointArray);
Rec = record
case Boolean of
msPoints: (p1, p2, p3, p4: TPoint);
msPointArray: (p: Array[1..4] of TPoint);
end;
bezüglich der "Variable"
Delphi-Quellcode:
Rec = record
case x: Integer of
0: (p1, p2, p3, p4: TPoint);
1: (p: Array[1..4] of TPoint);
end;
// entspricht
Rec = record
x: Integer;
case Integer of
0: (p1, p2, p3, p4: TPoint);
1: (p: Array[1..4] of TPoint);
end;
// bzw.
Rec = record
x: Integer;
p1, p2, p3, p4: TPoint;
end;
in diesem Fall könnte man X z.B. dazu verwenden welche Defiinition verwendet wird.
vorallem nützlich, wenn man da unterschiedliche ypen einbaut
Delphi-Quellcode:
Rec = record
case verwendet: Integer of
0: (s: string);
1: (i: integer);
2: (b: byte);
end;