vb.net中使用GetPrivateProfileString访问INI文件,解决中文路径问题

前端之家收集整理的这篇文章主要介绍了vb.net中使用GetPrivateProfileString访问INI文件,解决中文路径问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

引自:http://blog.csdn.net/yizia/archive/2008/06/24/2580744.aspx


  在vb.net2005+winxp中,我使用GetPrivateProfileString读取一个ini文件,如果文件路径中含有中文,就会遇到一个奇怪的问题:第一次读取正常,第二次读取就取不到值。代码如下:

  1. PrivateDeclareFunctionGetPrivateProfileStringLib"kernel32"Alias"GetPrivateProfileStringA"(ByVallpApplicationNameAsString,ByVallpKeyNameAsString,ByVallpDefaultAsString,ByVallpReturnedStringAsString,ByValnSizeAsInteger,ByVallpFileNameAsString)AsInteger
  2. Privatem_filenameAsString="c:/椅子/slcuserinfo.ini"
  3. PublicFunctionGetiniValue(ByVallpKeyNameAsString,ByValstrNameAsString)AsString
  4. DimstrTmpAsString
  5. 'DimfileTmpAsString
  6. 'fileTmp=m_filename
  7. strTmp=NewString("",100)
  8. 'CallGetPrivateProfileString(lpKeyName,strName,"",strTmp,Len(strTmp),fileTmp)
  9. CallGetPrivateProfileString(lpKeyName,"",m_filename)
  10. GetiniValue=Left$(strTmp,InStr(strTmp,vbNullChar)-1)
  11. EndFunction

反复试验过以后,发现取消注释掉的代码就可以正常运行。百思不得其解,看api的声明没有问题啊,为什么lpFileName会出现异常呢?

不管怎样,这个问题耽误了我2个小时,先贴上故障和解决办法,以后再研究

猜你在找的VB相关文章