ini

 

Imports System
Imports System.Collections
Imports Org.Mentalis.Files
Public Class TestApp
    
Public Shared Sub Main()
        
Dim ini As New IniReader("c:\test.ini")
        ini.Write(
"Section1""KeyString""MyString")
        ini.Write(
"Section1""KeyInt"5)
        ini.Write(
"Section2""KeyBool"True)
        ini.Write(
"Section2""KeyBytes"New Byte() {0123255})
        ini.Write(
"Section3""KeyLong"CType(123456789101112Long))
        ini.Section 
= "Section1"
        Console.WriteLine(
"String: " + ini.ReadString("KeyString"))
        Console.WriteLine(
"Int: " + ini.ReadInteger("KeyInt"0).ToString())
        Console.WriteLine(
"Bool: " + ini.ReadBoolean("Section2""KeyBool"False).ToString())
        Console.WriteLine(
"Long: " + ini.ReadLong("Section3""KeyLong"0).ToString())
        Console.WriteLine(
"Byte 1 in byte array: " + (ini.ReadByteArray("Section2""KeyBytes")(1)).ToString())
        ini.DeleteKey(
"Section2""KeyBytes")
        ini.DeleteSection(
"Section3")
        
Dim e As IEnumerator = ini.GetSectionNames().GetEnumerator()
        
While e.MoveNext()
            Console.WriteLine(e.Current)
        
End While
        Console.WriteLine(
"Press enter to continue")
        Console.ReadLine()
    
End Sub

End Class


Imports System
Imports System.Text
Imports System.Collections
Imports System.Runtime.InteropServices
Imports Microsoft.VisualBasic
Public Class IniReader
    
Private Declare Ansi Function GetPrivateProfileInt Lib "kernel32.dll" Alias "GetPrivateProfileIntA" (ByVal lpApplicationName As StringByVal lpKeyName As StringByVal nDefault As IntegerByVal lpFileName As StringAs Integer

   
    
Private Declare Ansi Function WritePrivateProfileString Lib "kernel32.dll" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As StringByVal lpKeyName As StringByVal lpString As StringByVal lpFileName As StringAs Integer

    
Private Declare Ansi Function GetPrivateProfileString Lib "kernel32.dll" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As StringByVal lpKeyName As StringByVal lpDefault As StringByVal lpReturnedString As StringBuilder, ByVal nSize As IntegerByVal lpFileName As StringAs Integer
  
    
Private Declare Ansi Function GetPrivateProfileSectionNames Lib "kernel32" Alias "GetPrivateProfileSectionNamesA" (ByVal lpszReturnBuffer() As ByteByVal nSize As IntegerByVal lpFileName As StringAs Integer

    
Private Declare Ansi Function WritePrivateProfileSection Lib "kernel32.dll" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As StringByVal lpString As StringByVal lpFileName As StringAs Integer

    
Public Sub New(ByVal file As String)
        Filename 
= file
    
End Sub


    
Public Property Filename() As String
        
Get
            
Return m_Filename
        
End Get
        
Set(ByVal Value As String)
            m_Filename 
= Value
        
End Set
    
End Property


    
Public Property Section() As String
        
Get
            
Return m_Section
        
End Get
        
Set(ByVal Value As String)
            m_Section 
= Value
        
End Set
    
End Property


    
Public Function ReadInteger(ByVal section As StringByVal key As StringByVal defVal As IntegerAs Integer
        
Return GetPrivateProfileInt(section, key, defVal, Filename)
    
End Function


    
Public Function ReadInteger(ByVal section As StringByVal key As StringAs Integer
        
Return ReadInteger(section, key, 0)
    
End Function


    
Public Function ReadInteger(ByVal key As StringByVal defVal As IntegerAs Integer
        
Return ReadInteger(Section, key, defVal)
    
End Function


    
Public Function ReadInteger(ByVal key As StringAs Integer
        
Return ReadInteger(key, 0)
    
End Function


    
Public Function ReadString(ByVal section As StringByVal key As StringByVal defVal As StringAs String
        
Dim sb As New StringBuilder(MAX_ENTRY)
        
Dim Ret As Integer = GetPrivateProfileString(section, key, defVal, sb, MAX_ENTRY, Filename)
        
Return sb.ToString()
    
End Function


    
Public Function ReadString(ByVal section As StringByVal key As StringAs String
        
Return ReadString(section, key, "")
    
End Function


    
Public Function ReadString(ByVal key As StringAs String
        
Return ReadString(Section, key)
    
End Function


    
Public Function ReadLong(ByVal section As StringByVal key As StringByVal defVal As LongAs Long
        
Return Long.Parse(ReadString(section, key, defVal.ToString()))
    
End Function


    
Public Function ReadLong(ByVal section As StringByVal key As StringAs Long
        
Return ReadLong(section, key, 0)
    
End Function


    
Public Function ReadLong(ByVal key As StringByVal defVal As LongAs Long
        
Return ReadLong(Section, key, defVal)
    
End Function


    
Public Function ReadLong(ByVal key As StringAs Long
        
Return ReadLong(key, 0)
    
End Function


    
Public Function ReadByteArray(ByVal section As StringByVal key As StringAs Byte()
        
Try
            
Return Convert.FromBase64String(ReadString(section, key))
        
Catch
        
End Try
        
Return Nothing
    
End Function


    
Public Function ReadByteArray(ByVal key As StringAs Byte()
        
Return ReadByteArray(Section, key)
    
End Function


    
Public Function ReadBoolean(ByVal section As StringByVal key As StringByVal defVal As BooleanAs Boolean
        
Return Boolean.Parse(ReadString(section, key, defVal.ToString()))
    
End Function


    
Public Function ReadBoolean(ByVal section As StringByVal key As StringAs Boolean
        
Return ReadBoolean(section, key, False)
    
End Function


    
Public Function ReadBoolean(ByVal key As StringByVal defVal As BooleanAs Boolean
        
Return ReadBoolean(Section, key, defVal)
    
End Function


    
Public Function ReadBoolean(ByVal key As StringAs Boolean
        
Return ReadBoolean(Section, key)
    
End Function


    
Public Function Write(ByVal section As StringByVal key As StringByVal value As IntegerAs Boolean
        
Return Write(Section, key, value.ToString())
    
End Function


    
Public Function Write(ByVal key As StringByVal value As IntegerAs Boolean
        
Return Write(Section, key, value)
    
End Function


    
Public Function Write(ByVal section As StringByVal key As StringByVal value As StringAs Boolean
        
Return (WritePrivateProfileString(section, key, value, Filename) <> 0)
    
End Function


    
Public Function Write(ByVal key As StringByVal value As StringAs Boolean
        
Return Write(Section, key, value)
    
End Function


    
Public Function Write(ByVal section As StringByVal key As StringByVal value As LongAs Boolean
        
Return Write(section, key, value.ToString())
    
End Function


    
Public Function Write(ByVal key As StringByVal value As LongAs Boolean
        
Return Write(Section, key, value)
    
End Function


    
Public Function Write(ByVal section As StringByVal key As StringByVal value() As ByteAs Boolean
        
If value Is Nothing Then
            
Return Write(section, key, CType(NothingString))
        
Else
            
Return Write(section, key, value, 0, value.Length)
        
End If
    
End Function


    
Public Function Write(ByVal key As StringByVal value() As ByteAs Boolean
        
Return Write(Section, key, value)
    
End Function


    
Public Function Write(ByVal section As StringByVal key As StringByVal value() As ByteByVal offset As IntegerByVal length As IntegerAs Boolean
        
If value Is Nothing Then
            
Return Write(section, key, CType(NothingString))
        
Else
            
Return Write(section, key, Convert.ToBase64String(value, offset, length))
        
End If
    
End Function


    
Public Function Write(ByVal section As StringByVal key As StringByVal value As BooleanAs Boolean
        
Return Write(section, key, value.ToString())
    
End Function


    
Public Function Write(ByVal key As StringByVal value As BooleanAs Boolean
        
Return Write(Section, key, value)
    
End Function


    
Public Function DeleteKey(ByVal section As StringByVal key As StringAs Boolean
        
Return (WritePrivateProfileString(section, key, Nothing, Filename) <> 0)
    
End Function


    
Public Function DeleteKey(ByVal key As StringAs Boolean
        
Return (WritePrivateProfileString(Section, key, Nothing, Filename) <> 0)
    
End Function


    
Public Function DeleteSection(ByVal section As StringAs Boolean
        
Return WritePrivateProfileSection(section, Nothing, Filename) <> 0
    
End Function

   
    
Public Function GetSectionNames() As ArrayList
        
Try
            
Dim buffer(MAX_ENTRY) As Byte
            GetPrivateProfileSectionNames(buffer, MAX_ENTRY, Filename)
            
Dim parts() As String = Encoding.ASCII.GetString(buffer).Trim(ControlChars.NullChar).Split(ControlChars.NullChar)
            
Return New ArrayList(parts)
        
Catch
        
End Try
        
Return Nothing
    
End Function

   
    
Private m_Filename As String
    
Private m_Section As String
    
Private Const MAX_ENTRY As Integer = 32768
End Class


posted @ 2007-07-10 01:02  yongwnet  阅读(636)  评论(0编辑  收藏  举报