type
TInfoKind = (ikVersion, ikName);
//variant record: the tail fields
//depend on Kind; managed types are
//not allowed there, hence ShortString
TProgramInfo = record
case Kind: TInfoKind of
ikVersion: (
Major, Minor, Build: Integer);
ikName: (Name: ShortString);
end;
procedure PrintInfo(const Info: TProgramInfo);
begin
case Info.Kind of
ikVersion:
WriteLn('version: ', Info.Major, '.',
Info.Minor, '.', Info.Build);
ikName:
WriteLn('name: ', Info.Name);
end;
end;
var
Info: TProgramInfo;
begin
Info.Kind := ikName;
Info.Name := 'CCDEditor';
PrintInfo(Info);
Info.Kind := ikVersion;
Info.Major := 3;
Info.Minor := 5;
Info.Build := 25467;
PrintInfo(Info);
end.