问个十分不解的问题。
Dim yt_tmbyte(65) As Byte
dim aaa as string
ReadProcessMemory hProcess, ByVal za_am, yt_tmbyte(0), 32, 0&
if left(yt_tmbyte,instr(yt_tmbyte,vbnullchar)) = "工程管理项目" then
。。。。
end if
说明,za_am是一个指针。我读取这个指针指向的字符串,字符串内容是,工程管理项目,存到yt_tmbyte 里面。然后 left(yt_tmbyte,instr(yt_tmbyte,vbnullchar))去除多申请的空串。
这样得到的字符串,我原本想将它与"工程项目管理"这个字符串比较,然后得到正确的进程。但是我发现,不知道为什么,这两个字串始终不相等。我在比较的上方,用debug.print 打印yt_tmbyte,里面却是是"工程管理项目"啊~难道我去除空串去的错误?
请问,我有一个指向字符串的指针,我该如何给一个string类型的变量给他赋值呢?用copymemory?》
还有个问题。这回我也是读取一个字符串指针指向的字符串。同样也是用上述方法。
ReadProcessMemory hProcess, ByVal za_am, yt_tmbyte(0), 32, 0&
然后我用trim(yt_tmbyte)去除左右的空串。然后将它赋给一个aaa的string变量。
然后我用combo1.additem aaa
但是我发现,在有种情况下,combo1。中会出现2个aaa,于是我想做个判断。判断combo1中如果有 aaa 则不在继续添加aaa。具体的算法我用这么弄的
dim x as long
for x =0 to combo1.listcount -1
if combo1.list(x)= aaa
舍弃。。。
我这时又崩溃了。。。。前面将AAA添加到combo1.之后,然后用combo1.list()与aaa本身做比较。。。始终还是不能相同啊。。。。
我想问一下。。。。VB的字符串有什么特殊之处么?
我用C++从来没碰过这种事情啊。。。。
[解决办法]
Dim s as string
dim b() as byte
dim i as long
s="工程管理项目"
b=strconv(s,vbFromUnicode)
for i=0 to Ubound(b)
debug.print right("0"+hex(b(i)),2)+" ";
next
debug.print
[解决办法]
根据 VB圣经 的说法
if left(yt_tmbyte,instr(yt_tmbyte,vbnullchar)) = "工程管理项目" then
是不对的,vb是经过处理的,跟C的结构不一样。后面的地址保存的是长度等信息,不是简单的空字符
你直接把yt_tmbyte赋值给字符串,然后直接比较就不会有问题。