-
Есть функция:
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]
тебе чего надобно-то, старче ? Объясни хотя бы на пальцах, прежде чем искать какую-то функцию ..
-
Есть функция:
procedure GetHostNameAndIP(HostName: PChar; IP: PChar);
Которая на самом деле процедура и которую надо выбросить. Ибо писал ее какой-то дятел.
-
> [2] desc (19.09.08 09:41)
где выделение памяти под буфер?
вот это что за бред - HostName := h^.h_Name; ?
что такое локальные переменные, понимаем?
-
> что такое локальные переменные, понимаем?
Не пацанское это дело, кодить надо...
-
> где выделение памяти под буфер?
- WinSock сам выделяет буфер - в Tls и один на все, поэтому до следующей WinSock операции в контексте текущего потока, которая может затереть внутренний буфер - нужное значение надо скопировать...
-
> [7] han_malign © (19.09.08 11:11)
я не про это. А про это - var HostName, IP: PChar;
HostName := h^.h_Name;
|