Private Sub Command1_Click()
Dim aa As String
aa = StrConv("床前明月光疑是地上霜", vbUnicode)
Debug.Print Len(aa)
End Sub运行之后得到18!百思不得其解,应该是20呀!谁能帮忙看看
Dim aa As String
aa = StrConv("床前明月光疑是地上霜", vbUnicode)
Debug.Print Len(aa)
End Sub运行之后得到18!百思不得其解,应该是20呀!谁能帮忙看看
Private Sub Command1_Click()
Dim aa As String
aa = StrConv("床前明月光疑是地上霜", vbUnicode)
Debug.Print Len(aa)
Debug.Print aa
End Sub你看看转换后你得到的是什么
Dim aa As String
aa = "床前明月光疑是地上霜"
Debug.Print LenB(aa)End Sub
这样就是20了
Dim aa As String
aa = StrConv("床前明月光疑是地上霜", vbFromUnicode)
Debug.Print LenB(aa)
End Sub
aa = StrConv("床前明月光", vbUnicode)可是当我将aa延长为“床前明月光疑是地上霜”时,前面九个字都很正常,但最后一个字却无论如何都是个乱码!用内存读取工具查看,在“霜”这个位置上,出现了缺损,本来应该是1C 97,但后面的97却不见了!而且奇怪地是,当aa的内容继续加长,总是出现这个问题!前九个字都很正常,后面一堆乱码!
这个函数你最好把第三个参数改一下,改成byval xx as long
然后传入strptr(aa),后面的长度改为(len(aa) + 1) * 2
否则由于vb调用的是WriteProcessMemoryA因此在你调用这个函数的时候会首先把aa转换为ascii,然后再调用,改为byval xx as long就不会有这个问题了
然后传入strptr(aa),后面的长度改为(len(aa) + 1) * 2内存里面倒是一切都正常了~可是我以前那种方法只要把接受程序刷新一次,界面上就可以显示出改动后的文字~但现在内存里面改好了,我怎么刷新都不出来!这是为什么啊?求求你,帮帮我~牛人!