显式例子:
единица главного;
интерфейс
Использование
Windows, сообщения, Sysutils, варианты, классы, графика, управления, формы,
Диалоги, stdctrls, extctrls, сетки, dbgrids, db, dbtables, dbctrls;
тип
Tform1 = class (tform)
Баттон1: Tbutton;
РЕДАКТИРОВАТЬ1: ТЕДИТ;
РЕДАКТИРОВАТЬ2: ТЕДИТ;
Image1: Timage;
DataSource1: tdatasource;
Таблица 1: ttable;
Table1speciesno: tfloatfield;
Table1category: Tstringfield;
Table1common_name: tstringfield;
Table1speciesName: Tstringfield;
Table1lengthcm: tfloatfield;
Table1length_in: tfloatfield;
Table1notes: tmemofield;
Table1graphic: Tgraphicfield;
Dbgrid1: tdbgrid;
Процедура Button1click (отправитель: tobject);
частный
{Частные объявления}
публичный
{Публичные объявления}
конец;
// function getInteger (i: integer): integer; stdcall; внешний 'dllone.dll';
// function getDouble (f: Double): Double; stdcall; внешний 'dllone.dll';
TgetDouble = function (f: Double): Double; stdcall;
вар
Форма1: tform1;
выполнение
{$ R *.dfm}
Процедура tform1.button1click (отправитель: tobject);
var d: двойной;
Dllhandle: Thandle;
Func: tgetdouble;
начинать
Image1.picture.assign (table1graphic);
Table1graphic.assign (image1.picture);
Выход;
Dllhandle: = loadlibrary ('dllone.dll');
пытаться
@Func: = getProcadDress (dllhandle, 'getDouble');
//Edit1.text: = inttoStr (getInteger (2));
// d: = getDouble (2.2);
Если назначено (@func), то
начинать
D: = func (2.2);
Edit2.text: = floattoStr (d);
конец;
окончательно
Фрилибрика (dllhandle);
конец;
конец;
конец.
隐式例子:
библиотека dllone;
Использование
Sysutils,
Классы;
{$ R *.res}
function getDoubleext (f: Double): Double; stdcall; внешний 'dlltwo.dll';
function getInt (i: Integer): Integer; Stdcall; внешний 'dlltwo.dll';
функция GetInteger (i: Integer): Integer; Stdcall;
начинать
Результат: = getInt (i);
конец;
функция getDouble (D: Double): Double; Stdcall;
начинать
Результат: = getDoubleext (d);
конец;
экспорт
GetInteger,
Getdouble;
начинать
конец.
библиотека dlltwo;
{Важное примечание об управлении памятью DLL: Sharemem должен быть
Первое устройство в пункте использования вашей библиотеки и вашего проекта (выберите
Источник Project-View) использует пункт, если ваш DLL экспортирует любые процедуры или
функции, которые пропускают строки в виде параметров или результатов функции. Этот
применяется ко всем строкам, передаваемым к вашему DLL и обратно-даже те, которые
вложены в записи и классы. Sharemem - это интерфейс
Borlndmm.dll Shared Memory Manager, который должен быть развернут вместе
с вашим DLL. Чтобы избежать использования Borlndmm.dll, передайте информацию о строке
Использование параметров PCHR или ShortString. }
Использование
Sysutils,
Классы;
{$ R *.res}
function getDoubleext (d: Double): Double; Stdcall;
начинать
Результат: = D;
конец;
функция GetInt (i: Integer): Integer; Stdcall;
начинать
Результат: = I;
конец;
экспорт
GetDoubleext,
GetInt;
начинать
конец.