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
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
Email:[email protected]
'函数说明
'StandKey为主值也就是[]中的内容
'keyName为字变量名
'keyValue为值
'FileName为文件名
Private Function WriteIniFileString(StandKey As String, keyName As String, keyValue As String, FileName) As Long
'写INI文件
Dim leninikey As Long
Dim strkey As String * 255
WriteIniFileString = WritePrivateProfileString(StandKey, keyName, keyValue, FileName)
End Function
Private Function GetIniFileString(StandKey As String, keyName As String, Default As String, FileName As String) As String
'读取INI文件函数
Dim leninikey As Long
Dim strkey As String * 255
leninikey = GetPrivateProfileString(StandKey, keyName, Default, strkey, Len(strkey), FileName)
GetIniFileString = (Left(strkey, leninikey))
End Function
把这个放入模块
调用就可以了
不然您的程序又多了一个DLL
麻烦
'别人的
'封装好了的代码:
Option ExplicitDeclare 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
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 Function ReadCfg(ByVal szAppName As String, ByVal szKey As String, Optional ByVal szDefault As String = "") As String
Dim t As String * 255
GetPrivateProfileString szAppName, szKey, szDefault, t, 255, AppPath + "config.ini"
ReadCfg = Left(t, InStr(t, Chr(0)) - 1)
End FunctionPublic Sub SaveCfg(ByVal szAppName As String, ByVal szKey As String, ByVal szValue As String)
WritePrivateProfileString szAppName, szKey, szValue, AppPath + "config.ini"
End SubPublic Function AppPath() As String
If Right(App.Path, 1) = "\" Then
AppPath = App.Path
Else
AppPath = App.Path + "\"
End If
End Function
'直接使用ReadCfg和SaveCfg就可以了
主 题: 谁能详细的说说如何读取和修改ini文件,一定给分。
作 者: blacklevin (黑闪电)
等 级:
信 誉 值: 100
所属论坛: Visual Basic
问题点数: 100
回复次数: 13
发表时间: 2002-2-17 20:23:03 谁能详细的说说如何读取和修改ini文件,一定给分。