起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 233|回复: 12

X3平台引入外部控件(.dll)的问题**

[复制链接]
发表于 2007-8-10 16:54:45 | 显示全部楼层 |阅读模式
X3平台引入外部控件(.dll)的问题

1:我在DELPHI环境下创建一个unit,如下:

unit carddll;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Grids, DBGrids, StdCtrls, Menus, Buttons ,inifiles,extctrls ;
var
  icdev,iSocket:smallint;
  IP,Port:string;
type
   Form=class
   private
   public
   function iDOpenPort(iReaderPort:smallint;iReaderType:smallint):smallint;stdcall;
   end;
implementation
   function Form.iDOpenPort; external 'BjMwCpu.dll' name 'iDOpenPort';
end.
并编译通过,经测试,在DELPHI环境下这个函数的可被顺利调用。
2:通过“ImpIDE.exe”使生成:carddll_reg.pas,这一个过程也没有任何问题。
3:通过DELPHI创建一个Package,加入carddll.pas、carddll_reg.pas和X3下的CLRun.dcp,编译生成:dd.bpl,这一个过程也没有任何问题。
4:在X3平台下引入相应的.dll和.bpl文件,在X3下测试调用
unit MainForm;
interface
uses
  Business.System, Business.Forms,cc;
type
  TMainForm = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    {private declarations}
  public
    {public declarations}
  end;
implementation
procedure TMainForm.Button1Click(Sender: TObject);
var
a:integer;
b:String;
c:Form;
begin
            c:=Form.Create;
            a:=c.iDOpenPort(2,2);
end;
end.
编译成功
运行出现:
(如图所示)

rtdgb.jpg

16.18 KB, 下载次数: 142

回复

使用道具 举报

发表于 2007-8-10 17:18:44 | 显示全部楼层
运行批处理文件注册了吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-13 11:05:58 | 显示全部楼层
已经注册了呀!
在“2:通过“ImpIDE.exe”使生成:carddll_reg.pas,这一个过程也没有任何问题”这一步之前就已经注册了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-13 14:32:10 | 显示全部楼层
怎么没有人回答啊?!
回复 支持 反对

使用道具 举报

发表于 2007-8-13 14:42:02 | 显示全部楼层
那把您注册bat的内容贴一下吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-13 16:41:35 | 显示全部楼层
delphiimporter "carddll.pas" bb.dll -pl -pb -DMSWINDOWS;VER140;D3;D4;D5;D6;WIN32 -u%cd%;%cd%\ImpSrc;%cd%\lib -caa.ipr -o%cd%\lib
pause
回复 支持 反对

使用道具 举报

发表于 2007-8-13 16:49:48 | 显示全部楼层
你把上面的代码修改一下,在类里面单独写一个函数来调用dll函数。
还有,把form的类名修改一下,form的名字太容易冲突了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-13 17:19:19 | 显示全部楼层
函数iDOpenPort(iReaderPort:smallint;iReaderType:smallint):smallint就是调用了dll函数的呀
再有,这里这个from不会有冲突吧,这里我可以试一下,但我觉得不是这里的问题
回复 支持 反对

使用道具 举报

发表于 2007-8-13 17:21:02 | 显示全部楼层
类里面的接口函数,最好用integer代替smallint,尽量用通用数据类型
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-14 09:38:30 | 显示全部楼层
照你们说的,我又做了一变,结果还是一样的,怎么回事??
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-14 01:14 , Processed in 0.040978 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表