Quote (Генрих)
собственно вопрос, как с помощью делфи считать класс из dll
пусть у мну в библиотеке находится класс Tkrevedko
и я хочу создать переменную такого типа в программе...
Как импортировать функцию я знаю и везде описано, а про класс не нашел cry
К сожалению, класс из DLL средствами Delphi экспортировать невозможно. Для этих целей используются пакеты.
Все о пакетах здесь: http://wm-help.net/books-online/book/56472/56472-96.html
В общем модуле:
Code
type
Tkrevedko = class;
TkrevedkoClass = class of Tkrevedko;
TkrevedkoFunc = function: TkrevedkoClass;
Tkrevedko = class(TForm) // или TFrame, или TComponent
public
procedure Action1; dynamic; abstract;
function Status1: Integer; dynamic; abstract;
end;
В принципе, это фактически написание COM интерфейса, только без регистрации.
В плагине:
Code
type
Tkrevedko1 = class(Tkrevedko)
public
procedure Action1; override;
function Status1: Integer; override;
end;
function GetKrevedkoClass: TKrevedkoClass;
begin
Result := Tkrevedko1;
end;
exports
GetKrevedkoClass;
В вызывающей программе:
Code
var
hLib: THandle;
Func: TkrevedkoFunc;
begin
hLib := LoadLibrary('krevedko1.dll');
if hLib <> 0 then
begin
Func := TkrevedkoFunc(GetProcAddress(hLib, 'GetKrevedkoClass'));
if Assigned(Func) then
begin
Krevedko := Func.Create(nil); // срабатывает виртуальный конструктор
Krevedko.Action1;
if Krevedko.Status1 <> 0 then
Krevedko.Action1;
// и т. д.
end
else
// не найдена функция
end
else
// библиотека не найдена
end;
Вот статья по работе с bpl-пакетами.
http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=274
Удачи