如果我是这样两个记录类型,有将如何写type Deliver = ^TDeliver; TDeliver = Record RecvType:byte; TpUid:byte; TpUdhi:byte; end;type Result = ^TResult; TResult = Record RecvType:byte; TpUid:byte; TpUdhi:byte; end;
type Deliver = ^TDeliver; TDeliver = Record RecvType:byte; TpUid:byte; TpUdhi:byte; end; 使用时,声明变量即可 configdata:array[0..50] of Deliver; fp:file of Deliver;
Msg: Cardinal;
case Integer of
0: (
WParam: Longint;
LParam: Longint;
Result: Longint);
1: (
WParamLo: Word;
WParamHi: Word;
LParamLo: Word;
LParamHi: Word;
ResultLo: Word;
ResultHi: Word);
end;
Deliver = ^TDeliver;
TDeliver = Record
RecvType:byte;
TpUid:byte;
TpUdhi:byte;
end;type
Result = ^TResult;
TResult = Record
RecvType:byte;
TpUid:byte;
TpUdhi:byte;
end;
Deliver = ^TDeliver;
TDeliver = Record
RecvType:byte;
TpUid:byte;
TpUdhi:byte;
end;
使用时,声明变量即可
configdata:array[0..50] of Deliver;
fp:file of Deliver;
TCompareRec = packed record
ColIdx: Byte;
Op: TOp;
case VType: TValueType of
vtChar: (VChar: PShortString);
vtInt: (VInt: Integer);
vtFloat: (VFloat: Double);
end;
这是我的一个程序中使用的一个记录类型,其中,VChar,VInt,VFloat,就公用同一片内存,但是,如果某一个更长,则以最长的分配空间。如果用SizeOf(TCompareRec),相当于是SizeOf(ColIdx) + SizeOf(Op) + SizeOf(VType) + SizeOf(VFloat) = 1 + 1 + 1 + 8 = 11,这里,编一个小程序看看就知道了,设置VChar,VInt,VFloat中的任一个,其他的都会被影响,这说明他们确实公用一片空间