一个关于dll的简单问题已接近解决,再加110分共260分酬谢(110)

  • 主题发起人 主题发起人 laowt
  • 开始时间 开始时间
马上发,请看新帖
 
接口这样声明:注意大小写!unit DllInterface;interfaceconst EasyDLL='EasyUSB_DLL.dll'; procedure EasyUSB_Init(); cdecl; procedure EasyUSB_Read(Data1,data2,data3:Pbyte);cdecl; procedure EasyUSB_Write(Data1,data2,data3:Word);cdecl;implementation procedure EasyUSB_Init; external EasyDLL Name 'EasyUSB_Init';//注意大小写 procedure EasyUSB_Read; external EasyDLL Name 'EasyUSB_Read';//注意大小写 procedure EasyUSB_Write; external EasyDLL Name 'EasyUSB_Write';//注意大小写end.这样调用即可。unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementationuses DllInterface;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin try EasyUSB_Init; except ShowMessage('未找到设备!'); end;end;procedure TForm1.Button2Click(Sender: TObject);var D1,D2,D3:array[0..10] of Byte;begin EasyUSB_Read(@D1[0],@D2[0],@D3[0]);end;试一试!
 
EasyUSB_Read(@D1[0],@D2[0],@D3[0]);读了,在什么地方显示。我怎么知道它做了什么
 
监视一下或在窗体放三个Label控件即可!当然,你还可以转换成二进制或 16 进制字符显示。procedure TForm1.Button2Click(Sender: TObject);var D1,D2,D3:array[0..10] of Byte;begin FillChar(D1,sizeof(D1),0); FillChar(D1,sizeof(D2),0); FillChar(D1,sizeof(D3),0); EasyUSB_Read(@D1[0],@D2[0],@D3[0]); Label1.caption:=IntTostr(D1[0]); Label2.caption:=IntTostr(D2[0]); Label2.caption:=IntTostr(D3[0]);end;
 
好,已经能显示了!能不能在Unit1中完成,也就是说不用unit DllInterface;
 
试试这个implementation //uses DllInterface;procedure abcd_Read(Data1,data2,data3:Pbyte);cdecl; external ABCDdll;
 
多人接受答案了。
 
后退
顶部