首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Dotnet频道
中国IT教育
Google
首页 ASP.NET  C#  XML/WebService ADO.NET VC.NET VB.NET .NET 资讯动态 专题 RSS订阅 讨论 下载
您现在的位置: 中国IT实验室 >> Dotnet >> VB.NET >> 正文

vb.net中使用GetPrivateProfileString访问INI文件

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

        Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Integer, ByVal lpFileName As String) As Integer

        Private m_filename As String = "c:\椅子\slcuserinfo.ini"

        Public Function GetiniValue(ByVal lpKeyName As String, ByVal strName As String) As String

        Dim strTmp As String

        'Dim fileTmp As String

        'fileTmp = m_filename

        strTmp = New String(" ", 100)

        'Call GetPrivateProfileString(lpKeyName, strName, "", strTmp, Len(strTmp), fileTmp)

        Call GetPrivateProfileString(lpKeyName, strName, "", strTmp, Len(strTmp), m_filename)

        GetiniValue = Left$(strTmp, InStr(strTmp, vbNullChar) - 1)

        End Function

        Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Integer, ByVal lpFileName As String) As Integer

        Private m_filename As String = "c:\椅子\slcuserinfo.ini"

        Public Function GetiniValue(ByVal lpKeyName As String, ByVal strName As String) As String

        Dim strTmp As String

        'Dim fileTmp As String

        'fileTmp = m_filename

        strTmp = New String(" ", 100)

        'Call GetPrivateProfileString(lpKeyName, strName, "", strTmp, Len(strTmp), fileTmp)

        Call GetPrivateProfileString(lpKeyName, strName, "", strTmp, Len(strTmp), m_filename)

        GetiniValue = Left$(strTmp, InStr(strTmp, vbNullChar) - 1)

        End Function

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

 

【责编:michael】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·WEB程序开发--ASP.NET和PHP、JSP究竟学哪个?
 ·五步带你入门XML
 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 今日更新
 社区讨论
 博客论点
 频道精选
 Dotnet频道相关导航