WinSock單元中的紀錄類型定義,type
PHostEnt = ^THostEnt;
{$EXTERNALSYM hostent} //這句有甚麼作用,
hostent = record
h_name: PChar;
h_aliases: ^PChar;
h_addrtype: Smallint;
h_length: Smallint;
case Byte of //這裡的Byte參數取的是甚麼值?
0: (h_addr_list: ^PChar);
1: (h_addr: ^PChar)
end;
PHostEnt = ^THostEnt;
{$EXTERNALSYM hostent} //這句有甚麼作用,
hostent = record
h_name: PChar;
h_aliases: ^PChar;
h_addrtype: Smallint;
h_length: Smallint;
case Byte of //這裡的Byte參數取的是甚麼值?
0: (h_addr_list: ^PChar);
1: (h_addr: ^PChar)
end;
case Byte of
0: (h_addr_list: ^PChar);
1: (h_addr: ^PChar)这里Byte取得就是0和1啊!
h_name: PChar;
h_aliases: ^PChar;
h_addrtype: Smallint;
h_length: Smallint;
case Byte of
0: (h_addr_list: ^PChar);
1: (h_addr: ^PChar)这是一个变体记录,case中的0和1部分共享一段内存,0和1只是为了给变体记录的变体字段分组,而0和1指定为Byte类型的,如果你给h_addr_list赋了值,那么相应的h_addr也给赋了值!
我想問的是在甚麼時候給Byte變量賦值;
sorry
我沒表達清楚;
麻煩再指點下
case Boolean of
True: (h_addr_list: ^PChar);
False: (h_addr: ^PChar)
懂了吗??
case tag: Byte of
0: (h_addr_list: ^PChar);
1: (h_addr: ^PChar)
那么在这里tag也是记录的一个字段,你可以给它赋值。