当前位置:编程学习 > C#/ASP.NET >>

vb2008 ini文件读取的问题

Partial Class Form1
    '聲明INI配置檔讀寫API函數
    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 Int32, ByVal lpFileName As String) As Int32
    Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Int32
    '定義讀取配置檔函數
    Public Function GetINI(ByVal Section As String, ByVal AppName As String, ByVal lpDefault As String, ByVal FileName As String) As String
        Dim Str As String = LSet(Str, 256)
        GetPrivateProfileString(Section, AppName, lpDefault, Str, Len(Str), FileName)
        Return Microsoft.VisualBasic.Left(Str, InStr(Str, Chr(0)) - 1)
    End Function
    '定義寫入配置檔函數
    Public Function WriteINI(ByVal Section As String, ByVal AppName As String, ByVal lpDefault As String, ByVal FileName As String) As Long
        WriteINI = WritePrivateProfileString(Section, AppName, lpDefault, FileName)
    End Function
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        '寫入
        Try
            Dim path As String
            path = Application.StartupPath + "\server.ini"
            WriteINI("Server", "IP", TextBox1.Text, path)
            WriteINI("Server", "port", TextBox2.Text, path)
            WriteINI("Server", "userName", TextBox3.Text, path)
            MsgBox("配置設置已經成功!!!!")
        Catch ex As Exception
            MsgBox("錯誤!!!!")
        End Try
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        '讀取
        Dim path As String
        path = Application.StartupPath + "\server.ini"
        TextBox1.Text = GetINI("Server", "IP", "", path)
        TextBox2.Text = GetINI("Server", "port", "", path)
        TextBox3.Text = GetINI("server", "userName", "", path)
    End Sub

End Class


以上是INI读写的操作,如果IP=后面的内容有几行,那么如何读取的完整呢?请大大们指教一下。

例如:INI内容如下

[Server]
IP=127.0.0.1
127.0.0.1 
127.0.0.1 
127.0.0.1 
127.0.0.1 
127.0.0.1 
127.0.0.1 
...............
port=b
userName=c --------------------编程问答-------------------- 建议改成xml方式做配置文件。
或者你用读取文本文件的方式,读取文件内容,用正则表达式做处理。  阿捷  --------------------编程问答-------------------- '文件名SourceDB.ini文件
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias  
"GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal  
lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias  
"WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal  
lpString As Any, ByVal lpFileName As String) As Long

'以下两个函数,读/写ini文件,固定节点setting,in_key为写入/读取的主键
'仅仅针对是非值
'Y:yes,N:no,E:error
Public Function GetIniTF(ByVal In_Key As String) As Boolean
On Error GoTo GetIniTFErr
GetIniTF = True
Dim GetStr As String
GetStr = VBA.String(128, 0)
GetPrivateProfileString "Setting", In_Key, "", GetStr, 256, App.Path & "\SourceDB.ini"
GetStr = VBA.Replace(GetStr, VBA.Chr(0), "")
If GetStr = "1" Then
  GetIniTF = True
  GetStr = ""
Else
  GoTo GetIniTFErr
End If
Exit Function
GetIniTFErr:
  Err.Clear
  GetIniTF = False
  GetStr = ""
End Function

Public Function WriteIniTF(ByVal In_Key As String, ByVal In_Data As Boolean) As Boolean
On Error GoTo WriteIniTFErr
WriteIniTF = True
If In_Data = True Then
 WritePrivateProfileString "Setting", In_Key, "1", App.Path & "\SourceDB.ini"
Else
 WritePrivateProfileString "Setting", In_Key, "0", App.Path & "\SourceDB.ini"
End If
Exit Function
WriteIniTFErr:
  Err.Clear
  WriteIniTF = False
End Function


'以下两个函数,读/写ini文件,不固定节点,in_key为写入/读取的主键
'针对字符串值
'空值表示出错
Public Function GetIniStr(ByVal AppName As String, ByVal In_Key As String) As String
On Error GoTo GetIniStrErr
If VBA.Trim(In_Key) = "" Then
  GoTo GetIniStrErr
End If
Dim GetStr As String
GetStr = VBA.String(128, 0)
 GetPrivateProfileString AppName, In_Key, "", GetStr, 256, App.Path & "\SourceDB.ini"
  GetStr = VBA.Replace(GetStr, VBA.Chr(0), "")
If GetStr = "" Then
  GoTo GetIniStrErr
Else
  GetIniStr = GetStr
  GetStr = ""
End If
Exit Function
GetIniStrErr:
  Err.Clear
  GetIniStr = ""
  GetStr = ""
End Function

Public Function WriteIniStr(ByVal AppName As String, ByVal In_Key As String, ByVal In_Data As String) As Boolean
On Error GoTo WriteIniStrErr
WriteIniStr = True
If VBA.Trim(In_Data) = "" Or VBA.Trim(In_Key) = "" Or VBA.Trim(AppName) = "" Then
  GoTo WriteIniStrErr
Else
 WritePrivateProfileString AppName, In_Key, In_Data, App.Path & "\SourceDB.ini"
End If
Exit Function
WriteIniStrErr:
  Err.Clear
  WriteIniStr = False
End Function
--------------------编程问答-------------------- xml 有专用的 类库进行操作
方便
别用INI 了
--------------------编程问答--------------------
引用 3 楼 ly_longyue 的回复:
xml 有专用的 类库进行操作
方便
别用INI 了


有没有xml相关的例子呢,写一些出来分享学习一下。 --------------------编程问答-------------------- 问题好像解决不了咯....没人回答了.. --------------------编程问答-------------------- 建议改成xml方式做配置文件。
或者你用读取文本文件的方式,读取文件内容,用正则表达式做处理。
我同意这个 --------------------编程问答-------------------- 所举例的INI的格式不标准吧,干脆按行读取文件后进行字符解析好了
补充:.NET技术 ,  VB.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,