Вопрос к спецам по WinAPI

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Вопрос к спецам по WinAPI

Сообщение slyubez » 30.07.2015 18:59:23

Приветствую уважаемых коллег.

Прошу подсказать, чем можно в FPC заменить строчку, которая компилируется в Delphi:
Код: Выделить всё
@HtmlHelpAProc:=GetProcAddress(HtmlHelpModule, 'HtmlHelpA');

Ругается таким сообщением:
helpunit.pas(432,7) Error: Can't assign values to an address

Объявление типа:
Код: Выделить всё
THtmlHelpAProc=function(hWndCaller: HWND; pszFile: PAnsiChar;
uCommand: UINT; dwData: DWORD): HWnd; stdcall;
slyubez
постоялец
 
Сообщения: 180
Зарегистрирован: 31.03.2015 08:44:07

Re: Вопрос к спецам по WinAPI

Сообщение hinst » 30.07.2015 19:11:21

не надо @ в Mode-ObjFPC ;
либо вставить {$mode Delphi} в начале исходного кода модуля
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Вопрос к спецам по WinAPI

Сообщение kazalex » 30.07.2015 19:12:34

slyubez
Либо включи режим совместимости с Delphi {$mode delphi}, либо перепиши код:
Код: Выделить всё
HtmlHelpAProc:=THtmlHelpAProc(GetProcAddress(HtmlHelpModule, 'HtmlHelpA'));
kazalex
постоялец
 
Сообщения: 296
Зарегистрирован: 01.06.2012 14:54:10

Re: Вопрос к спецам по WinAPI

Сообщение slyubez » 30.07.2015 19:48:58

Коллеги, спасибо. Код скомпилировался, но, увы, пока не заработал. Я решил остаться в режиме FPC и заменил код, как показано выше, но функция WinAPI работать не хочет, хотя отладчик показывает, что параметры передаются верно. Сообщений не выдается. Попробую сейчас отловить код ошибки.
Код: Выделить всё
function _HtmlHelpSetup : Boolean;
begin
  if (HtmlHelpModule = 0)
   then begin
            HtmlHelpModule := LoadLibrary('hhctrl.ocx');
            if (HtmlHelpModule <> 0)
            then HtmlHelpAProc:=THtmlHelpAProc(GetProcAddress(HtmlHelpModule, 'HtmlHelpA'));           
          end;
  Result:=Assigned(HtmlHelpAProc);
end;

function HtmlHelpA(hWndCaller: HWND; pszFile: PAnsiChar; uCommand: UINT;
                   dwData: DWORD): HWND;
begin
  Result := 0;
  if _HtmlHelpSetup
   then Result := HtmlHelpAProc(hWndCaller, pszFile, uCommand, dwData);
end;


Добавлено спустя 54 минуты 12 секунд:
Не заметил косяк в имени файла. Теперь всё завелось. Ещё раз спасибо за подсказки.
slyubez
постоялец
 
Сообщения: 180
Зарегистрирован: 31.03.2015 08:44:07


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 237

Рейтинг@Mail.ru