Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.12;
Скачать: CL | DM;

Вниз

Указатели   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.027 c
1-36734
LittleGirly
2003-12-02 10:24
2003.12.12
Вопрос по TreeView


3-36563
Dunmer1
2003-11-20 12:32
2003.12.12
Возможно ли создать базу без использования Database Desktop?


1-36635
R@nger
2003-12-01 09:48
2003.12.12
OnDrawColumnCell в TDBGrid


7-36874
Серж
2003-10-07 18:33
2003.12.12
Получить путь к выполняемой программе


1-36668
austin
2003-11-29 22:35
2003.12.12
Автоматизация и Excel