关于在VB中GetPrivateProfileString返回字符串长度及处理的一些问题

Eddy 发布于2010-1-16 23:53:35 分类: 程序设计 已浏览loading 网友评论1条 我要评论

这个问题很有意思,上网搜索了下也没有什么好的解决办法,最后我自己想了个办法解决了,在这和大家分享下:

在VB中,用GetPrivateProfileString函数可以读取ini文件中的相关配置信息,当读取出信息后,如果我们需要读取字符串的长度或是对字符串进一步处理(比如对字符串进行MD5加密),这时麻烦就来了。

Dim strName As String * 255
GetPrivateProfileString "General", "LastUserName", "", strName, 255, App.Path & "\linkageclientconfig.ini"
MsgBox Len(Trim(strName))

如果原来配置文件中相对应的字符串为"EddyBlog2009",那么你是不是认为Len(Trim(strName))会返回12呢?

答案是不会返回12,而是返回255。如果我们对读取字符串进行MD5加密,MD5(Trim(strName))与MD5("EddyBlog2009")也不会相等。

有人说这样能解决问题

Dim strName As String
strName = Space(255)
GetPrivateProfileString "General", "LastUserName", "", strName, 255, App.Path & "\linkageclientconfig.ini"
MsgBox Len(Trim(strName))

我测试了下,这样也不行,返回值会是13,而不是12。

我的解决办法:

如果你只需要获取字符串长度,那可以利用GetPrivateProfileString函数的返回值直接获取,这样最简单。

如果你需要像上面说的进行MD5加密,那么可采用如下办法:

Dim strName As String
strName = Space(255)
GetPrivateProfileString "General", "LastUserName", "", strName, 255, App.Path & "\linkageclientconfig.ini"
Text1 = strName
MD5(Text1)

这样MD5(Text1)=MD5("EddyBlog2009"),利用文本框控件中转一下,那么就会得到你想要的结果了^_

已经有(1)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/program/326.html     欢迎订阅Eddy Blog

  1. 发表于2010-11-24 14:55:17

    x,你第一段代码和第二段代码写的一样!

    GetPrivateProfileString 会返回一个整数,是实际读入的字符数。

    i = GetPrivateProfileString "General", "LastUserName", "", strName, 255, App.Path

    left(strName, i)
    由 Eddy 于 2010-11-24 16:05:16 最后编辑

    Eddy 于 2010-11-24 16:07:11 回复
    指点、讨论或交流我很欢迎,请注意用词!

    结果一不一样可自行测试

记住我的信息,下次不用再输入 欢迎给Eddy Blog留言