Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
14. Jan 2009
seit 'ner Weile (ich glaub Delphi 2006) geht auch Folgendes:
TRec = record
p1, p2, p3, p4: TPoint;
private
function ReadP(index: integer): TPoint;
procedure WriteP(index: integer; p: TPoint);
public
property p: TPoint read ReadP write WriteP;
procedure ReadP3: TPoint;
end;
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
14. Jan 2009
Jupp, davon kanns du ausgehen (nja, zumindestens die Feldausrichtung im Record dieses hergibt)
drum verwende ich oftmals ganz gern packed Records und Arrays
Rec = record
case x: Integer of
0: (p1, p2, p3, p4: TPoint);
1: (p: Array of TPoint);
end;
ohne Feldnahmen im CASE wird der dort angegebene Type zur Unterteilng er einzelnen überlagerten Teile verwendet
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
14. Jan 2009
wie zu sehn ... ist es doch recht einfach :angel:
type
Rec = record
case Integer of
0: (p1: TPoint;
p2: TPoint;
p3: TPoint;
p4: TPoint);
1: (p: Array of TPoint);
end;
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
14. Jan 2009
mal ein praktisches Beispiel:
type
LongRec = packed record
case Integer of
0: (Lo, Hi: Word);
1: (Words: array of Word);
2: (Bytes: array of Byte);
end;
Weiteres siehe Delphihilfe
Abschnitt: Variante Teile in Record-Typen (auch zu finden über Abschnitte Record-Typen oder Record-Konstanten)