VB 操作INI文件方法.docx
VB 操作INI文件方法1.定义一些变量 Public IniFileName As String, vbNullString As String, maxSize As Long, section1 As String, section2 As String 2.初始话这些变量 Public Function initial IniFileName = App.Path & "" & "config.ini" vbNullString = "" maxSize = 255 section1 = "basics" section2 = "others" temp_str = String(255, 0) '建立缓冲区 End Function 3.声明INI函数 Public Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileIntA" ( _ ByVal lpApplicationName As String, _ ByVal lpKeyName As String, _ ByVal nDefault As Long, _ ByVal lpFileName As String) As Long Public 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 Public 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 4.调用函数 dim source as string GetPrivateProfileString section1, "source", vbNullString, temp_str, maxSize, IniFileName source = Mid(temp_str, 0, 5) '缓冲区长度249,直接去匹配是不可以的,需要首先提取出有效字符 xpos.Text = GetPrivateProfileInt(section1, "xpos", 1, IniFileName) dim a as interger a = GetPrivateProfileInt(section1, "auto", 1, IniFileName) WritePrivateProfileString section1, "auto", "0", IniFileName 下一个例子 Option Explicit 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 Private Function GetIni(ByVal ApplicationName As String, ByVal KeyName As String, ByVal FileName As String) As String Dim Buff As String, TmpStr As String Buff = String(1024, 0) Call GetPrivateProfileString(ApplicationName, KeyName, "", Buff, Len(Buff) + 1, FileName) If Asc(Mid(Buff, 1, 1) = 0 Then GetIni = "": Exit Function Dim I As Integer For I = 2 To Len(Buff) If Asc(Mid(Buff, I, 1) = 0 Then TmpStr = Mid(Buff, 1, I - 1) Next If TmpStr = "" Then TmpStr = Buff GetIni = TmpStr End Function Private Function PutIni(ByVal ApplicationName As String, ByVal KeyName As String, ByVal Str As String, ByVal FileName As String) As Long WritePrivateProfileString ApplicationName, KeyName, Str, FileName End Function Private Function DelIni(ByVal ApplicationName As String, ByVal KeyName As String, ByVal FileName As String) As Long WritePrivateProfileString ApplicationName, KeyName, 0&, FileName End Function Private Sub Form_Load Shell (GetIni("lujing", "pa", "INI文件的路径及名称.ini") & "" & GetIni("lujing", "pa1", "INI文件的路径及名称.ini") End Sub 再次讲解 这是API函数,使用前必须在公共部分定义,可以建公共模块,也可以在窗体最上面写. 代码: Public 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 Public 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 然后GetPrivateProfileString WritePrivateProfileString 这两个函数就可以用了. 读取和写入代码如下 Private Sub SetIniS(ByVal SectionName As String, ByVal KeyWord As String, ByVal ValStr As String) Dim res% res% = WritePrivateProfileString(SectionName, KeyWord, ValStr, "C:123.ini") End Sub Private Function GetIniS(ByVal SectionName As String, ByVal KeyWord As String, ByVal DefString As String) As String Dim llLen As Long Dim ResultString As String ResultString = Space(100) llLen = GetPrivateProfileString(SectionName, KeyWord, DefString, ResultString, 100, "C:123.ini") GetIniS = Mid(ResultString, 1, llLen) End Function