delphi中变体记录如何使用?
答案:1 悬赏:20
解决时间 2021-01-04 01:49
- 提问者网友:留有余香
- 2021-01-03 13:43
delphi中变体记录如何使用?
最佳答案
- 二级知识专家网友:佘樂
- 2021-01-03 14:03
变体记录顾名思意记录是可变的,为记录体提供了灵活行
hostent=record
h_name:PChar;
h_aliases:^PChar;
h_addrtype:Smallint;
h_length:Smallint;
case Byte of
0:(h_addr_list:^PChar);
1:(h_addr:^PChar);
end;
上述记录体中如果记录体中的h_length=0 那么记录体记录h_addr_list就可以使用; 如果h_length=1那么h_addr可以使用; h_addr_list,h_addr只能对一个进行赋值和读取 而且是根据h_length的值,因为它们用的是一个内存地址
--------------------------------------------------------------------------------
若记录是由一部分固定不变和另一部分变化部分是随固定部分中的某个数据
项的具体取值而定的数据项所组成的称为记录变体。带记录变体的记录类型定义有以下形式:
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只是一个标识作用
hostent=record
h_name:PChar;
h_aliases:^PChar;
h_addrtype:Smallint;
h_length:Smallint;
case Byte of
0:(h_addr_list:^PChar);
1:(h_addr:^PChar);
end;
上述记录体中如果记录体中的h_length=0 那么记录体记录h_addr_list就可以使用; 如果h_length=1那么h_addr可以使用; h_addr_list,h_addr只能对一个进行赋值和读取 而且是根据h_length的值,因为它们用的是一个内存地址
--------------------------------------------------------------------------------
若记录是由一部分固定不变和另一部分变化部分是随固定部分中的某个数据
项的具体取值而定的数据项所组成的称为记录变体。带记录变体的记录类型定义有以下形式:
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只是一个标识作用
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯