UDF в контексте сервера возвращает пустую строку
Hello, All! Нарисовал UDF, возвращающую имя хоста по IP. Проверил в тестовом приложении (грузит dll, находит точку входа в функцию, по IP возвращает имя хоста (использует gethostbyaddr). В приложении все ОК, в контексте сервера всегда возвращает пустую строку. Сервер - FB 2.1. Текст UDF: unit HostName; interface uses SysUtils, Classes, Winsock; implementation threadvar ThreadResultString: Array[0..255] of char; // declare external function HostByIP // cstring(256) // returns cstring(256) // entry_point 'HostByIP' // module_name 'HostUDF.dll'; function HostByIP(var IPAddr: PChar): PChar; cdecl; export; var SockAddrIn: TSockAddrIn; HostEnt: PHostEnt; WSAData: TWSAData; begin WSAStartup($101, WSAData); SockAddrIn.sin_addr.s_addr := inet_addr(IPAddr); HostEnt := gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET); if HostEnt nil then result := StrCopy(ThreadResultString, Hostent^.h_name) else begin result := StrCopy(ThreadResultString, ''); end; end; exports HostByIP; end. Чего ему не хватает? -- Удач Alexander A. Venikov, Tobolsk, Russia
Re: UDF в контексте сервера возвращает пустую строку
uses SysUtils, Classes 1) Попробуй переделать без использования этих юнитов: все нужные структуры и функции Ctrl+C и в своем юните Ctrl+V. 2) Кстати, приблуд всяких в стиле FastMM в Delphi не стоит ?
Re: UDF в контексте сервера возвращает пустую строку
Нарисовал UDF, возвращающую имя хоста по IP. Проверил в тестовом приложении (грузит dll, находит точку входа в функцию, по IP возвращает имя хоста (использует gethostbyaddr). В приложении все ОК, в контексте сервера всегда возвращает пустую строку. Сервер - FB 2.1. Текст UDF: ... Чего ему не хватает? ib_util?
Re: UDF в контексте сервера возвращает пустую строку
function HostByIP(var IPAddr: PChar): PChar; cdecl; export; var IPAddr: PChar - var тут зачем ? WSAStartup($101, WSAData); Кто будет проверять результат ? Вообще говоря, этот вызов не нужен, разве что для embedded, но раз уж вызвал - где вызов WSACleanup ? -- Хорсун Влад PS я обещал тебе не помогать, помню...
Re: UDF в контексте сервера возвращает пустую строку
Alexander A. Venikov ... Hello, Vlad! You wrote on Wed, 23 Apr 2008 15:22:44 +0300: ?? function HostByIP(var IPAddr: PChar): PChar; cdecl; export; VK var IPAddr: PChar - var тут зачем ? Это оно, спасибо. Не совсем пока понял, почему... ссылка по ссылке? Указатель на указатель, с точки зрения физики процесса. -- Хорсун Влад