|
显式例子:
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Grids, DBGrids, DB, DBTables, DBCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Image1: TImage;
DataSource1: TDataSource;
Table1: TTable;
Table1SpeciesNo: TFloatField;
Table1Category: TStringField;
Table1Common_Name: TStringField;
Table1SpeciesName: TStringField;
Table1Lengthcm: TFloatField;
Table1Length_In: TFloatField;
Table1Notes: TMemoField;
Table1Graphic: TGraphicField;
DBGrid1: TDBGrid;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
// function GetInteger(I:Integer): Integer;stdcall;external 'DLLOne.dll';
// function GetDouble(F:Double): Double;stdcall;external 'DLLOne.dll';
TGetDouble = function (F:Double): Double; stdcall;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var D: Double;
DLLHandle: THandle;
Func: TGetDouble;
begin
Image1.Picture.Assign(Table1Graphic);
Table1Graphic.Assign(Image1.Picture);
Exit;
DLLHandle := LoadLibrary('DLLOne.dll');
try
@Func := GetProcAddress(DLLHandle, 'GetDouble');
//Edit1.Text := IntToStr(GetInteger(2));
//D := GetDouble(2.2);
if Assigned(@Func) then
begin
D := Func(2.2);
Edit2.Text := FloatToStr(D);
end;
finally
FreeLibrary(DLLHandle);
end;
end;
end.
隐式例子:
library DLLOne;
uses
SysUtils,
Classes;
{$R *.res}
function GetDoubleExt(F:Double): Double;stdcall;external 'DLLTwo.dll';
function GetInt(I:Integer): Integer;stdcall;external 'DLLTwo.dll';
function GetInteger(I:Integer): Integer;stdcall;
begin
Result := GetInt(I);
end;
function GetDouble(D:Double): Double;stdcall;
begin
Result := GetDoubleExt(D);
end;
[1] [2] 下一页
|