Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2011, 18:36   #1
Kolan
Пользователь
 
Регистрация: 31.10.2010
Сообщений: 13
Сообщение Функция DnsHostnameToComputerName.

Не работает функция DnsHostnameToComputerName. Дали задание, создать проект на делфи где бы использовалась функция DnsHostnameToComputerName, но данная функция определяется при компиляции как что то не опознаное, в справке про неё тоже ничего нет, вся найдена информация в инете про неё и её использование в С++. Была идея использовать библиотеку Kernel32.dll где она должна по идеи находится, но как данную функцию експортировать и объявить я не знаю.
Всё что у меня получилось от первоначальной идеи.
Код:
procedure TForm1.btn1Click(Sender: TObject);
var buffer:array[0..MAX_COMPUTERNAME_LENGTH + 1] of Char;
Size: Cardinal; Resultx:string;
begin
   Size:=MAX_COMPUTERNAME_LENGTH+1;
   Windows.DnsHostnameToComputerName(@Resultx,@buffer,Size);
end;
Kolan вне форума Ответить с цитированием
Старый 02.02.2011, 19:46   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

проще вынести их в отдельный юнит:

Код:
unit
  myKernel;

interface

uses
  Windows;

function DnsHostnameToComputerNameA(Hostname: PAnsiChar;
 ComputerName: PAnsiChar; var nSize: DWORD): BOOL; stdcall;
function DnsHostnameToComputerNameW(Hostname: PWideChar;
 ComputerName: PWideChar; var nSize: DWORD): BOOL; stdcall;

implementation

function DnsHostnameToComputerNameA; external 'kernel32.dll' name 'DnsHostnameToComputerNameA';
function DnsHostnameToComputerNameW; external 'kernel32.dll' name 'DnsHostnameToComputerNameW';

end.
и юзать понемногу:

Код:
{$APPTYPE CONSOLE}

program
  Project1;

uses
  Windows, myKernel;

var
  bufA: array[byte] of AnsiChar;
  bufW: array[byte] of WideChar;
  sz: DWORD;
begin
  sz := sizeof(bufA);
  DnsHostnameToComputerNameA('hostname', bufA, sz);
  //
  sz := sizeof(bufW) shr 1;
  DnsHostnameToComputerNameW(PWideChar(WideString('hostname')), bufW, sz);
end.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 02.02.2011, 21:13   #3
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

> в справке про неё тоже ничего нет

Откуда ж ей там взяться, если справка писалась еще во времена жития маздайной линейки (95/98/Me) ?)
mss вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция. ХреновыйПрогер Общие вопросы C/C++ 3 23.11.2010 00:00
Функция Alexsey1991 Помощь студентам 2 24.04.2010 21:09
функция Lemo Помощь студентам 7 24.10.2008 12:54
Функция Sam04 Помощь студентам 1 11.09.2008 13:51
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50