有这样定义 Record 的吗...?(50分)

  • 主题发起人 skimeister
  • 开始时间
S

skimeister

Unregistered / Unconfirmed
GUEST, unregistred user!
我在看书时看到这段....
type
TVariantRecord=record
NullStrField: Pchar;
IntField: Integer;
case Integer of
0:(D: Double);
1:(I: Integer);
2:(C: Char);
end;
在Case Integer of 这段开始都看不明了,
大家可以给讲解一下吗?
 
这是一个变体记录的定义

abc:tvarinatrecord;
abc.d
abc.i
abc.c
占用同一内存空间长度是sizeof(double),也就是其中最长的
你给其中任一个变量附值则在这个空间写入该值
一般只有读你附值的变量才能正确读取

 
还是有的迷糊,能举个比这更好的例子吗?
 
C 的 Union 类型知道吗?差不多的
 
var
VR: TVariantRecord;
begin
VR.C := 'a';
VR.I := 98;
//现在 VR.C 就是 'b' 了
//也就是说,改了 VR.C 也就改变了 VR.I,因为他们指向同一内存空间
end;
 
谢谢大家
 
顶部