目的是想把"12345"传给字符串str1,但为何不行?
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)Private Sub Command1_Click()
'Debug.Print "1" & Chr(192) & Chr(192)
Dim bt(5)
Dim str1 As String
For i = 0 To UBound(bt)
bt(i) = 48 + i
Next
Call CopyMemory(ByVal StrPtr(str1), ByVal bt(0), 5)
Debug.Print str1
End Sub
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)Private Sub Command1_Click()
'Debug.Print "1" & Chr(192) & Chr(192)
Dim bt(5)
Dim str1 As String
For i = 0 To UBound(bt)
bt(i) = 48 + i
Next
Call CopyMemory(ByVal StrPtr(str1), ByVal bt(0), 5)
Debug.Print str1
End Sub
Dim str1 As String
For i = 0 To UBound(bt) - 1
bt(i) = 48 + i
Next
bt(5) = 0
Call CopyMemory(ByVal StrPtr(str1), ByVal bt(0), 6)
Debug.Print str1
其实不需要 API,直接 str1 = bt 或 str1 = StrConv(bt, vbUnicode)
'Debug.Print "1" & Chr(192) & Chr(192)
Dim bt(0 to 4) as Integer
Dim str1 As String
For i = 0 To UBound(bt)
bt(i) = 48 + i
Next
Call CopyMemory(ByVal StrPtr(str1), bt(0), 5)
Debug.Print str1
End Sub方法2:Private Sub Command1_Click()
'Debug.Print "1" & Chr(192) & Chr(192)
Dim bt(0 to 4) as Byte
Dim str1 As String
For i = 0 To UBound(bt)
bt(i) = 48 + i
Next
str1 = StrConv(bt, vbUnicode)
Debug.Print str1
End Sub
方法1:Private Sub Command1_Click()
'Debug.Print "1" & Chr(192) & Chr(192)
Dim bt(0 to 4) as Integer
Dim str1 As String
For i = 0 To UBound(bt)
bt(i) = 48 + i
Next
str1 = String(5, 0)
Call CopyMemory(ByVal StrPtr(str1), bt(0), 5)
Debug.Print str1
End Sub