首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

请问:PB 怎么声明调用delphi写的dll

2012-07-31 
请教:PB 如何声明调用delphi写的dll最近做医院接口,他们的dll是用delphi写的,如下:b.Init(AIniDir: pChar)

请教:PB 如何声明调用delphi写的dll
最近做医院接口,他们的dll是用delphi写的,如下:
b.Init(AIniDir: pChar):integer;  
参数为pcahr类型,返回值为整型
我在pb这样声明:
FUNCTION integer Init ( string AIniDir ) library "hisinterface.dll"
调用代码如下:
int ls_connect 

string AIniDir
AIniDir=space(256)
AIniDir="E:\HIS测试\"
ls_connect=Init(AIniDir)
在调用的时候就报错了:

ls_connect=Init(AIniDir),这句报错了
错误信息是:bad runtime function reference ,请各位帮我分析一下

[解决办法]
FUNCTION long Init ( ref string AIniDir ) library "hisinterface.dll"

[解决办法]
b. Init(AIniDir: pChar):integer;
参数为pcahr类型,返回值为整型
我在pb这样声明:
FUNCTION integer Init ( string AIniDir ) library "hisinterface.dll"
调用代码如下:
int ls_connect

string AIniDir
AIniDir=space(256)
AIniDir="E:\HIS测试\"
ls_connect=Init(AIniDir)

问题: AIniDir 提供接口方是否为输出;
如果不是输出 就不用ref 了否则要ref 和space(100)
只是输入就直接 ls_connect=Init(="E:\HIS测试\")
这样就可以了



[解决办法]
Init(AIniDir: pChar):integer
pChar是等同于pb的字符串,问题是,它是ansi的单字节字符串,以\0作为结束。
pb10以下,应该传入string没问题。10以上要使用string()函数转换为ansi编码的吧。因为10以上是unicode。

热点排行