一个菜鸟问题:如何在内存里查找字符串内容?
//程序A
Dim l As String
Dim m As String
Private Sub Command1_Click()
    Text3.Text = l
End Sub
Private Sub Form_Load()
    l = "Hello中国"
    m = "Thank You!"
End Sub
//运行后在没点Command1之前在内存里Search ("Hello中国"转16H码) 48 65 6C 6C 6F D6D0 B9FA找不到.点了Command1之后才能到到,这是为什么?
数是由低到到存储,那汉字和英文字符串呢?谁有这方面的资料也可以share一下,谢谢了

解决方案 »

  1.   

    能够找到这两个字符是挨着的,F5运行后VB6.EXE进程的03830000和0383000A两处内存地址分别存储了这2个字符
    03830000:48 65 6c 6c 6f d6 d0 b9 fa 00 54 68 61 6e 6b 20
    00380010:59 6f 75 21 如果编译了以后呢.(编译为P代码)只写LZ给出的这些代码..编译后大小是12.0 KB (12,288 字节)它们分别在:
    0014F114 48 00 65 00 6C 00 6C 00 …………
    0014F89C 54 00 68 00 61 00 6E 00 …………
    希望对LZ有所帮助
      

  2.   

    我在VB里试了一下,如楼上所说可以找到.
    可以编成EXE独立运行后再找就找不到了,这是为什么?当然我是就在没点Command之前找不到,点了之后就可以找到了
      

  3.   

    VB是用UNICODE的,是以双字节来保存字串的,所以就会多了个"0"
    所以楼主可能要试试搜一下多了一个"0"的字串
      

  4.   

    我加了"0"后在内存里还是找不到,我还试了"Game Master",情况一样.点command之前search不到"Hello中国",在点了command之后就可以找到了.我实在是不明白其中的原理.
    还请热心人多多帮助!!
      

  5.   

    用CE,下载地址我BLOG上有,,不过好象今天打不开呢,,搜索的时候范围选ALL,搜索类别选数组,然后输入以下内容
    48 00 65 00 6C 00 6C 00 
    就可以搜索到一个,,,换
    54 00 68 00 61 00 6E 00
    就是下一个你非要搜索它干什么呢?晕,迷糊.
      

  6.   

    48 65 6C 6C 6F D6D0 B9FA  是 ANSI 编码,l 存储的是 UNICODE 编码,应该找:48 00 65 00 6C 00 6C 00 6F 00 2D 4E FD 56
      

  7.   

    感谢各位的帮助,问题已经解决!
    几点错误:
    1.代码本身问题:
    变量名写错,查找的时候没能正确传递数组的第六位,写成a(0),a(1),...,a(4),a(4),a(6)
    应该是a(5)的.结果造成加"0"后找不到.
    2.UNICODE的问题
    用StrConv可以解决此问题再次感觉大家的热心帮助!!