为什么我在vs2005的vb环境下定义一个字符串数组就没问题 
ByVal path() As String 
而在vb6.0下这样定义却提示“数组参数必须为ByRef" 我要在vb6.0下通过,该怎么办? 

解决方案 »

  1.   

    ByVal path() As String 改为定义为byval Path
      

  2.   

    不行啊,我用vc写的dll里定义这个函数参数为BSTR path[],现在要在vb里调用,应该怎么转化?
    我在vs2005的vb下定义为参数ByVal path() As String,运行没问题
    但在vb6.0下却提示”数组参数必须为ByRef“,应该怎么办?
      

  3.   

    VB2005和VB6是完全不一样的,怎么比?
    VB6中数组参数必须为ByRef
      

  4.   

    哪有什么费劲的,用byref方式传不就行了
      

  5.   

    问题是用byref出错啊,好像没有正确传进去
      

  6.   


    有两点必须知道:
    1. vb里的数组是“安全数组”(SAFEARRAY)
    2. vb里的字符串是BSTR,而且使用OLEAUT32来管理的
    如果在vb里定义:
    Public Declare sub TestString Lib "my.dll" (ByRef a() As String) 
    那么传递过去的是 SAFEARRAY** ppsa (指针的指针,好奇怪呀!我也不知为啥如此),
    在vc里也必须是SAFEARRAY,然后对这个数组进行“修改”(因为是传址,所以相当于从vc传回到vb了),
    具体用法还是查一下API为好,因为里面很长在这贴不了那么多。
      

  7.   

    你可以使用
    ByVal path As Variant你只要知道你要传什么参数就可以
      

  8.   

    BSTR path[] 其实就是一个 BSTR*,所以
    Declare sub X ... (Byref path as string, ...)'调用
    dim path() as string
    X path(0), ...