用DELPHI如何调用的DLL

SKY1006 2004-11-22 09:15:56
初次学习DELPHI调用DLL
有一个DLL,有VB例子,但没有Delphi例子,请问在DELPHI如何写才能达到相同效果
VB例子:
Private Declare Sub setup Lib "Ez98.dll" (ByVal a%, ByVal b%, ByVal c%, ByVal d%, ByVal
e%, ByVal f%)
Private Declare Sub openport Lib "Ez98.dll" (ByVal command$)
Private Declare Sub sendcommand Lib "Ez98.dll" (ByVal command$)
Private Declare Sub intloadimage Lib "Ez98.dll" (ByVal filename$, ByVal image_name$,
ByVal image_type$)
Private Declare Sub extloadimage Lib "Ez98.dll" (ByVal filename$, ByVal image_name$,
ByVal image_type$)
Private Declare Sub ecTextOut Lib "Ez98.dll" (ByVal x%, ByVal y%, ByVal b%, ByVal c$,
ByVal d$)
Private Declare Sub closeport Lib "Ez98.dll" ()
Private Sub command1_Click()
Call openport("0")
Call setup(30, 7, 2, 1, 0, 0)
Call sendcommand("W70")
Call sendcommand("^P1")
Call sendcommand("^L")
Call sendcommand("AC,20,60,1,1,1,0,TEST")
Call ecTextOut(20, 10, 34, "标楷体", "中文测试")
Call sendcommand("E")
Call closeport
End Sub
...全文
159 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiuzhangcs21dn 2004-11-22
  • 打赏
  • 举报
回复
呵呵,我可以少收一点,:)
zzlingaaa 2004-11-22
  • 打赏
  • 举报
回复
ByVal不记得是传值还是传址了,如果是传值,var就不用了
zzlingaaa 2004-11-22
  • 打赏
  • 举报
回复
procedure setup (var a,b,c,d,e,f: integer);stdcall;external 'Ez98.dll';
procedure openport (var command: string);stdcall;external 'Ez98.dll';
procedure sendcommand (var command: string);stdcall;external 'Ez98.dll';
procedre intloadimage (var filename,image_name, image_type: string);stdcall;external 'Ez98.dll';
procedure extloadimage (var filename, image_name, image_type: string);stdcall;external 'Ez98.dll';
procedure ecTextOut (var x, y, b:string;var c, d: string);stdcall;external 'Ez98.dll';
procedure closeport;stdcall;external 'Ez98.dll';

procedure TForm1.Button1Click(Sender: TObject);
begin
openport('0');
setup(30, 7, 2, 1, 0, 0);
sendcommand('W70');
sendcommand('P1');
sendcommand('L');
sendcommand('AC,20,60,1,1,1,0,TEST');
ecTextOut(20, 10, 34, '标楷体', '中文测试');
sendcommand('E');
closeport;
End;
SKY1006 2004-11-22
  • 打赏
  • 举报
回复
好的,我再开一贴
princesd 2004-11-22
  • 打赏
  • 举报
回复
100分肯定有人帮你写
zhouyouben 2004-11-22
  • 打赏
  • 举报
回复
学习 分不要
xwdxwd 2004-11-22
  • 打赏
  • 举报
回复
1。静态调用

  在静态调用一个DLLs中的过程或函数时,external指示增加到过程或函数的声明语句中。

被调用的过程或函数必须采用远调用模式。这可以使用far过程指示或一个{$F +}编译指示。

Delphi全部支持传统Windows动态链接库编程中的三种调用方式,它们是:

  ● 通过过程/函数名

  ● 通过过程/函数的别名

  ● 通过过程/函数的顺序号 

//————————————————————静态调用举例

unit windows

interface

function FindWindowsEx(Parent,Child:hwnd;classname,windowsname:pchar):hwnd;stdcall;

const

user32='user32.dll'

implementation

function FindWindowEx; external user32 name 'FindWindowExA'

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

2. 动态调用 

2.1 动态调用中的API函数 

  动态调用中使用的Windows API函数主要有三个,即:Loadlibrary,GetProcAddress和Freelibrary。

1.Loadlibrary: 把指定库模块装入内存

  语法为:  function Loadlibrary(LibFileName: PChar): THandle; 

LibFileName指定了要装载DLLs的文件名,如果LibFileName没有包含一个路径,则Windows按下述顺序进行查找:

 (1)当前目录;

 (2)Windows目录(包含win.com的目录)。函数GetWindowDirectory返回这一目录的路径;

 (3)Windows系统目录(包含系统文件如gdi.exe的目录)。函数GetSystemDirectory返回这一目录的路径;

 (4)包含当前任务可执行文件的目录。利用函数GetModuleFileName可以返回这一目录的路径;

 (5)列在PATH环境变量中的目录;

 (6)网络的映象目录列表。
coeltdit 2004-11-22
  • 打赏
  • 举报
回复
先把这20分给我吧! :)

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧