如何如何读取ini 文件啊~
比如我的ini 文件类容是[Info]
Skin=娱乐[Title]
TitleBarFlag=1
TitleBarWH=100,25
TitleBarLT=0,0
怎么读取到Skin=娱乐 这行里的 娱乐两个字啊~   又该如何用Command控件 修改 娱乐 这两个字啊在程序里~     各位大哥大姐  帮忙解决下哦  谢谢了~~~~

解决方案 »

  1.   

    Option Explicit
    Public IniFile As String
    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
    Function GetIniS(ByVal SectionName As String, ByVal KeyWord As String, ByVal DefString As String) As String    Dim ResultString As String * 144, Temp As Integer
        Dim s As String, i As Integer
        Temp% = GetPrivateProfileString(SectionName, KeyWord, "", ResultString, 144, IniFile)
        '检索关键词的值
        If Temp% > 0 Then '关键词的值不为空
            s = ""
            For i = 1 To 144
                If Asc(Mid$(ResultString, i, 1)) = 0 Then
                    Exit For
                Else
                    s = s + Mid$(ResultString, i, 1)
                End If
            Next
        Else
            Temp% = WritePrivateProfileString(SectionName, KeyWord, DefString, IniFile)
            '将缺省值写入INI文件
            s = DefString
        End If
        GetIniS = s
    End Function
    Function GetIniN(ByVal SectionName As String, ByVal KeyWord As String, ByVal DefValue As Long) As Long    Dim d As Long, s As String
        d = DefValue
        GetIniN = GetPrivateProfileInt(SectionName, KeyWord, DefValue, IniFile)
        If d <> DefValue Then
            s = "" & d
            d = WritePrivateProfileString(SectionName, KeyWord, s, IniFile)
        End If
    End Function
    Sub SetIniS(ByVal SectionName As String, ByVal KeyWord As String, ByVal ValStr As String)    Dim res%
        res% = WritePrivateProfileString(SectionName, KeyWord, ValStr, IniFile)
    End Sub
    Sub SetIniN(ByVal SectionName As String, ByVal KeyWord As String, ByVal ValInt As Long)
        Dim res%, s$
        s$ = Str$(ValInt)
        res% = WritePrivateProfileString(SectionName, KeyWord, s$, IniFile)
    End Sub
      

  2.   

    inifile=你的ini文件的完整路径文件名
    dim sSkin as string
    sSkin=getinis("Info","Skin","") '该句读取ini文件中Skin的值
    setinis "Info","Skin","新值" '该句将"新值"写入ini文件中Title字段中的几个值也可以作为字符串处理
      

  3.   

    Option Explicit
    '读写INI文件模块
    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 AppName As String, ByVal KeyName As String, ByVal keydefault As String, ByVal Filename As String) As Long'Public Declare Function GetPrivateProfileSection Lib "kernel32" Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
    '获取指定小节所有项名和值的一个列表'想读取一个节名下的所有配置项用这种方法:
    'Dim a() As String
    's = myReadINI(file, "配置名1", vbNullString)
    'a = Split(s, Chr(0))
    '所有配置项的Key就进入了数组a
    '若配置项很多,请考虑一下缓冲区的大小够不够(默认为1024)
    '请放心,它可正确读取中文的Key与Value
    Public Function myReadINI(ByVal file As String, ByVal sec As String, ByVal key As String, Optional ByVal Default As String = "", Optional BufLen As Long = 1024) As String
        Dim i As Long, s As String, j As Long
        s = Space(BufLen)
        i = GetPrivateProfileString(sec, key, Default, s, BufLen, file)
        If i > 0 Then
            s = Replace(RTrim(s), Chr(0) & Chr(0), "")
            If Right(s, 1) = Chr(0) Then
                myReadINI = Left(s, Len(s) - 1)
            Else
                myReadINI = s
            End If
        End If
    End Function'Public Function myReadINI(ByVal iniFileName, ByVal iniSection, ByVal iniKey, ByVal iniDefault) As String
    '    '若无项目名,默认为第一个名称 ; 若无键名,默认为第一个键名
    '    Dim lpReturnedString As String, nSize As Long, retval As Long
    '    '判断INI文件是否存在
    '    If Dir(iniFileName) <> "" Then
    '        lpReturnedString = String(255, 0)
    '        nSize = 255
    '        retval = GetPrivateProfileString(iniSection, iniKey, iniDefault, lpReturnedString, nSize, iniFileName)
    '        myReadINI = StrConv(LeftB$(StrConv(lpReturnedString, vbFromUnicode), retval), vbUnicode)
    '    End If
    'End FunctionPublic Function myWriteINI(ByVal iniFileName As String, ByVal iniSection As String, ByVal iniKey As String, ByVal Info As String) As String
        '该函数的使用与写注册表类似,可在INI文件中添加或修改项、键、值
        'iniFileName为INI文件名,inisection为INI文件中的项目,inikey为项目下的键名称,Info为键值
        Dim retval As Long
        retval = WritePrivateProfileString(iniSection, iniKey, Info, iniFileName)
        myWriteINI = LTrim$(Str$(retval))
    End FunctionPublic Sub DelSectionINI(ByVal iniFileName As String, ByVal iniSection As String)
        '该过程可删除INI文件中指定的项
        'iniFileName为INI文件名,iniSection为指定的项
        '判断INI文件是否存在
        If Dir(iniFileName) <> "" Then
            WritePrivateProfileString iniSection, vbNullString, vbNullString, iniFileName
        End If
        
    End SubPublic Sub DelKeyINI(ByVal iniFileName As String, ByVal iniSection As String, ByVal iniKey As String)
        '该过程可删除INI文件中指定的键
        'iniFileName为INI文件名,iniSection为指定的项,iniKey为指定的键
        '判断INI文件是否存在
        If Dir(iniFileName) <> "" Then
            WritePrivateProfileString iniSection, iniKey, vbNullString, iniFileName
        End If
    End SubPublic Sub DelValueINI(ByVal iniFileName As String, ByVal iniSection As String, ByVal iniKey As String)
        '该过程可删除INI文件中指定键的值
        'iniFileName为INI文件名,iniSection为指定的项,iniKey为指定的键
        '判断INI文件是否存在
        If Dir(iniFileName) <> "" Then
            WritePrivateProfileString iniSection, iniKey, "", iniFileName
        End If
    End SubPublic Sub DelFileINI(ByVal iniFileName As String)
        '该过程可删除INI文件
        'iniFileName为INI文件名
        '判断INI文件是否存在
        If Dir(iniFileName) <> "" Then
            Kill iniFileName
        End If
    End Sub
      

  4.   

    借楼主的贵宝地用一下,我没分了,如果想把.ini文件中“娱乐”俩字,在运行时写到comboBox中该怎么写?麻烦详细写下,form_load中以及怎么调用的?
      

  5.   

    '首在,在工程中,引用 Microsoft Scripting RunTime
    'Text1 盛放取出的内容
        Dim FS As New FileSystemObject
        Dim TS As TextStream
        Dim IniRows As Integer
        Dim Str_Ini As String
        IniRows = 50'读操作:   
        Set TS = FS.OpenTextFile(App.Path + "\楼主要读的文件.ini", 1)    
        For jsq = 1 To IniRows 
            '读出行的内容
            Str_Ini= Trim(TS.ReadLine)
            '查找,比对满足条件的行
            If InStr(1, UCase(Str_Ini), "SKIN=") <> 0 Then
                Text1.Text = Mid(Str_Ini, InStr(1, UCase(Str_Ini), "Skin=") + 5, Len(Str_Ini))
            End If
        Next jsq'写操作:
            Set TS= FS.CreateTextFile(App.Path + "\楼主要读的文件.ini", True)
            TS.WritenLine "[Info]"
            TS.WriteLine "Skin=娱乐,这儿可以改成楼主要更改的内容" 
            TS.WritenLine ""
            TS.WritenLine "[Title]"
            TS.WritenLine "TitleBarFlag=1"
            TS.WritenLine "TitleBarWH=100,25"
            TS.WritenLine "TitleBarLT=0,0"
            TS.Close
      

  6.   

    我网站上有源码,你可以查找一下。VB资料->查找“INI”;═══════════════════
     免费的源码、工具网站,欢迎大家访问!
     http://www.j2soft.cn/
    ═══════════════════