Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

GetComputerNameEx [WinXP]


Германн ©   (2007-05-04 02:30:00) 

Почему сия функция есть в справке, но отсутствует в Windows.pas?
И при этом фигурирует и в справке и в kernel32.def, который в каталоге для С++ Билдера?
BDS2006


Германн   (2007-05-10 03:04:00) [1]


> TStas ©   (09.05.07 23:59) [19]
>
> Жалко, ссылка не открывается:(
>

Какая именно ссылка не открывается?


TStas   (2007-05-09 23:59:00) [2]

Жалко, ссылка не открывается:(


Игорь Шевченко   (2007-05-07 11:50:00) [3]

Германн ©   (04.05.07 21:25) [11]


> Гугление по сайту http://www.delphi-jedi.orgне дало ни
> одного совпадения с сабжем :(


Вот же.
А я сразу нашел: ftp://ftp.delphi-jedi.org/api/win32api.zip, unit JwaWinBase.pas


Leonid Troyanovsky   (2007-05-06 10:17:00) [4]


> Германн ©   (06.05.07 02:10) [16]

> Попутно возник вопрос. А что кроме FormatMessage нет иных
> путей обработать LastError?

Win32Check?

--
Regards, LVT.


Германн   (2007-05-06 02:10:00) [5]

Попробовал. Работает.
Попутно возник вопрос. А что кроме FormatMessage нет иных путей обработать LastError?


Германн   (2007-05-06 00:32:00) [6]


> begin...end ©   (05.05.07 07:14) [14]

Спасибо.


begin...end   (2007-05-05 07:14:00) [7]

> Германн ©   (05.05.07 00:49) [13]
> А есть ли разница var PChar или  PChar?

Да, безусловно. Функция ожидает, что ей передадут адрес буфера для хранения тела строки. Указывая var, Вы заставляете компилятор передавать в функцию не этот адрес, а адрес переменной, в которой он лежит. Естественно, будет ошибка.

> правильно ли я описал тип TNameType
Здесь я ошибок не вижу.

И ещё кое-что, о чём не следует забывать: в kernel32 функции с таким именем нет. Т.к. она работает со строками, есть две её версии: GetComputerNameEx Aи GetComputerNameEx W. Т.е. импорт ANSI-версии будет выглядеть так:

function GetComputerNameEx(NameType: TNameType; Buff: PChar; var Size: DWORD): BOOL; stdcall;
  external 'kernel32.dll' name 'GetComputerNameExA';


Германн   (2007-05-05 00:49:00) [8]


> begin...end ©   (04.05.07 21:45) [12]
>
> > Германн ©   (04.05.07 21:25) [11]
>
> Перед Buff не нужно var. И не забудьте указать соглашение
> о вызове (stdcall).
>

Насчёт соглашения о вызовах, конечно не забуду. И то, что данное соглашение  имеет префикс stdне случайно, я тоже понимаю. Не "первый раз замужем" :)

А вот о var Buff хотелось бы поподробнее. Стал тут шерстить все функции имеющие параметром PChar и не нашел ни одной, где параметр такого типа был бы объявлен как var-параметр. А есть ли разница var PChar или  PChar?

Но в основном я хотел в [11] спросить правильно ли я описал тип TNameType. Токмо вот, к сожалению, забыл привести его Си-шное описание:
typedef enum _COMPUTER_NAME_FORMAT
{
 ComputerNameNetBIOS,
 ComputerNameDnsHostname,
 ComputerNameDnsDomain,
 ComputerNameDnsFullyQualified,
 ComputerNamePhysicalNetBIOS,
 ComputerNamePhysicalDnsHostname,
 ComputerNamePhysicalDnsDomain,
 ComputerNamePhysicalDnsFullyQualified,
 ComputerNameMax
}COMPUTER_NAME_FORMAT;

У меня "на подхвате" были в тот момент два "Си-шника". Один - "чистый Си-шник", не знающий борланда ответил, что я не прав, если отталкиваться от "стандарта". Что есть "стандарт" он не уточнил, а я не стал выспрашивать, поскольку его квалификация для меня пока спорна. Другой, которого квалификацию я себе чётко представляю, который работает на С++Билдере, подтвердил моё мнение о данном типе.


begin...end   (2007-05-04 21:45:00) [9]

> Германн ©   (04.05.07 21:25) [11]

Перед Buff не нужно var. И не забудьте указать соглашение о вызове (stdcall).


Германн   (2007-05-04 21:25:00) [10]


> Игорь Шевченко ©   (04.05.07 11:40) [8]
>
>
> > Почему сия функция есть в справке, но отсутствует в Windows.
>
> > pas?
>
>
> Потому что не перевели. Для того, чтобы ее использовать,
>  можно скачать прототип с http://www.delphi-jedi.orgиз
> раздела API translation (вроде так)
>

Гугление по сайту http://www.delphi-jedi.orgне дало ни одного совпадения с сабжем :(
Ну дык, а msdn на что?
BOOL GetComputerNameEx(
 COMPUTER_NAME_FORMAT NameType,
 LPTSTR lpBuffer,
 LPDWORD lpnSize
);


type
TNameType = (ComputerNameNetBIOS, ComputerNameDnsHostname,   ComputerNameDnsDomain, ComputerNameDnsFullyQualified, ComputerNamePhysicalNetBIOS, ComputerNamePhysicalDnsHostname,
ComputerNamePhysicalDnsDomain, ComputerNamePhysicalDnsFullyQualified,
 ComputerNameMax);

function GetComputerNameEx(NameType: TNameType; var Buff: PChar; var Size : DWord));

Если я неправильно перевел что-то, ткните меня носом, пожалуйста!


Rouse_   (2007-05-04 13:11:00) [11]

Хе, User и Computer это я да :)))


clickmaker   (2007-05-04 11:49:00) [12]


> [7] begin...end ©   (04.05.07 11:37)
> Кто-нибудь читал сабж?

интересно, что бы знатоки психологии сказали про очитку User вместо Computer...


Игорь Шевченко   (2007-05-04 11:40:00) [13]


> Почему сия функция есть в справке, но отсутствует в Windows.
> pas?


Потому что не перевели. Для того, чтобы ее использовать, можно скачать прототип с http://www.delphi-jedi.orgиз раздела API translation (вроде так)


begin...end   (2007-05-04 11:37:00) [14]

Кто-нибудь читал сабж?


Leonid Troyanovsky   (2007-05-04 11:20:00) [15]


> umbra ©   (04.05.07 11:15) [5]

> > Rouse_ ©   (04.05.07 11:01) [4]
> > > begin...end ©   (04.05.07 10:38) [3]
> > > > clickmaker ©   (04.05.07 09:57) [2]

> > http://msdn2.microsoft.com/en-us/library/ms724435.aspx

> ?

Sic!

--
Regards, LVT.


umbra   (2007-05-04 11:15:00) [16]


> Rouse_ ©   (04.05.07 11:01) [4]
> > begin...end ©   (04.05.07 10:38) [3]
> > > clickmaker ©   (04.05.07 09:57) [2]
> >
> > ?
>
> http://msdn2.microsoft.com/en-us/library/ms724435.aspx
>

?


Rouse_   (2007-05-04 11:01:00) [17]


> begin...end ©   (04.05.07 10:38) [3]
> > clickmaker ©   (04.05.07 09:57) [2]
>
> ?

http://msdn2.microsoft.com/en-us/library/ms724435.aspx


begin...end   (2007-05-04 10:38:00) [18]

> clickmaker ©   (04.05.07 09:57) [2]

?


clickmaker   (2007-05-04 09:57:00) [19]

secur32.dll


begin...end   (2007-05-04 08:05:00) [20]

А какая разница, почему? Надо использовать -- значит, импортируйте её из kernel32.dll самостоятельно.


Наверх

Титульная страница Поиск, карта сайта Написать письмо