Показать сообщение отдельно
  #5  
Старый 06.11.2009, 18:38
s0manmbula s0manmbula вне форума
Прохожий
 
Регистрация: 06.11.2009
Сообщения: 16
Репутация: 10
По умолчанию

Цитата:
Сообщение от AleD
Всё очень просто, в dll пихаешь эту фугкцию:
Код:
function GetImageList: Pointer;
var
  ilImages: TImageList;
begin
  ilImages := TImageList.Create(nil);
  // ...
  Result := @ilImages; //нужный TImageList
end;
а в приложение
Код:
procedure GetImages;
type
  TGetImageListProc = function: Pointer;
const
  libname = 'mylib.dll';
  procName = 'GetImageList';
var
  lib: Cardinal;
  proc: TGetImageListProc;
  newImages: TImageList;
begin
  lib := LoadLibrary(pchar(libname));
  if(lib<>-1)then
  begin
    proc := GetProcAddress(lib,procName);
    if(proc<>nil)then
      newImages := proc^;
  end;
end;
на компиляторе не проверял, будут ошибки - репорть
На строку
Код:
newImages := proc^;
компилятор выдает ошибку:

[DCC Error] Unit1.pas(210): E2010 Incompatible types: 'TImageList' and 'procedure, untyped pointer or untyped parameter'
Ответить с цитированием