• desc (19.09.08 08:38) [0]
    Есть функция:

    procedure GetHostNameAndIP(HostName: PChar; IP: PChar);
    var
     wVerReq: WORD;
     wsaData: TWSAData;
     h: PHostEnt;
     c: array[0..128] of char;
    begin
     wVerReq := MAKEWORD(1, 1);
     WSAStartup(wVerReq, wsaData);
     GetHostName(@c, 128);
     h := GetHostByName(@c);
     HostName := h^.h_Name;
     IP := iNet_ntoa(PInAddr(h^.h_addr_list^)^);
     WSACleanup;
    end;

    Вызаваю:

    var
     HostName, IP: PChar;

    ...

     GetHostNameAndIP(HostName, IP);

     sb.Panels[2].Text := HostName;

    Пишет какието каракули... Как получить нормальную строку из PChar ?
  • Поросенок Винни-Пух © (19.09.08 09:16) [1]
    Есть функция:
    выброси ее
  • desc (19.09.08 09:41) [2]

    > Поросенок Винни-Пух ©   (19.09.08 09:16) [1]

    Какая функция ?
  • Сергей М. © (19.09.08 09:46) [3]

    > desc   (19.09.08 09:41) [2]


    тебе чего надобно-то, старче ?
    Объясни хотя бы на пальцах, прежде чем искать какую-то функцию ..
  • Поросенок Винни-Пух © (19.09.08 09:48) [4]
    Есть функция:

    procedure GetHostNameAndIP(HostName: PChar; IP: PChar);


    Которая на самом деле процедура и которую надо выбросить.
    Ибо писал ее какой-то дятел.
  • clickmaker © (19.09.08 10:52) [5]
    > [2] desc   (19.09.08 09:41)

    где выделение памяти под буфер?

    вот это что за бред - HostName := h^.h_Name; ?

    что такое локальные переменные, понимаем?
  • Плохиш © (19.09.08 10:53) [6]

    > что такое локальные переменные, понимаем?

    Не пацанское это дело, кодить надо...
  • han_malign © (19.09.08 11:11) [7]

    > где выделение памяти под буфер?

    - WinSock сам выделяет буфер - в Tls и один на все, поэтому до следующей WinSock операции в контексте текущего потока, которая может затереть внутренний буфер - нужное значение надо скопировать...
  • clickmaker © (19.09.08 11:17) [8]
    > [7] han_malign ©   (19.09.08 11:11)

    я не про это. А про это -
    var
    HostName, IP: PChar;

    HostName := h^.h_Name;
Есть новые Нет новых   [134442   +13][b:0][p:0]