VB6: Ini文件操作类

来源:互联网 发布:车载灭火器 知乎 编辑:程序博客网 时间:2024/05/05 04:39
Option Explicit'' INI文件读写ApiPrivate 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 Long, ByVal lpFileName As String) As LongPrivate Declare Function GetPrivateProfileSection Lib "kernel32" Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As LongPrivate Declare Function GetPrivateProfileSectionNames Lib "kernel32" Alias "GetPrivateProfileSectionNamesA" (ByVal lpszReturnBuffer As String, ByVal nSize As Long, ByVal lpFileName As String) As LongPrivate Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As LongPrivate Declare Function WritePrivateProfileSection Lib "kernel32" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String, ByVal lpFileName As String) As LongPrivate m_sFile     As StringPrivate Const MC_MAXBUFFER  As Long = 8192'' 得到设置Ini文件名Public Property Get FileName() As String    FileName = m_sFileEnd PropertyPublic Property Let FileName(ByVal sFile As String)    m_sFile = sFileEnd Property'' 写键字符串Public Function WriteString(ByVal sSection As String, ByVal sKey As String, ByVal sValue As String) As Boolean    WriteString = WritePrivateProfileString(sSection, sKey, sValue, m_sFile) <> 0End Function'' 读键字符串Public Function GetString(ByVal sSection As String, ByVal sKey As String) As StringDim sRet    As String * MC_MAXBUFFER    Call GetPrivateProfileString(sSection, sKey, vbNullString, sRet, MC_MAXBUFFER, m_sFile)    GetString = StripNulls(sRet)End Function'' 删除键值Public Sub DeleteString(ByVal sSection As String, ByVal sKey As String)    WritePrivateProfileString sSection, sKey, Nothing, m_sFileEnd Sub'' 得到所有节Public Function GetSections() As String()Dim sBuffer     As String * MC_MAXBUFFER    Call GetPrivateProfileSectionNames(sBuffer, MC_MAXBUFFER, m_sFile)    GetSections = Split(StripNulls2(sBuffer), vbNullChar)End Function'' 得到节内键值集 [string]=[sValue]Public Function GetSectionStrings(ByVal sSection As String) As String()Dim sBuffer As String * MC_MAXBUFFER    Call GetPrivateProfileSection(sSection, sBuffer, MC_MAXBUFFER, m_sFile)    GetSectionStrings = Split(StripNulls2(sBuffer), vbNullChar)End Function'' 删除节Public Sub DeleteSection(ByVal sSection As String)    WritePrivateProfileString sSection, Nothing, Nothing, m_sFileEnd Sub'' 创建节Public Sub MakeSection(ByVal sSection As String)    WritePrivateProfileSection sSection, "", m_sFileEnd Sub'' 复制节Public Function CopySection(ByVal sSection As String, ByVal sNewSection As String)Dim sBuffer As String * MC_MAXBUFFER    Call GetPrivateProfileSection(sSection, sBuffer, MC_MAXBUFFER, m_sFile)    WritePrivateProfileSection sNewSection, StripNulls2(sBuffer), m_sFileEnd Function'' 移动节Public Function MoveSection(ByVal sSection As String, ByVal sNewSection As String)    CopySection sSection, sNewSection    DeleteSection sSectionEnd Function''-------------------------------------------------------------------------------------------------------------------------------------''' 清除字符串中多余的NullPrivate Function StripNulls(ByRef sOriginal As String) As StringDim i As Long    i = InStr(sOriginal, vbNullChar)    If i > 0 Then        StripNulls = Left$(sOriginal, i - 1)    Else        StripNulls = sOriginal    End IfEnd Function'' 清除多余的Null(以2个Null为结束)Private Function StripNulls2(ByRef sOriginal As String) As StringDim i   As LongConst C_FINDER      As String = vbNullChar + vbNullChar    i = InStr(sOriginal, C_FINDER)    If i > 0 Then        StripNulls2 = Left$(sOriginal, i - 1)    Else        StripNulls2 = sOriginal    End If    End Function