20.11.2005, 08:11
общий
это ответ
Здравствуйте, NLeo!
В приложении я Вам привел несколько переделаную Вашу программу, чтобы Вы сразу поняли, где у Вас затык. Со своей стороны хочу сказать, что проверки на правильность занрузки модулей и получения адресов нужно ставить В ОБЯЗАТЕЛЬНОМ ПРЯДКЕ.
В чем проблема я сказать не могу, скорее всего в том что у Вас ВР 16-ти разрядный, а сама функция 32-ух разрядная.
Еще один нюанс. Вы описали прототип функции InternetGetConnectedState с тремя параметрами, а у нее всего два параметра, типы которых отличаются от LongWord. Первый параметр - указатель на DWORD, а второй - собственно DWORD. LongInt от DWORD отличается наличием знака и наибольшее значение его в два раза меньше чем у DWORD. Ну а с указателем, я думаю, Вам объяснять не надо в чем разница.
----------------------------
Немного не в тему, но у меня вопрос - а Вы, случаем, не мазохист? :)
Я когда поставил себе BPW, чтобы проверить Вашу программу, у меня такой тормозун в системе начался, что я по три раза выспаться успевал, пока получал какой-то результат, например банальная смена каталога в проводнике.
Поставьте себе FreePascal. Это аналог BorlandPascal, только написан специально с учетом 32-х разрядных систем и работает под виндой без сучка и задоринки. По крайней мере у меня сильных претензий к нему нет. Сайт программы:
www.freepascal.org
Для программирования под винду (как в Вашем случае) Вам надо скачать IDE для винды, чтобы не было проблем с русскими кодировками. Вот сайт где она лежит:
www.bloodshed.net/devpascal.html
Приложение:
Program test1;Uses WinAPI;Const HINSTANCE_ERROR = 32;type t = ^longint; TFunc = function (a:t;b:longint):boolean; stdcall;var c:t; hLib:THandle; InternetGetConnectedState:TFunc;begin hLib:=loadlibrary(‘wininet.dll‘); if hLib > HINSTANCE_ERROR Then MessageBox(0, ‘Ошибка загрузки библиотеки‘,‘Внимание‘, mb_ok) Else Begin @InternetGetConnectedState := getprocaddress(hLib,‘InternetGetConnectedState‘); if @InternetGetConnectedState = NIL then MessageBox(0,‘Адрес функции не получен‘, ‘Внимание‘, mb_ok) Else Begin MessageBox(0, ‘Все пучком‘, ‘Ура!!!‘, mb_ok); FreeLibrary(hLib); End; End;end.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)