小弟有个问题,请大家帮忙看看(50分)

  • 主题发起人 主题发起人 rbc
  • 开始时间 开始时间
R

rbc

Unregistered / Unconfirmed
GUEST, unregistred user!
我遇到这样一个问题,我用delphi写了一个dll,用VB来调用,dll里就是一个简单的函数,
这个函数返回一个字符串,但是在用VB调用时出错,我能保证我的函数声明以及函数的参数传递都没有问题
,另外我把这个函数的返回值改为Integer类型,就能正常,就是String类型出错,不知道为什么,请大家帮
忙看看,小弟谢谢了!!!!
 
在VB中从DLL取数时先为VB中的字付串变量分配空间
 
不要用String类型,我在用notes时也出现个这种情况,
原因是delphi的string类型长度与vb的string的长度并不一样,类型根本不一致。
integer只是碰巧而已,
不同的工具之间建议用windows API提供的类型(word,dword,byte,Pchar,等)来这样不会有问题。

上例换成Pchar就可以了,我就是这样解决类似问题的!
 
用DLL传递字符串数据时尽量不要用String类型!改用ShortString等
看DLL模板文件前面的注释,要用string可以,uses ShareMem,一定要放在最前!!
 
好的,我马上试试
 
谢谢各位大哥,问题解决了:)))))
 
用 uses sharemem,在不同工具中也没有什么用的!(指传递)。
sharemem只是管理String的dll,如果都是用delphi来做可以用String;
 
RBC老大,想跟你请教内存读写的问题,不知道怎么联系你?
 
String类型可以的,就是在用VB调用时,会在尾巴多出个 0
[:)][:D][8D]
 
后退
顶部