ВУЗ:
Составители:
Рубрика:
Пример 4. Библиотека MathLib. Динамический импорт
Приложение
unit DinMath2; //Модуль формы
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
gs, StdCtrls; Dialo
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
type
TMin = function (X, Y: Integer): Integer;
var
LibHandle: HModule; { handle of the loaded DLL }
Min: TMin; { pointer to the Min function }
a,b:integer;
begin
{ Загружаем динамическую библиотеку }
LibHandle := LoadLibrary('MathLib.dll');
{ Проверяем, нормально ли загружена библиотека }
if LibHandle < 32 then
begin
ShowMessage('Could not load DLL.');
Halt;
end;
{ Получаем адрес функции вычисления минимума }
@Min := GetProcAddress(LibHandle, 'Min');
{ Проверяем корректность указателей }
if @Min = nil then
begin
FreeLibrary(LibHandle);
ShowMessage('Could not link to procedure in DLL.');
Halt;
end;
{ Теперь можно вызывать функции Min и Max }
a:=strToInt(edit1.text);
b:=strToInt(edit2.text);
166
Пример 4. Библиотека MathLib. Динамический импорт
Приложение
unit DinMath2; //Модуль формы
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
type
TMin = function (X, Y: Integer): Integer;
var
LibHandle: HModule; { handle of the loaded DLL }
Min: TMin; { pointer to the Min function }
a,b:integer;
begin
{ Загружаем динамическую библиотеку }
LibHandle := LoadLibrary('MathLib.dll');
{ Проверяем, нормально ли загружена библиотека }
if LibHandle < 32 then
begin
ShowMessage('Could not load DLL.');
Halt;
end;
{ Получаем адрес функции вычисления минимума }
@Min := GetProcAddress(LibHandle, 'Min');
{ Проверяем корректность указателей }
if @Min = nil then
begin
FreeLibrary(LibHandle);
ShowMessage('Could not link to procedure in DLL.');
Halt;
end;
{ Теперь можно вызывать функции Min и Max }
a:=strToInt(edit1.text);
b:=strToInt(edit2.text);
166
Страницы
- « первая
- ‹ предыдущая
- …
- 164
- 165
- 166
- 167
- 168
- …
- следующая ›
- последняя »
