Q&A

  • ^PChar
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 요즘 접속 안되죠?

1  COMMENTS
  • Profile
    안치봉 1999.09.22 01:17
    델파이 팁모아 => 나이렉스 => 'host' 라고 검색해보세요~



    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 요즘 접속 안되죠?