delphi 可变记录

 一直对可变记录不清楚,终于知道点什么也可还是不清楚,把别人的摘录下来了 

若记录是由一部分固定不变和另一部分变化部分是随固定部分中的某个数据

项的具体取值而定的数据项所组成的称为记录变体。带记录变体的记录类型定义有以下形式:

  type

   <类型标识符>=record

     <域名1>:<类型1>;

     <域名2>:<类型2>;

     ……

     <域名n-1>:<类型n-1>;

     case <标志域>:<类型n> of

      <常量表1>:<域表1>;

      <常量表2>:<域表2>;

      ……

      <常量表m>:<域表m>;

   end;

可变部分中的标识域可有可无

下面是几种结构体的定义

type

TMyRcord=reocord

A:integer;

B:integer;

case C:integer of

1:(D:string[20]);

2: (E:Dword);

end;

这个结构体中的值域实际有5个;你可以对A,B,C,D,E,分别赋值;

如果赋值的顺序是这样 myrecord.d='dfd';myrecord.E:=2;那么d的值将被

E 覆盖掉,因为他们用的是同一地址;C可以任意付给整型值赋值;它只是提供给一个

标识作用;

TMr=record

case integer of

1(A:integer);

2(B:sring[1]);

end;

这个结构体没有标识符只有类型;这里的integer只是表明这是一个可变记录

它的作用和下面的记录体是一样的

TMr2=record

case char of

'a':(a:integer);

'b':(b:string[10];

end;

char和integer只是一个标识作用