vb.net 读取ini文件在vb6中能读取,升迁到vb.net2008后读取不到ini文件

wjfxyj 2013-06-25 05:49:02
vb.net 读取ini文件在vb6中能读取,升迁到vb.net2008后读取不到ini文件

Option Strict Off
Option Explicit On
Module ModConString
Private strIPAddress As String
Private iniPath As String
Function GetFromINI(ByRef AppName As String, ByRef KeyName As String, ByRef FileName As String) As String
Dim RetStr As String
RetStr = New String(Chr(0), 255)
GetFromINI="driver=SQL Server;server=.;uid=sa;pwd=102030;database=RYGL_DATA;" 'Left(RetStr, GetPrivateProfileString(AppName, KeyName, "", RetStr, Len(RetStr), FileName))
End Function
'定义一个属性过程反映连接字符串
Public ReadOnly Property conString() As Object
Get
iniPath = My.Application.Info.DirectoryPath & "\RYGL.ini"
strIPAddress = GetFromINI("ConnectionString", "conString", iniPath)
'UPGRADE_WARNING: 未能解析对象 conString 的默认属性。 单击以获得更多信息:“ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"”
conString = "" & strIPAddress & ""
End Get
End Property
'定义一个提供者反映数据库类型
Public ReadOnly Property conProvide() As Object
Get
'UPGRADE_WARNING: 未能解析对象 conProvide 的默认属性。 单击以获得更多信息:“ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"”
conProvide = "sqloledb"
End Get
End Property
End Module


rygl.ini 如下:
[ConnectionString]
conString="driver=SQL Server;server=192.168.1.200;uid=sa;pwd=102030;database=RYGL_DATA;"

问题:
GetFromINI=是指本地数据库能连接上,如换成远程数据库就连不上。
但在GetFromINI=中换成远程数据库就能连上
说明没有能够读取ini文件
如何解决,请高手不吝指教。
...全文
289 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
不说也罢 2013-06-25
  • 打赏
  • 举报
回复
引用 5 楼 wjfxyj 的回复:
filename 只写文件名漏写路径 已经解决,谢谢。 结贴给分。
如果你不仔细看贴,想有深入是很难的。 本问题中所有注意事项,在1楼全部告诉你了,而且3楼回复时再次提醒你仔细看贴,可惜你仍未做到。
不说也罢 2013-06-25
  • 打赏
  • 举报
回复
你仍未仔细看贴哦? 调用时MsgBox(GetFromINI("ConnectionString", "conString", filename))即可测试返回值了 filename是文件路径+文件名 例如:你在顶楼贴中写到: rygl.ini 如下: [ConnectionString] conString="driver=SQL Server;server=192.168.1.200;uid=sa;pwd=102030;database=RYGL_DATA;" [ConnectionString]——括号里的是GetFromINI过程里第一个参数的值 conString=等于号前的是GetFromINI过程里第二个参数的值 GetFromINI过程里第三个参数的值是rygl.ini文件所在的位置,如“D:\temp\myApp\rygl.ini”
wjfxyj 2013-06-25
  • 打赏
  • 举报
回复
filename 只写文件名漏写路径 已经解决,谢谢。 结贴给分。
wjfxyj 2013-06-25
  • 打赏
  • 举报
回复
出错信息解决了 调用时MsgBox是空白
不说也罢 2013-06-25
  • 打赏
  • 举报
回复
你把贴子仔细地看了吗?GetPrivateProfileString我声明的就是int32
wjfxyj 2013-06-25
  • 打赏
  • 举报
回复
n = GetPrivateProfileString(AppName, KeyName, "", RetStr, RetStr.Length, FileName) 这句出错 错误信息 错误 1 “GetPrivateProfileString”是一个类型,不能用作表达式。 D:\Glry\Glry\ConString.vb 11 13 Glry
不说也罢 2013-06-25
  • 打赏
  • 举报
回复
你这样转换,GetFromINI过程肯定不能返回你需要读取的String 首先,你的GetPrivateProfileString在VB6下的声明转换正确么?应当象下面这样,你可以复制粘贴
 Private Declare Unicode Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringW" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Int32, ByVal lpFileName As String) As Int32
其次,你的GetFromINI过程应当写成这样:
   
Function GetFromINI(ByVal AppName As String, ByVal KeyName As String, ByVal FileName As String) As String
        Dim RetStr As String
        Dim n As Int32
        RetStr = Space(1024)
        'GetFromINI = "driver=SQL Server;server=.;uid=sa;pwd=102030;database=RYGL_DATA;"
        n = GetPrivateProfileString(AppName, KeyName, "", RetStr, RetStr.Length, FileName)
        If n > 0 Then
            Return RetStr.Substring(0, n)
        Else
            Return ""
        End If
    End Function
调用时MsgBox(GetFromINI("ConnectionString", "conString", filename))即可测试返回值了 filename是文件路径+文件名

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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