s = "test"    '"测试"
c = Len(s) + 1
e = RegSetValueExStr(hKey, m_sValueKey, 0&, ordType, s, c)
当s中含有中文时,RegSetValueExStr()会出错,如"测试"只会写进去一个"测",因为Len()函数把中文也当做一个。而RegSetValueExStr是按照字节存的。该怎么解决呢?
我曾经试过lenB()函数,但LenB()把英文也当做2个字节算。如"test"算8个

解决方案 »

  1.   

    Private Declare Function RegSetValueExStr Lib "advapi32" Alias "RegSetValueExA" _
      (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, _
       ByVal dwType As Long, ByVal szData As String, ByVal cbData As Long) As Long
    RegSetValueExStr的声明忘记加了
      

  2.   

    好了,问题已解决,方法如下,
                nLen = Len(s)
                For c = 1 To nLen                           '解决中文问题
                    If Asc(Mid(s, c, 1)) < 0 Then           '如果字符串中有全角字符"
                        nLen = nLen + 1
                    End If
                Next
                nLen = nLen + 1
                e = RegSetValueExStr(hKey, m_sValueKey, 0&, ordType, s, nLen)
    现在就差接分的了,接下去up都有分,满十个就给分了!!
      

  3.   

    这个帖子的主要解答人应该是作者本人。
    FAQ已审核。