- Код: Выделить всё
library DLLtoTEST;
{$mode objfpc}{$H+}
uses
Classes,
{ you can add units after this }
dateutils, Forms, Interfaces, Unit1;
{ФУНКЦИИ ДЛЯ РАБОТЫ С ЧИСЛАМИ}
//целые числа
{
ФУНКЦИЯ ПРИНИМАЕТ ДВА ЦЕЛЫХ ЧИСЛА X И Y И ВОЗВРАЩАЕТ ИХ СУММУ
}
Function SummINTEGER(X,Y:Int64):Int64; StdCall; //'Primer1'
Begin
Result:=X+Y;
end;
//целые числа
//вещественные числа (десятичные)
{
ФУНКЦИЯ ПРИНИМАЕТ ДВА ВЕЩЕСТВЕННЫХ ЧИСЛА A И B И ВОЗВРАЩАЕТ ИХ СУММУ
}
Function SummREAL(A,B:Real):Real; StdCall; //'Primer2'
Begin
Result:=A+B;
end;
{ФУНКЦИИ ДЛЯ РАБОТЫ С ЧИСЛАМИ}
{Показ формы}
procedure XShowForm; stdcall;
begin
Application.CreateForm(TForm1,Form1);
Form1.ShowModal;
end;
function XGetForm:TFormClass;
begin
Application.CreateForm(TForm1,Form1);
Result:=TFormClass(Form1);
end;
{Показ формы}
Exports
SummINTEGER Index 10 name 'Primer1',
SummREAL Index 20 name 'Primer2',
XShowForm Index 30 name 'Primer3',
XGetForm Index 40 name 'Primer4';
{$IFDEF WINDOWS}{$R DLLtoTEST.rc}{$ENDIF}
begin
end.
В некоторой программе можно создавать скрипты на Object Pasca
Вот пример
- Код: Выделить всё
var
MyForm: TForm;
btOK: TButton;
procedure FormOkClick(Sender: TButton);
begin
MyForm.Tag := 1;
MyForm.Close;
{Загружаем библиотеку}
???????????????????????
{Загружаем библиотеку}
end;
Begin
//Создаем кнопку
MyForm := TForm.Create(nil);
MyForm.Caption := 'Пример работы с динамически загружаемой библиотекой';
MyForm.BorderStyle := bsSingle;
MyForm.Width := 400;
MyForm.Height := 250;
MyForm.Position := poScreenCenter;
//Добавим кнопку ОК
//Добавим на форму кнопку
btOk := TButton.Create(MyForm);
btOk.Default := True;
btOk.parent := MyForm;
btOk.left := 230;
btOk.top := 190;
btOK.Width := 150;
btOK.Height := 20;
btOk.Caption := 'ОК (Загрузить файл DLL)';
btOk.OnClick := @FormOkClick; //Свяжем с обработкой события FormOkClick
//Отображение формы
MyForm.ShowModal;
End.
Как мне загрузить библиотеку и использовать процедуры и функции в ней?