Форум: "Основная";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];
ВнизУказатели Найти похожие ветки
← →
qwerty2 (2003-12-01 14:05) [0]Задача такая: определить имя текущего хоста.
Есть такой код.
var
c:pchar;
begin
if GetHostName(c,255)>0 then
showmessage(inttostr(wsagetlasterror));// проверка на ошибку
showmessage(c); // в с должно находиться имя хоста.
после его выполнения выдается какой то бред - набор нечитаемых символов.
А вот аналогичный код на C который работает.
char FAR * name=new char(255);
int namelen=255;
gethostname (name,namelen);
MessageBox(name,"",0);
Сама функция обявлена так: gethostname(name:pchar;len:Integer);
что я делаю не так?
← →
Reindeer Moss Eater (2003-12-01 14:06) [1]в аналогичном коде на си под результат выделена память, а у тебя - нет
← →
Silver Alex (2003-12-01 14:15) [2]var
c: array[0..255] of char;
begin
if GetHostName(c,sizeof(name))>0 then
← →
Silver Alex (2003-12-01 14:16) [3]сорри, конечно вот так
var
c: array[0..255] of char;
begin
if GetHostName(c,sizeof(с))>0 then
← →
qwerty2 (2003-12-01 14:49) [4]Reindeer Moss Eater © (01.12.03 14:06) [1]
c:=allocmem(255) - ничего не дало. с - пустая строка как до выполнения GetHostName так и после.
Silver Alex © (01.12.03 14:16) [3]
до выполнения GetHostName с забита мусором. После выполнения ее содержимое, ни один байт, не изменяется, словно если б с передавалось не по ссылке а по значению.
← →
Digitman (2003-12-01 14:53) [5]
> qwerty2
что возвращает gethostname() ? ты хоть сподобился проанализировать рез-т и декодировать код отказа, если таковой имел место быть ?
← →
Reindeer Moss Eater (2003-12-01 14:54) [6]А WSAStartup делаешь, если уж выбрал такой способ получения имени хоста?
Чем тебе GetComputerName-то не нравится?
← →
qwerty2 (2003-12-01 15:11) [7]Digitman © (01.12.03 14:53) [5]
gethostname говорит что все нормально! возвращаемое значение =0.
Reindeer Moss Eater © (01.12.03 14:54) [6]
WSAStartup не делаю.
Но вышеприевдвнный код на С работает и без WSAStartup.
GetComputerName - работает! спасибо.
интересно все же почему gethostname не сработало
← →
Silver Alex (2003-12-01 15:11) [8]должно работать, только что специально еще раз проверил.Что-то у тебя не так, код бы посмотреть
← →
Reindeer Moss Eater (2003-12-01 15:17) [9]интересно все же почему gethostname не сработало
Потому что WSAStartup не было.
Return Values
If no error occurs, gethostname returns zero. Otherwise, it returns SOCKET_ERROR and a specific error code can be retrieved by calling WSAGetLastError.
← →
Digitman (2003-12-01 15:18) [10]возможно - кириллица в имени компьютера
← →
Digitman (2003-12-01 15:21) [11]
> Reindeer Moss Eater
> If no error occurs, gethostname returns zero
он и говорит, что получает 0
согласно описанию, при таком рез-те нет повода для вызова WSAGetLastError()
хотя - согласен на все 100% : WSAStartup() здесь нужен
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c