level 7
// DLL调用的说明文档。

//下面的Delphi的代码,Delphi版本是XE10.2type
Tlmc1_Initial = function(strEzCadPath: PAnsiChar; bTestMode: Boolean; hOwenWnd: THandle): Integer; cdecl; //定义一个函数类型,注意一点过程类型种的参数应该与DLL中用到的方法的参数一致。
Tlmc1_LoadEzdFile = function(strFileName: PChar): Integer; stdcall;
procedure TForm1.btn_InitialClick(Sender: TObject);
var
st, i: Integer;
Handle: THandle;
P_Initial: PInteger;
Initial: Tlmc1_Initial;
path: string;
begin
path := ExtractFilePath(ParamStr(0));
try
Handle := LoadLibrary(PChar('MarkEzd.dll'));
if Handle > 0 then//加载成功就执行。
Memo1.Lines.Add('激光动态库载入成功!' + ' 句柄值:' + inttostr(Handle))
else
begin
Memo1.Lines.Add('激光动态库载入错误!' + ' 错误代码:' + inttostr(Handle));
Exit
end;
Initial := GetProcAddress(Handle, PAnsiChar('lmc1_Initial')); //取函数的地址。
if Assigned(Initial) then //如果函数存在就调用
begin
st := Initial(PAnsiChar(path), False, Handle);
case st of
0:
Memo1.lines.add('控制卡初始化成功!');
1:
Memo1.lines.add('发现EZCAD已经运行!');
2:
Memo1.lines.add('找不到EZCAD.CFG');
3:
Memo1.lines.add('打开LMC1失败');
4:
Memo1.lines.add('没有有效的lmc1设备');
5:
Memo1.lines.add('lmc1版本错误');
6:
Memo1.lines.add('找不到设备配置文件');
7:
Memo1.lines.add('报警信号');
8:
Memo1.lines.add('用户停止');
9:
Memo1.lines.add('不明错误');
10:
Memo1.lines.add('超时');
11:
Memo1.lines.add('未初始化');
12:
Memo1.lines.add('读文件错误');
13:
Memo1.lines.add('窗口为空');
14:
Memo1.lines.add('找不到指定名称的字体');
15:
Memo1.lines.add('错误的笔号');
16:
Memo1.lines.add('指定名称的对象不是文本对象');
17:
Memo1.lines.add('保存文件失败');
18:
Memo1.lines.add('找不到指定对象');
19:
Memo1.lines.add('当前状态下不能执行此操作');
end;
Memo1.SelStart := Length(Memo1.Text);
Memo1.SelLength := 0;
Memo1.Perform(EM_SCROLLCARET, 0, 0);
end
else
begin
Memo1.Lines.Add('找不到函数!');
raise Exception.Create('GetProcAddress 调用失败,错误代码:' + inttostr(getlasterror));
end;
finally
FreeLibrary(Handle);
end;
end;
