Delphi记录record中的变体

时间:2023-03-08 19:10:02
program Day4;

{$APPTYPE CONSOLE}

uses
SysUtils,
Util in 'Util.pas'; type
TPerson = packed record
ID : integer;
case IsFullJob : Boolean of
true: (
Year : Cardinal;
);
false:(
Hour : word;
);
end; var
s : string;
ss : ShortString;
p : TPerson; begin
Writeln('sizeof integer:',sizeof(integer));
Writeln('sizeof cardinal:',sizeof(cardinal));
Writeln('sizeof word:',sizeof(word));
Writeln('sizeof boolean:',sizeof(boolean));
Writeln('sizeof TPERSON:',sizeof(Tperson)); p.ID := 110;
p.Year := $80000001; //$8 = 1000 b
Writeln('p.year:',p.year);
Writeln('p.hour:',p.hour);
p.IsFullJob := true;
Writeln('p.IsFullJob:',p.IsFullJob); readln;
end.

类似C中的联合体union.