Declare TV_StartPlayFile (p1 as long, p2 as string, p3 as long, p4 as long) as long
参数名按函数定义写。

解决方案 »

  1.   

    传地址怎么样?
    byref ( not byval ) string
      

  2.   

    应该可以直接传string类型,看一下结果如何。
    否则就不好办了。
      

  3.   

    function TV_StartPlayFile ( as long, byval as string, as long,  as long) as long
      

  4.   

    1 使用定长字符串接收,首先将其初始化后在接收。
    2 使用字节数组接收,字节数组的的第1个记录就是它的起始地址。1 例子
    dim strTemp as String*255
    dim lngTemp as LongstrTemp=space(255)
    lngTemp = TV_StartPlayFile (X, strTemp, X, X)2 例子
    dim strTemp(255) as byte
    dim lngTemp as LonglngTemp = TV_StartPlayFile (X, strTemp(1) , X, X)
      

  5.   

    TV_StartPlayFile (ByVal Arg1 As Long, ByRef Arg2 as String, ByVal Arg3 As Long, ByVal Arg4 As Long) As Long用ByRef来传指针。我认为因该这样,不知行不行。
      

  6.   

    STRING 传值(BYVAL)。
    C和BASIC处理字符串变量时在结尾加的结束标识符是不同的。传地址不行吧。
      

  7.   

    字符串必须用ByValByVal对String的意义是 把VB内部的UniCode字符串转换成ANSI字符串,并加上\0字符串结束标记
      

  8.   

    我同意zyl910的
    我试过了可以的
      

  9.   

    对kmcycde 修改
    Declare TV_StartPlayFile (byval p1 as long, byval p2 as string, byval p3 as long, byval p4 as long) as long
      

  10.   

    Declare TV_StartPlayFile Lib "???.dll" (ByVal p1 As Integer, ByVal p2 As String, ByVal p3 As Long, ByVal p4 As Long) As Long