dim str1 as string
dim rva as long 
如何取出str1的地址赋值给:rva
也就是取出string 类型的地址

解决方案 »

  1.   

    变量地址=varptr(变量名)'ANY型   
    变量地址=strptr(变量名)'string   
    其余类推
      

  2.   

    Dim str1 ,str2 As String
    Dim byte1(0 To 100) As Byte
    str1 = Chr(62) + Chr(62)
    CopyMemory ByVal VarPtr(byte1(0)), ByVal StrPtr(str1), LenB(str1)
    MsgBox byte1(1)为何byte1(1)等于0 ?如果:
        str1="代码"我想把str1的数据拷贝到byte1数组里,怎么办?之后又如何把byte1数组里的数据拷贝到str2里,使得:"代码"=str2
      

  3.   

    我现在没有VB。没有办法试,我记得好象传递用 byref 按地址传递的。
      

  4.   

         CopyMemory VarPtr(byte1()),StrPtr(str1), 4你用上面的语句试试。
      

  5.   

    VarPtr()取地址,根据声明形式的不同可以变化成StrPtr(),ObjPtr(),ArrayPtr()等等。最后一个要自己声明:
     Declare Function ArrayPtr()Lib "msvbvm60.dll" Alias "VarPtr" (Var() As Any) As Long
      

  6.   

    CopyMemory VarPtr(byte1(1)),StrPtr(str1), 4 
    这样再试一次。
    如果不行,我想不出了。我现在没有办法试。
      

  7.   

    CopyMemory VarPtr(byte1(1)),StrPtr(str1), 4 
    这样再试一次。 
    在贴贴子之前我试了,不行!
      

  8.   

    CopyMemory ByVal VarPtr(byte1(0)), ByVal StrPtr(str1), 4 就这样,你将最后改为4试一下看先。
      

  9.   

    我也早试了,不行!
    声明了ArrayPtr
    然后:CopyMemory ByVal ArrayPtr(byte1()), ByVal StrPtr(str1), 4
    还是不行!
      

  10.   

    楼上那样肯定不行了,ArrayPtr(byte1())获得的是SafeArray结构地址,不能随便乱改不然会引起VB的IDE崩溃。如果只是想要把String转换成byte数组的话,为何不试试StrConv()函数呢?
      

  11.   

    StrConv(string,   conversion,   LCID) 
      常数                   值         说明     
      vbUpperCase          1        将字符串文字转成大写。     
      vbLowerCase          2        将字符串文字转成小写。     
      vbProperCase         3        将字符串中每个字的开头字母转成大写。     
      vbWide*              4*       将字符串中单字节字符转成双字节字符。     
      vbNarrow*            8*       将字符串中双字节字符转成单字节字符。     
      vbKatakana**         16**     将字符串中平假名字符转成片假名字符。     
      vbHiragana**         32**     将字符串中片假名字符转成平假名字符。     
      vbUnicode            64       根据系统的缺省码页将字符串转成   Unicode。    
      vbFromUnicode        128      将字符串由   Unicode   转成系统的缺省码页。
    如何转换啊?
      

  12.   

    转换成字符数组:
    byte1()=StrConv(str1,vbFromUnicode)转换回字符串的话:
    str1=StrConv(byte1(),vbUnicode)
      

  13.   

    http://topic.csdn.net/u/20080724/21/b193a4b2-eaab-4cb7-9a48-ba4e00f0b82c.html看一下上面那个贴子吧。看看大家的处理办法。
    其中zzyong00 阿勇的解决办法就是用到了,CopyMemory看对你有帮助没。
      

  14.   

    byte1()=StrConv(str1,vbFromUnicode) 不能给byte1()数组赋值
      

  15.   

    我的正确代码:
    Dim str1 As String * 10
    Dim byte1(0 To 100) As Byte
    str1 = "文件"
    str1 = StrConv(str1, 128)
    CopyMemory ByVal 映射地址, ByVal VarPtr(byte1(0)), Len(str1)