当前位置:编程学习 > Delphi >>

delphi变体记录问题

PSockAddrIn = ^TSockAddrIn; TSockAddrIn = packed record case Integer of 0: (sin_family: u_short; sin_port: u_short; sin_addr: TInAddr; sin_zero: array[0..7] of Char); 1: (sa_family: u_short; sa_data: array[0..13] of Char) end; 请问上面代码中case integer of 这句的integer是在哪赋值的? 什么时候是1什么时候是0? 谢谢!
答案:这样解决是有误的, 这只是一种写法,并不是要付0,1给什么,表示的是这个记录有两种变体.
var  vpt:TSockAddrIn 
你这样的输入 vpt.的时候 会显示如上5个属性(即所有的),怎么用就是你自己的事了
当然上面的写法 与如下写法是一样的:

TSockAddrIn = packed record
    case Boolean of
      True: (sin_family: u_short;
          sin_port: u_short;
          sin_addr: TInAddr;
          sin_zero: array[0..7] of Char);
      False: (sa_family: u_short;
          sa_data: array[0..13] of Char)
  end;
只是INTEGER 你还可以,2,3,4 写下去 有多种变体.

上一个:delphi ,sql,, 数据库 ,求助~~~~ 急~~~~~
下一个:delphi能实现反射吗?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,