📄 dynacall.~pas
字号:
unit DynaCall;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
GroupBox1: TGroupBox;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
type
TintFunction=Function(x,y,z:integer):integer;stdcall;
var
x,y,z:integer;
{$R *.dfm}
Function Calculate(FunName:Pchar):integer;
var
Dllname:string;
Hinst:Thandle;
ProcName:Pchar;
Fpointer:TFarProc;
MyFunct:TintFunction;
begin
getdir(0,dllname);
dllname:=dllname+'\EXAM_10_1.dll';
ProcName:=FunName;
Hinst:=SafeLoadLibrary(Dllname);
if Hinst>0 then
try
Fpointer:=GetProcAddress(HInst,ProcName);
if Fpointer<>Nil then
begin
Myfunct:=TIntFunction(Fpointer);
Calculate:=Myfunct(x,y,z);
end
else
showmessage('DLL Function not found.');
Finally
FreeLibrary(Hinst);
end
else
ShowMessage(Dllname+' Library not Found');
end;
procedure TForm1.Button1Click(Sender: TObject);
Var
Funname:Pchar;
Res:integer;
begin
Funname:='Max';
x:=strtoint(Edit1.text);
y:=strtoint(Edit2.text);
z:=strtoint(edit3.Text );
Res:=Calculate(FunName);
Edit4 .text:=IntTostr(Res) ;
end;
procedure TForm1.Button2Click(Sender: TObject);
Var
Funname:Pchar;
Res:Integer;
begin
Funname:='Min';
x:=strtoint(Edit1.text);
y:=strtoint(Edit2.text);
z:=strtoint(edit3.Text );
Res:=Calculate(FunName);
Edit4 .text:=IntTostr(Res) ;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -