implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
type
TSampleUnion1 = record
sVal: String[20];
case TagName: Integer of // 可変部はほかのフィールドより後
0: (iVal: Integer);
1: (uVal: Cardinal);
end;
TSampleUnion2 = record
sVal: String[20];
case Integer of // タグ名は省略可能
0: (iVal: Integer);
1: (uVal: Cardinal);
end;
TSampleUnion3 = record
sVal: String[20];
case TagName: Boolean of // 順序型なら定義可能
True : (iVal: Integer);
False: (uVal: Cardinal);
end;
TSampleUnion4 = record
sVal: String[20];
case Boolean of
True : (iVal: Integer);
False: (uVal: Cardinal;
bVal: Byte;
cVal: Char); // 複数のフィールドも定義可能
end;
TSampleUnion5 = record // 可変レコード部だけ別に定義すれば……↓
case Boolean of
True : (iVal: Integer);
False: (uVal: Cardinal);
end;
TSampleRecord = record
sVal: String[20];
uni5: TSampleUnion5; // 可変レコード型なら真ん中に定義可能
iVal: Integer;
end;
begin
...
end;
|