+ -
当前位置:首页 → 问答吧 → 这个那里错啦?

这个那里错啦?

时间:2011-07-22

来源:互联网

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Private Sub Form_Load()
Dim a() As Byte
a = StrConv("abc", vbFromUnicode)
Dim x$
CopyMemory x, a(1), 1

End Sub

我的目的是从byte()里直接把中间字符b提取出来,这么办??请写下x为$和byte()的2种写法

作者: wowfiowow   发布时间: 2011-07-22

Dim x as byte

作者: hansin   发布时间: 2011-07-22

CopyMemory x, a(1), 1
第一个参数 x必然为0,导致出错

作者: BestBadGod   发布时间: 2011-07-22

as byte貌似是可以,但是比较麻烦啊,直接直接读入string变量里可以吗?应该怎么写?

作者: wowfiowow   发布时间: 2011-07-22

VB code

Private Sub Form_Load()
Dim a() As Byte
a = StrConv("abc", vbFromUnicode)
Dim x As String
x = Chr(a(1))
Debug.Print x
End Sub

作者: BestBadGod   发布时间: 2011-07-22

我想用CopyMemory 的办法,你那个就只能提取一个字符啊


Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Private Sub Form_Load()
Dim a() As Byte
a = StrConv("abc", vbFromUnicode)
Dim x$
CopyMemory StrPtr(x), StrPtr(a(1)), 1
MsgBox x
End Sub

这样为什么也是不行啊??

作者: wowfiowow   发布时间: 2011-07-22

CopyMemory VarPtr(x), VarPtr(a(0)), 1

作者: Veron_04   发布时间: 2011-07-22

引用 6 楼 veron_04 的回复:

CopyMemory VarPtr(x), VarPtr(a(0)), 1




rivate Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Private Sub Form_Load()
Dim a() As Byte
a = StrConv("abc", vbFromUnicode)
Dim x$
CopyMemory VarPtr(x), VarPtr(a(1)), 1
MsgBox x
End Sub

还是不行,高手指点

作者: wowfiowow   发布时间: 2011-07-22

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Private Sub Form_Load()

Dim a() As Byte
a = StrConv("abc", vbFromUnicode)
Dim x$
x = "1"
CopyMemory ByVal VarPtr(x), ByVal VarPtr(a(1)), 1
MsgBox x

End Sub

也不行,奇怪了,

作者: wowfiowow   发布时间: 2011-07-22

动了下手,这样应该OK
VB code

Option Explicit

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Private Sub Form_Load()
    Dim a() As Byte
    Dim x As Byte
    a = StrConv("abc", vbFromUnicode)
    CopyMemory ByVal VarPtr(x), ByVal VarPtr(a(1)), 1
    MsgBox Chr(x)
End Sub


作者: Veron_04   发布时间: 2011-07-22