ini文件如下:
[DataSource]
ServerName = "aaa"
DataBaseName = "bbb"在modules裡:Global GStrServer As String          '服务器
Global GStrDatabase As String        '数据库Private Const IniFileName As String = "\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 LongPublic Sub main()
    GetSysPara
End Sub
Public Sub GetSysPara()      GStrServer = GetParaFromIni("datasource", "servername")
      GStrDatabase = GetParaFromIni("datasource", "databasename")
      
End SubPublic Function GetParaFromIni(ByVal Mainkey As String, ByVal Childkey As String) As String
      Dim StrLen As Long
      Dim Buffer As String * 255
      StrLen = GetPrivateProfileString(Mainkey, Childkey, "", Buffer, Strings.Len(Buffer), App.Path + IniFileName)
      GetParaFromIni = Strings.Mid(Buffer, 1, StrLen)
End Function

解决方案 »

  1.   

    假定你定义的INI文件格式如下:
    [database]
      

  2.   

    luckysusan(海闊天空),能不能解释一下函数的意思啊?//bow
      

  3.   

    Option Explicit
    Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As Any, ByVal lpFileName As String) As Long
    Declare Function WritePrivateProfileSection Lib "kernel32" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
    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
    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 LongFunction ReadWriteINI(Mode As String, FileName As String, tmpSecname As String, Optional tmpKeyname As String, Optional tmpKeyValue) As String
    Dim tmpString As String
    Dim secname As String
    Dim keyname As String
    Dim keyvalue As String
    Dim anInt
    Dim defaultkey As StringOn Error GoTo ReadWriteINIError
    If IsNull(Mode) Or Len(Mode) = 0 Then
      ReadWriteINI = "MODE ERROR "
      Exit Function
    End If
    If Len(FileName) = 0 Then
      ReadWriteINI = "FileName ERROR "
      Exit Function
    End If
    If IsNull(tmpSecname) Or Len(tmpSecname) = 0 Then
      ReadWriteINI = "Secname ERROR "
      Exit Function
    End If
    If IsNull(tmpKeyname) Or Len(tmpKeyname) = 0 Then
      ReadWriteINI = "Keyname ERROR "
      Exit Function
    End If' WRITE MODE
      If UCase(Mode) = "WRITE" Then
          If IsNull(tmpKeyValue) Or Len(tmpKeyValue) = 0 Then
            ReadWriteINI = "ERROR KeyValue"
            Exit Function
          Else
            secname = tmpSecname
            keyname = tmpKeyname
            keyvalue = tmpKeyValue
            anInt = WritePrivateProfileString(secname, keyname, keyvalue, FileName)
          End If
      End If
      ' READ MODE
      If UCase(Mode) = "GET" Then
      
          secname = tmpSecname
          keyname = tmpKeyname
          defaultkey = "Failed"
          keyvalue = String$(50, 32)
          anInt = GetPrivateProfileString(secname, keyname, defaultkey, keyvalue, Len(keyvalue), FileName)
          If Left(keyvalue, 6) <> "Failed" Then
             tmpString = keyvalue
             tmpString = RTrim(tmpString)
             tmpString = Left(tmpString, Len(tmpString) - 1)
          End If
          ReadWriteINI = tmpString
      End If
    Exit Function
    ReadWriteINIError:
       MsgBox Error
       Stop
    End FunctionFunction fileexist(fname As String) As Boolean
        On Local Error Resume Next
       fileexist = (Dir(fname) <> "")
    End FunctionPublic Sub Create_file(fname As String)
       Dim fs
       Dim aa
       Set fs = CreateObject("Scripting.FileSystemObject")
       Set aa = fs.CreateTextFile(fname, True)
       aa.Close
       Set fs = Nothing
    End Sub
      

  4.   

    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         'ini文件的路徑) As Long                     '函數返回得到的字符串的實際長度
      

  5.   

    假定你定义的INI文件格式如下:
    [database]
         server="dbserver1"
         dbname="db1"
    ----------------------------------------------------------
    在模块中声明如下:
    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
    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 LongPublic Function WriteIni(ByVal section As String, ByVal key As String, ByVal value As String) As Boolean
    Dim x As Long, Buff As String * 128, i As Integer
    Buff = value + Chr(0)
    x = WritePrivateProfileString(section, key, Buff, App.Path + "\MenuSetting.ini")'** 此处假定你的INI文件在VB工程文件当前目录下
    WriteIni = x
    End FunctionPublic Function ReadIni(ByVal section As String, ByVal key As String) As String
    Dim x As Long, Buff As String * 128, i As Integer
    x = GetPrivateProfileString(section, key, "", Buff, 128, App.Path + "\MenuSetting.ini")'
    i = InStr(Buff, Chr(0))
    ReadIni = Trim(Left(Buff, i - 1))
    End Function
    假设你在主窗体加载时即从INI读出服务器名称和数据库名称;
    Private Sub Form_Load()
       dim sDBServer as string
       dim sDBName as string
       sDBServer = ReadIni("database", "server")'这样服务器名称赋于 
    sDBServer
       sDBName = ReadIni("database", "dbname")'这样数据库名称赋于 
    sDBName
    End Sub'将服务器名称和数据库名称写入INI文件,以备以后读出
     假定你已将服务器名称赋于sDBServer,数据库名称赋于sDBName
     调用函数writerini()
     WriteIni("database", "server", sDBServer)
     WriteIni("database", "dbname", sDBName)  我想这样差不多可以解决你的问题
     
      

  6.   

    写INI 
            Dim pwd As string
            Dim cnstr As string
          
            CALL CInt(ReadWriteINI("WRITE", App.Path + "\db.ini", "数据库配置", "connectionstring",cnstr ))
            CALL CInt(ReadWriteINI("WRITE", App.Path + "\db.ini", "数据库配置", "password",pwd))
            
         
          
    读INI
            Dim pwd As string
            Dim cnstr As string
             cnstr= CInt(ReadWriteINI("get", App.Path + "\db.ini", "数据库配置", "connectionstring"))
            pwd = CInt(ReadWriteINI("get", App.Path + "\db.ini", "数据库配置", "password"))
    INI文件:[数据库配置]
    connectionstring=
    password=
      

  7.   

    在窗体内放一个textbox:名称txtText1
    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 LongPublic Sub writeText()
       Call WritePrivateProfileString("TextBox1", "Text", Form1.txtText1.Text, "d:\test.ini")
       Call WritePrivateProfileString("TextBox1", "Text2", "etdd", "d:\test.ini")
       Call WritePrivateProfileString("Textroot", "T", "d", "d:\test.ini")
     
    End SubPublic Function getText() As String
       Dim sBuffer As String
       sBuffer = String(255, 0)
       Call GetPrivateProfileString("TextBox1", "Text", "&&&&&", sBuffer, 255, "d:\test.ini")
       getText = sBuffer
    End FunctionPrivate Sub Form_Load()
     txtText1.Text = getText()
    End SubPrivate Sub Form_Unload(Cancel As Integer)
    Call writeText
    End Sub
      

  8.   

    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 AppName As String, ByVal KeyName As String, ByVal keydefault As String, ByVal Filename As String) As LongPrivate sDefInitFileName As String'读取Ini文件
    Public Function GetInitEntry(ByVal sSection As String, ByVal sKeyName As String, Optional ByVal sDefault As String = "", Optional ByVal sInitFileName As String = "") As StringDim sBuffer As String
    Dim sInitFile As String    If Len(sInitFileName) = 0 Then
            If Len(sDefInitFileName) = 0 Then
                sDefInitFileName = App.Path
                If Right$(sDefInitFileName, 1) <> "\" Then
                    sDefInitFileName = sDefInitFileName & "\"
                End If
                sDefInitFileName = sDefInitFileName & App.EXEName & ".ini"
            End If
            sInitFile = sDefInitFileName
        Else
            sInitFile = sInitFileName
        End If
        
        sBuffer = String$(2048, " ")
        GetInitEntry = Left$(sBuffer, GetPrivateProfileString(sSection, ByVal sKeyName, sDefault, sBuffer, Len(sBuffer), sInitFile))End Function'写Ini文件
    Public Function SetInitEntry(ByVal sSection As String, Optional ByVal sKeyName As String, Optional ByVal sValue As String, Optional ByVal sInitFileName As String = "") As LongDim sInitFile As String    If Len(sInitFileName) = 0 Then
            If Len(sDefInitFileName) = 0 Then
                sDefInitFileName = App.Path
                If Right$(sDefInitFileName, 1) <> "\" Then
                    sDefInitFileName = sDefInitFileName & "\"
                End If
                sDefInitFileName = sDefInitFileName & App.EXEName & ".ini"
            End If
            sInitFile = sDefInitFileName
        Else
            sInitFile = sInitFileName
        End If
        
        If Len(sKeyName) > 0 And Len(sValue) > 0 Then
            SetInitEntry = WritePrivateProfileString(sSection, ByVal sKeyName, ByVal sValue, sInitFile)
        ElseIf Len(sKeyName) > 0 Then
            SetInitEntry = WritePrivateProfileString(sSection, ByVal sKeyName, vbNullString, sInitFile)
        Else
            SetInitEntry = WritePrivateProfileString(sSection, vbNullString, vbNullString, sInitFile)
        End IfEnd Function
    以上属于网友 gump2000(阿甘) 提供
      

  9.   

    给你一段我的代码,你看看就明白了。
        IniPath = App.path
        IniFile = Dir(IniPath & "\" & "123.INI")
        If IniFile <> "" Then
            MYINI = IniPath & "\" & IniFile
            Open MYINI For Input As #1
            Input #1, strLine
            
            Input #1, strLine
            gstrServer = Trim(Mid(strLine, 12, Len(strLine)))
            Input #1, strLine
            gstrDatabase = Trim(Mid(strLine, 10, Len(strLine)))
            Input #1, strLine
            gstrDSN = Trim(Mid(strLine, 5, Len(strLine)))
            Input #1, strLine
            Input #1, strLine
            gHTDataPath = Trim(Mid(strLine, 12, Len(strLine)))
            
            Input #1, strLine
            gstrDataSource = Trim(Mid(strLine, 13, Len(strLine)))
            Input #1, strLine
            gstrUserID = Trim(Mid(strLine, 9, Len(strLine)))
            Input #1, strLine
            gstrPassword = Trim(Mid(strLine, 10, Len(strLine)))
            Input #1, strLine
            ComPort = Trim(Mid(strLine, 6, Len(strLine)))
            Close #1
        Else
            MsgBox "Can not Open INI File"
        End If
      

  10.   

    '函数  取得connection.ini的数据库连接属性
    Public Function GetProfileStr(ByVal Appname As String, ByVal Key As String) As String
        Dim GetStr As String * 256
        Dim ret As Long
        On Error Resume Next
        ret = GetPrivateProfileString(Appname, Key, "", GetStr, 256, App.Path & "\" & "connection.ini")
        If ret = 0 Then
            GetProfileStr = ""
        Else
            GetProfileStr = Left(GetStr, ret)
        End If
    End Function'函数  取得connection.ini的数据库连接属性
    Public Function WriteProfileStr(ByVal Appname As String, ByVal Key As String, ByVal strData As String) As Boolean
        Dim ret As Long
        On Error Resume Next
        ret = WritePrivateProfileString(Appname, Key, strData, App.Path & "\" & "connection.ini")
        If ret = 0 Then
            WriteProfileStr = False
        Else
            WriteProfileStr = True
        End If
    End Function