我在DLL中写了一个重载的函数,但是在程序中调用不正常。
DLL结构如下:unit ALAC_FillComboBox;interfaceuses
ShareMem, Windows, SysUtils, DBGrids, Math, DB, DbTables, StdCtrls;procedure FillComboBox(ComBo: TComboBox; Query1: TQuery; table: PChar; namefield: PChar);overload;stdcall;
procedure FillComboBox(ComBo: Tcombobox; Query1: TQuery; table: PChar; namefield: PChar; Desction: PChar);overload;stdcall;implementationprocedure FillComboBox(ComBo: Tcombobox; Query1: TQuery; table: PChar; namefield: PChar);
begin
...
end;procedure FillComboBoxD(ComBo: Tcombobox; Query1: TQuery; table: PChar; namefield: PChar; Desction: PChar);
begin
...
end;end.函数调用如下
:
procedure FillComboBox(ComBo: TComboBox; Query1: TQuery;
table: PChar; namefield: PChar);overload;stdcall external 'ALACDLL.DLL';
procedure FillComboBox(ComBo: TComboBox; Query1: TQuery;
table: PChar; namefield: PChar; Desction: PChar);overload;stdcall external 'ALACDLL.DLL';
运行参数多的函数没有问题,把DLL中代码原封不动的拷过来运行也没问题,但是就是不能将函数放在DLL中。各位大哥,快来帮忙呀!
DLL结构如下:unit ALAC_FillComboBox;interfaceuses
ShareMem, Windows, SysUtils, DBGrids, Math, DB, DbTables, StdCtrls;procedure FillComboBox(ComBo: TComboBox; Query1: TQuery; table: PChar; namefield: PChar);overload;stdcall;
procedure FillComboBox(ComBo: Tcombobox; Query1: TQuery; table: PChar; namefield: PChar; Desction: PChar);overload;stdcall;implementationprocedure FillComboBox(ComBo: Tcombobox; Query1: TQuery; table: PChar; namefield: PChar);
begin
...
end;procedure FillComboBoxD(ComBo: Tcombobox; Query1: TQuery; table: PChar; namefield: PChar; Desction: PChar);
begin
...
end;end.函数调用如下
:
procedure FillComboBox(ComBo: TComboBox; Query1: TQuery;
table: PChar; namefield: PChar);overload;stdcall external 'ALACDLL.DLL';
procedure FillComboBox(ComBo: TComboBox; Query1: TQuery;
table: PChar; namefield: PChar; Desction: PChar);overload;stdcall external 'ALACDLL.DLL';
运行参数多的函数没有问题,把DLL中代码原封不动的拷过来运行也没问题,但是就是不能将函数放在DLL中。各位大哥,快来帮忙呀!
解决方案 »
- BusinessSkinForm使用
- 如何模拟鼠标选中 DBGridEH 中的多个行
- 紧急求救!!!!!
- 请问各位大虾Delphi如何操作word插入页码、页眉、页脚?
- 数据库里面类似于cg20040921001的单号要怎么增加呢?
- 如何写程序测试SQL服务器是否存在?急急急....
- 怎么撤销表中的字段主键约束,以及怎么把一张表中几个字段都设为主键?用SQL语句实现!急!急!
- 100分求教!怎样在任务管理器里将自己的进程隐藏起来!
- 用Delphi的QuickRep设计主从报表时,如何才能让每条主表纪录都出现在新的一页的页首
- 关于Delphi4.0中的socket控件的问题
- 关于ObjectPascal的问题
- 散分
dll中能声明这种procedure,不可能把,会地址错的
Exports
FillComboBox name 'FillComboBox';
呀?
ShareMem, Windows, SysUtils, DBGrids, Math, DB, DbTables, StdCtrls;procedure FillComboBox(ComBo: TComboBox; Query1: TQuery; table: PChar; namefield: PChar);overload;//stdcall;
procedure FillComboBox(ComBo: Tcombobox; Query1: TQuery; table: PChar; namefield: PChar; Desction: PChar);overload;//stdcall;
这样试试看.
table: PChar; namefield: PChar);overload;stdcall external 'ALACDLL.DLL';对象的创建要在dll中,不然,即使能运行退出时也会地址错,内存地址已经错了,这时候你不会想到是dll惹的祸
关键的问题是在调用参数少的函数时程序会提示缺少参数,好象是没有重载成功一样。
而
procedure FillComboBox(ComBo:THandle ; Query1: THandle;
table: PChar; namefield: PChar);overload;stdcall external 'ALACDLL.DLL';好像是默认指定,这样好像不行。