注册 登录
编程论坛 VB6论坛

为何将VB结构体数组作为函数的参数时,总是不能通过编译?(代码见贴内)

shi781203 发布于 2013-11-10 18:11, 3127 次点击
以下代码进行编译时总是弹出提示“类型不匹配,缺少数组或用户定义类型”
Private Type PaiType    '定义一个结构体为PaiType
    PaiZhi As Integer
    PaiHua As Integer
    Pai As Integer
End Type

Private Sub Form_Load()
    Dim Pais(52) As PaiType    '定义了52个结构数组元素用作牌信息
    Call XiPaiGuoCheng(Pais)    ’执行洗牌过程--实参为结构数组名
End Sub

Private Sub XiPaiGuoCheng(Pais_c() As PaiType)   '定义洗牌过程--形参为区别实参在结构数名后加了“_c”
……
……
……
End Sub
5 回复
#2
风吹过b2013-11-10 19:25
你注意看了错误提示吗?
我记得是 必须要 公用 的结构体才能当作参数调用。
#3
bczgvip2013-11-10 20:02
以上代码没问题。
公用的结构体才能被公用。
类里没法声明公用结构体,好吧,VB6而已。
公用的类函数里不能有私有结构体。
换了个输入法打字都慢了。
#4
shi7812032013-11-10 22:43
以下是引用风吹过b在2013-11-10 19:25:37的发言:

你注意看了错误提示吗?
我记得是 必须要 公用 的结构体才能当作参数调用。

试过用Public将结构体公有化,但还是不行!
#5
风吹过b2013-11-11 08:45
窗体代码:
Option Explicit
Private Sub Form_Load()
    Dim Pais(52) As PaiType    '定义了52个结构数组元素用作牌信息
    Call XiPaiGuoCheng(Pais)    '执行洗牌过程--实参为结构数组名
End Sub

-----------------------------
模块代码:
Option Explicit

Public Type PaiType    '定义一个结构体为PaiType
    PaiZhi As Integer
    PaiHua As Integer
    Pai As Integer
End Type

Public Sub XiPaiGuoCheng(Pais_c() As PaiType)   '定义洗牌过程--形参为区别实参在结构数名后加了“_c”
MsgBox "YES"
End Sub

-------------------
定义为全局的要放到模块文件里。不能在 窗体代码中定义为全局函数,那么是没用的。
窗体就是一个类,在窗体里定义的全局函数,就是 窗体这个类的对外接口过程函数。定义的全局变量,就是窗体的属性。
#6
vbvcr512013-11-14 18:27
放在标准模块里用public开头,然后在窗体里调用模块。自己多调试调试。
1