|
实例代码如下: Imports System Imports System.Text Imports System.Runtime.InteropServices Namespace Lob_ini Public Class cIni Private ls_IniFilename As String Private li_BufferLen As Integer = 256 ''' <summary> ''' cINI Constructor ''' </summary> Public Sub New(ByVal pIniFilename As String) MyBase.New() ls_IniFilename = pIniFilename End Sub ''' <summary> ''' INI filename (If no path is specifyed the function will look with-in the windows directory for the file) ''' </summary> Public Property IniFile() As String Get Return End Get Set(ByVal value As String) ls_IniFilename = value End Set End Property ''' <summary> ''' Max return length when reading data (Max: 32767) ''' </summary> Public Property BufferLen() As Integer Get Return li_BufferLen End Get Set(ByVal value As Integer) If (value > 32767) Then li_BufferLen = 32767 ElseIf (value < 1) Then li_BufferLen = 1 Else li_BufferLen = value End If End Set End Property Private Declare Function WritePrivateProfileString Lib "kernel32" (ByVal pSection As String, ByVal pKey As String, ByVal pValue As String, ByVal pFile As String) As Integer Private Declare Function WritePrivateProfileStruct Lib "kernel32" (ByVal pSection As String, ByVal pKey As String, ByVal pValue As String, ByVal pValueLen As Integer, ByVal pFile As String) As Integer Private Declare Function GetPrivateProfileString Lib "kernel32" (ByVal pSection As String, ByVal pKey As String, ByVal pDefault As String, ByVal prReturn() As Byte, ByVal pBufferLen As Integer, ByVal pFile As String) As Integer Private Declare Function GetPrivateProfileStruct Lib "kernel32" (ByVal pSection As String, ByVal pKey As String, ByVal prReturn() As Byte, ByVal pBufferLen As Integer, ByVal pFile As String) As Integer ''' <summary> ''' Read value from INI File ''' </summary> Public Overloads Function ReadValue(ByVal pSection As String, ByVal pKey As String, ByVal pDefault As String) As String Return z_GetString(pSection, pKey, pDefault) End Function ''' <summary> ''' Read value from INI File, default = "" ''' </summary> Public Overloads Function ReadValue(ByVal pSection As String, ByVal pKey As String) As String Return z_GetString(pSection, pKey, "") End Function ''' <summary> ''' Write value to INI File ''' </summary> Public Sub WriteValue(ByVal pSection As String, ByVal pKey As String, ByVal pValue As String) WritePrivateProfileString(pSection, pKey, pValue, Me.ls_IniFilename) End Sub ''' <summary> ''' Remove value from INI File ''' </summary> Public Sub RemoveValue(ByVal pSection As String, ByVal pKey As String) WritePrivateProfileString(pSection, pKey, Nothing, Me.ls_IniFilename) End Sub ''' <summary> ''' Read values in a section from INI File ''' </summary> Public Sub ReadValues(ByVal pSection As String, ByRef pValues As Array) pValues = z_GetString(pSection, Nothing, Nothing).Split(CType(ChrW(0), Char)) End Sub ''' <summary> ''' Read sections from INI File ''' </summary> Public Sub ReadSections(ByRef pSections As Array) pSections = z_GetString(Nothing, Nothing, Nothing).Split(CType(ChrW(0), Char)) End Sub ''' <summary> ''' Remove section from INI File ''' </summary> Public Sub RemoveSection(ByVal pSection As String) WritePrivateProfileString(pSection, Nothing, Nothing, Me.ls_IniFilename) End Sub ''' <summary> ''' Call GetPrivateProfileString / GetPrivateProfileStruct API ''' </summary> Private Function z_GetString(ByVal pSection As String, ByVal pKey As String, ByVal pDefault As String) As String Dim sRet As String = pDefault Dim bRet() As Byte = New Byte((li_BufferLen) - 1) {} Dim i As Integer = GetPrivateProfileString(pSection, pKey, pDefault, bRet, li_BufferLen, ls_IniFilename) sRet = System.Text.Encoding.GetEncoding(1252).GetString(bRet, 0, i).TrimEnd(CType(ChrW(0), Char)) Return sRet End Function End Class End Namespace |