编程对注册表编辑时,如果含有中文,写注册表时,只有部分字符串被写入,有什么好的办法解决呀,谢谢!

zyjfxx 2006-08-07 01:34:18
准备编程实现在注册表的启动项将自己写的程序加进去,可是写入注册表时只能写入前半部分,最后总要丢一些字符,如果字符串中不含有中文,没有这个问题,加大字符串长度可以解决,但是我要对读出的字符串与要写入的字符串进行比较,使用中不可避免要有中文的,哪位大侠有好的解决方案呀?谢谢!分不够可以再加
...全文
121 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Alzzl 2006-08-07
  • 打赏
  • 举报
回复
楼上的方法好,学习
yyz985 2006-08-07
  • 打赏
  • 举报
回复
如果不用API的话这样也可以:
LenB(StrConv("a啊",vbFromUnicode))
返回也是3
yyz985 2006-08-07
  • 打赏
  • 举报
回复
Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long

用这个函数计算
lstrlen("a啊")
返回3
fxy_2002 2006-08-07
  • 打赏
  • 举报
回复
同意一楼。
以前碰到过,只要计算长度正确,就不会出错
vansoft 2006-08-07
  • 打赏
  • 举报
回复
給樓上的回答完了。
Alzzl 2006-08-07
  • 打赏
  • 举报
回复
问题的原因是因为vb中的自带函数不能很好的返回中英文混合的字符串的长度
len只能返回总字符数,而lenb之能返回字节数,而vb中的字符是以unicode存储的
所以返回的是2倍长度,用下面这个函数可以返回你要求的长度,即全角字2字节,半角
字1字节
Private Function LenOfStrB(str As String) As Integer
Dim i As Integer
For i = 1 To Len(str)
If Asc(Mid(str, i)) < 0 Then LenOfStr = LenOfStr + 1
Next
LenOfStr = LenOfStr + Len(str)
End Function

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧