delphi 参数 转 vb6 参数问题(100分)

  • 主题发起人 主题发起人 zfox
  • 开始时间 开始时间
Z

zfox

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个文件:wd1012.dll,是用DELPHI 编的,其中申明了一个函数(三种不同参数)接口,申明如下:
function GetCardNo(var CardNo:PChar):integer //一个pchar类型
function GetCardNo(var CardNo:Double):integer //一个double 类型
function GetCardNo(var CardNo:Cardinal):integer
//一个cardinal 类型
都是指针参数,在VB6 中,怎么调用 这个DLL的GetCardNo函数,我卡在指针上,郁闷……
请高手指点一下,谢谢,最好给个简单的代码
 
VB都忘了.C++的话还能帮你.
 
呵呵,VB 我才刚接触的,对于VB里面 好象不涉及到 指针类型,根据介绍 一般都用long 类型来代替,但我试了好几次,就是不行,返回 错误……cry
 
看你的Delphi函数声明,没有使用stdcall的调用约定,Delphi默认是用Register的调用约定的,VB只支持stdcall调用约定,不支持Delphi的Register函数调用约定,所以VB没办法使用上面的函数(而且还用了函数重载,就更难转成VB了)。
 
那我可以不使用 重载的,可以使用如下的申明
有一个文件:wd1012.dll,是用DELPHI 编的,其中申明了一个函数(三种不同参数)接口,申明如下:
function GetCardNo_S(var CardNo:PChar):integer //一个pchar类型
function GetCardNo_I(var CardNo:Double):integer //一个double 类型
function GetCardNo_C(var CardNo:Cardinal):integer
//一个cardinal 类型
(也当他是stdcall)
怎么使用VB6来调用??谢谢,有点急
 
// 大概像下面那样。
Declare Function GetCardNo_S Lib "wd1012.dll" (CardNo As String) As Long
Declare Function GetCardNo_I Lib "wd1012.dll" (CardNo Asdo
uble) As Long
Declare Function GetCardNo_C Lib "wd1012.dll" (CardNo As Long) As Long
 
哦,谢谢先,我再回去 试试
有人说要用byval 申明,有人说要 byref,哎,一个一个试
 
Delphi中加var的变量参数是引用参数(ByRef),不加var的变量参数是传值参数(ByVal),而VB默认是使用引用参数的(ByRef),所以我前面声明的VB函数没有加ByRef或ByVal就是使用默认的引用参数(ByRef)参数。
 
谢谢你。
在你的提示下,我终于成功完成了调用,呵呵。
在vb中可以使用alias 来完成delphi 中的name 功能。
前几天,因为这个网站上不了,所以一直没结贴。
 
后退
顶部