2.下面是我在pb中的定义的写法
Function string DataDown_sp(string DownLoadStr,string DownloadLSH,ref string Rec_Data_Rs) library "yhybReckoning.dll" alias for "_DataDown_rs@12"
3.下面是我程序中的调用的写法、
String s_outputstr//返回值
String s_inputstr//输入值
String s_returnstr
s_inputstr = ‘测试|A#’
s_returnstr = DataDown_sp(s_inputstr,"J",s_outputstr)
If Trim(s_returnstr) <> '' Then
MessageBox('',s_returnstr)
Else
。。。。。
End If
4.现象:DataDown_sp 执行成功,并且能正确返回数值,然后程序立刻终止运行,直接退出
5.版本:9.03 build 8836
请指点下,谢谢!
21 个解决方案
#1
路过
#2
你真快
#3
s_outputstr需要先初始化,分配一段内存空间,
在函数调用前把s_outputstr=space(255)之类的,255为你可能返回的最大值
在函数调用前把s_outputstr=space(255)之类的,255为你可能返回的最大值
#4
谢谢3楼提醒
我明天试试,现在没有测试环境
我明天试试,现在没有测试环境
#5
呵呵,好好休息吧,这类问题见得多了,一抓一个准,放心睡吧
#6
问下 s_outputstr 这个返回值 是不确定长度的字符串,我多分配一些可以吗?
#7
可以,如果你对性能要求不是很高的话也可以space(500)或space(1000)之类的,多分配一些就好,
#8
不过现在的电脑分配1000和5000性能是看不出什么区别的,呵呵
#9
好的,多谢了
我以前也用过不少外部调用dll的 都是 没有预先分配的。
这次做的是 医保接口的 dll调用
我以前也用过不少外部调用dll的 都是 没有预先分配的。
这次做的是 医保接口的 dll调用
#10
呵呵,ref方式传递的字符型变量不分配的话,十有八九会出错的,偶尔也能通过,但理论上也是必须分配的,否则dll内部是无法返回值给pb的
#11
“十有八九会出错的,偶尔也能通过”确实是这种现象
#12
百度了很多,也没找到合适的说法。
谢谢老兄了,安心睡觉了 ^_^
谢谢老兄了,安心睡觉了 ^_^
#13
而且98/2000/xp上的出错机率和提示的错误还不一样,呵呵,所以弄得蛮多程序员都碰到过这个问题,在自己机器上可以其他的不行,呵呵,还有个办法,你可以看一下windows的事件查看器,里面也可以查看到一些信息的
#14
不需要找其他说法的,就是那一句,传址变量必须先分配空间再使用就可以了
#15
嗯,是看了,不过很多看不明白
什么 pbvm90.dll 然后就是什么版本的 和一大串的字符
什么 pbvm90.dll 然后就是什么版本的 和一大串的字符
#16
pb8 很熟悉的名字
您是不是在原来的 华软网上也注册过?
您是不是在原来的 华软网上也注册过?
#17
昕晨 空间的
#18
pbvm90.dll出错除了内存只读一般就是不同pb版本的dll冲突问题,
有时候pb异常中断还可能是其他的dll出错,这样就可以关联到具体的出错类别上去了;
有时候pb异常中断还可能是其他的dll出错,这样就可以关联到具体的出错类别上去了;
#19
呵呵,这个名字只在CSDN上用,华软有其它的号,
晚安贴~~
晚安贴~~
#20
都在后半夜干活,厉害。
这种问题我也碰到过,需要分配内存
这种问题我也碰到过,需要分配内存
#21
学习了,呵呵
#1
路过
#2
你真快
#3
s_outputstr需要先初始化,分配一段内存空间,
在函数调用前把s_outputstr=space(255)之类的,255为你可能返回的最大值
在函数调用前把s_outputstr=space(255)之类的,255为你可能返回的最大值
#4
谢谢3楼提醒
我明天试试,现在没有测试环境
我明天试试,现在没有测试环境
#5
呵呵,好好休息吧,这类问题见得多了,一抓一个准,放心睡吧
#6
问下 s_outputstr 这个返回值 是不确定长度的字符串,我多分配一些可以吗?
#7
可以,如果你对性能要求不是很高的话也可以space(500)或space(1000)之类的,多分配一些就好,
#8
不过现在的电脑分配1000和5000性能是看不出什么区别的,呵呵
#9
好的,多谢了
我以前也用过不少外部调用dll的 都是 没有预先分配的。
这次做的是 医保接口的 dll调用
我以前也用过不少外部调用dll的 都是 没有预先分配的。
这次做的是 医保接口的 dll调用
#10
呵呵,ref方式传递的字符型变量不分配的话,十有八九会出错的,偶尔也能通过,但理论上也是必须分配的,否则dll内部是无法返回值给pb的
#11
“十有八九会出错的,偶尔也能通过”确实是这种现象
#12
百度了很多,也没找到合适的说法。
谢谢老兄了,安心睡觉了 ^_^
谢谢老兄了,安心睡觉了 ^_^
#13
而且98/2000/xp上的出错机率和提示的错误还不一样,呵呵,所以弄得蛮多程序员都碰到过这个问题,在自己机器上可以其他的不行,呵呵,还有个办法,你可以看一下windows的事件查看器,里面也可以查看到一些信息的
#14
不需要找其他说法的,就是那一句,传址变量必须先分配空间再使用就可以了
#15
嗯,是看了,不过很多看不明白
什么 pbvm90.dll 然后就是什么版本的 和一大串的字符
什么 pbvm90.dll 然后就是什么版本的 和一大串的字符
#16
pb8 很熟悉的名字
您是不是在原来的 华软网上也注册过?
您是不是在原来的 华软网上也注册过?
#17
昕晨 空间的
#18
pbvm90.dll出错除了内存只读一般就是不同pb版本的dll冲突问题,
有时候pb异常中断还可能是其他的dll出错,这样就可以关联到具体的出错类别上去了;
有时候pb异常中断还可能是其他的dll出错,这样就可以关联到具体的出错类别上去了;
#19
呵呵,这个名字只在CSDN上用,华软有其它的号,
晚安贴~~
晚安贴~~
#20
都在后半夜干活,厉害。
这种问题我也碰到过,需要分配内存
这种问题我也碰到过,需要分配内存
#21
学习了,呵呵