您的位置:程序门 -> vb -> 基础类



vb 注册表 问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


vb 注册表 问题
发表于:2007-04-24 22:53:12 楼主
private   sub   getufopath()
                dim   nkeyhandle           as   long,   nvaluetype               as   long,   nlength               as   long
                dim   svalue           as   string
                dim   nret   as   long
                svalue   =   space(255)
                nlength   =   255
                nret   =   regopenkey(hkey_local_machine,   "software\2.0\install\currentinst\ ",   nkeyhandle)
                if   nret   <>   error_success   then
                        call   regclosekey(hkey)
                        goto   errhandle:
                  end   if
                nret   =   regqueryvalueex(nkeyhandle,   "configfile ",   0,   reg_sz,   svalue,   nlength)
                if   nret   <>   error_success   then
                        call   regclosekey(hkey)
                        goto   errhandle:
                  end   if
                msgbox   trim(svalue)   +   "aaaaa "
                call   regclosekey(hkey)
                exit   sub
               
errhandle:
          msgbox   err.description
         
end   sub


上面的程序能够得到svalue的值,而且正确

但nlength的值是255,导致svalue的长度也是255,所以trim(svalue)+ "aaaa "的值还是svalue的值,怎么修改才能加上 "aaaa "的值?

发表于:2007-04-25 00:47:251楼 得分:0
转到vb区。
发表于:2007-04-25 01:56:262楼 得分:0
用trim只能除去空格
svalue的值中包含的应该不是空格应该是chr(0)
具体的我没测试
你用replace(svalue,chr(0), " ")试试
发表于:2007-04-25 08:28:173楼 得分:0
ls说得很清楚了
发表于:2007-04-25 09:40:194楼 得分:0
dengxingjie(杰西)   说的是对的,
从注册表中取得的字符串,结尾都有 '\0 '的, '\0 '在vb中即是chr(0).
发表于:2007-04-25 10:12:285楼 得分:0
private   sub   getufopath()
                dim   nkeyhandle           as   long,   nvaluetype               as   long,   nlength               as   long
                dim   svalue           as   string*255
                dim   nret   as   long
                nlength   =   255
                nret   =   regopenkey(hkey_local_machine,   "software\2.0\install\currentinst\ ",   nkeyhandle)
                if   nret   <>   error_success   then
                        call   regclosekey(hkey)
                        goto   errhandle:
                  end   if
                nret   =   regqueryvalueex(nkeyhandle,   "configfile ",   0,   reg_sz,   svalue,   nlength)
                if   nret   <>   error_success   then
                        call   regclosekey(hkey)
                        goto   errhandle:
                  end   if
                dim   s   as   string
                s=left(svalue,instr(1,svalue,chr(0))-1)
                msgbox   s   +   "aaaaa "
                call   regclosekey(hkey)
                exit   sub
               
errhandle:
          msgbox   err.description          
end   sub


代码没经过测试,可能有问题,主要就是表达一个意思,不要用trim去除空格,因为我们不知道注册表中的内容是否含有空格
发表于:2007-04-25 12:17:286楼 得分:0
"主要就是表达一个意思,不要用trim去除空格,因为我们不知道注册表中的内容是否含有空格 "

//



好象我一直没考虑到这个问题.........
发表于:2007-04-25 13:00:177楼 得分:0
replace(svalue,chr(0), " ")
发表于:2007-04-25 13:55:258楼 得分:0
我一般都是   replace(str,vbnullchar,vbnullstring)
发表于:2007-04-25 21:41:099楼 得分:0
问题还是没有解决,本来路径是d:\ufsmart,但一用楼主们的方法,乱码是没有了
但本径变成了d:\ufsmartmart,为什么后面会多出一个mart

还有就是如果不用楼主们的方法,直接用msgbox   nvalue也没有问题,但就是不能直接在后面加字符串

盼解答!!

谢谢
发表于:2007-04-25 21:50:4410楼 得分:0
代码你都测试了吗
发表于:2007-04-25 22:59:5911楼 得分:0
left$(svalue,   nlength   -   1)

试试这个吧。睡觉去。
发表于:2007-04-26 07:57:0712楼 得分:0
呃..............自己还是要动点脑的好

不然会累死别人


快速检索

最新资讯
热门点击