type
PHostEnt = ^THostEnt;
THostEnt = packed record
h_name: PChar;
h_aliases: ^PChar;
h_addrtype: Smallint;
h_length: Smallint;
case integer of
0: (h_addr_list: ^PChar);
1: (h_addr: ^PInAddr);
end;
이는 winsock2.pas 에 정의되어있는 것입니다. C에서는 /usr/include/netdb.h에 위에
해당하는 구조체가 아래와같이 정의되어있죠.
struct hostent {
char *h_name;
char **h_aliases;
int h_addrtype;
int h_length;
char **h_addr_list;
#define h_addr h_addr_list[0]
};
C 에서 memcopy(&numLocalhost, who->h_addr_list[0], who->length); 라고 쓴 것을
델파이로 하려고 하는데, ^PChar로 선언된 h_addr_list를 어떻게 써야 위와같이
되는지 모르겠군요. C처럼 포인터를 배열처럼 사용할 수도 없고하니....
도와주세요.
ps. 근데 www.delphi-jedi.org 요즘 접속 안되죠?
Lyle wrote:
> type
> PHostEnt = ^THostEnt;
> THostEnt = packed record
> h_name: PChar;
> h_aliases: ^PChar;
> h_addrtype: Smallint;
> h_length: Smallint;
> case integer of
> 0: (h_addr_list: ^PChar);
> 1: (h_addr: ^PInAddr);
> end;
>
> 이는 winsock2.pas 에 정의되어있는 것입니다. C에서는 /usr/include/netdb.h에 위에
> 해당하는 구조체가 아래와같이 정의되어있죠.
>
> struct hostent {
> char *h_name;
> char **h_aliases;
> int h_addrtype;
> int h_length;
> char **h_addr_list;
> #define h_addr h_addr_list[0]
> };
>
> C 에서 memcopy(&numLocalhost, who->h_addr_list[0], who->length); 라고 쓴 것을
> 델파이로 하려고 하는데, ^PChar로 선언된 h_addr_list를 어떻게 써야 위와같이
> 되는지 모르겠군요. C처럼 포인터를 배열처럼 사용할 수도 없고하니....
> 도와주세요.
>
> ps. 근데 www.delphi-jedi.org 요즘 접속 안되죠?