PChar是个指针, 你给他空间了吗?

解决方案 »

  1.   

    TIGER说得对,这是改你的代码:procedure TForm1.Button1Click(Sender: TObject);
    type
    PaPInAddr = ^TaPInAddr;
    TaPInAddr = array [0..10] of PInAddr;
    var
    phe: PHostEnt;
    pptr: PaPInAddr;
    //Buffer: array [0..63] of char;//注意!!!!!!!!!!!
    I: Integer;
    GInitData: TWSADATA;
    Buffer:Pchar;
    begin
    Buffer:=allocmem(64);
    WSAStartup($101, GInitData);
    GetHostName(Buffer,64);
    ShowMessage(string(Buffer));
    phe :=GetHostByName(buffer);
    if phe = nil then Exit;
    pptr := PaPInAddr(Phe^.h_addr_list);
    I := 0;
    while pptr^[I] <> nil do
    begin
    ShowMessage(inet_ntoa(pptr^[I]^));
    Inc(I);
    end;
    WSACleanup;
    FreeMem(buffer,64);
    end;
      

  2.   

    >>GetHostName(Buffer,64);
    GetHostName(Buffer^,64);如果Buffer是PChar