易截截图软件、单文件、免安装、纯绿色、仅160KB

delphi dll 静态调用和动态调用方法总结

dll 调用方法有 静态调用和动态调用两种方法
用到的dll为上篇文章所编写的dll.
总结如下:
Unit Unit1;
Interface
Uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
Type
  TForm1 = Class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Procedure Button1Click(Sender: TObject);
    Procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  End;
Var
  Form1: TForm1;
 
Implementation
Function  Min(X, Y: Integer): Integer; external 'Project1.dll';
Function Max(X, Y: Integer): Integer; external 'Project1.dll';
procedure SynAPP(App:THandle);stdcall;external 'Project1.dll'; //这里的
procedure ShowForm;stdcall;external 'Project1.dll';
procedure showmyform;stdcall;external 'Project1.dll';
{$R *.dfm}
Procedure TForm1.Button1Click(Sender: TObject);
Begin
  showmessage(inttostr(Min(1, 100)));//静态方法
  showmessage(inttostr(Max(1, 100)));//静态方法
End;
//动态方法
Procedure TForm1.Button2Click(Sender: TObject);
Type
  Tmax = Function(X, Y: Integer): Integer;
  THandle = Integer;
Var
  mymax: Tmax;
  Handle: THandle;
Begin
  Handle := LoadLibrary('Project1.dll');
  @mymax := GetProcAddress(Handle, 'Max');
  showmessage(inttostr(mymax(1, 100)));
  FreeLibrary(Handle);
End;
procedure TForm1.Button3Click(Sender: TObject);
begin
  // SynAPP(Application.Handle);
  showmyform ;//静态方法
  //ShowForm ;
end;
End.


相关文档:

《Delphi 算法与数据结构》: 数据对齐

为了加快硬件的访问速度, 编译器通常要使用"数据对齐", 譬如:
//下面结构中: SizeOf(TRec) = 6; 因为 b 在这里也要占 2 字节.
TRec = record
a: Word;
b: Byte;
c: Word;
end
;
//下面结构中: SizeOf(TRec) = 16; 这里的 a 和 b 共占了 8 个字节.
TRec = record
a: Byte;
b: Byte;
c: Do ......

Delphi和C++数据类型对照表

Delphi和C++数据类型对照表
Delphi        字长/值域                                C++
ShortInt  &n ......

delphi dll 实例 与 dll窗体实例

delphi dll 实例 与 dll窗体实例
本动态链接库方法有
Min,Max,SynAPP,ShowForm,showmyform
dll工程文件
Library Project1;
uses
  dllUnit1 in 'dllUnit1.pas' {Form1};
function Min(X, Y: Integer): Integer; export;
begin
if X < Y then Min := X else Min := Y;
end;
function Max(X, Y: Integer): ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号