又是vb操作ini,请使用API

hackxue 2008-09-10 06:42:13
要实现创那建一个INI
能自己添加section key value
同时能用list接收。最好是这样
可是我想的就是怎么判定section的个数呢?只有有了section才能知道key的吧?
最好有人能解释一下,怎么样遍历这个INI文件的值并将其归类,进行自由的控制!
...全文
132 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
苍狼传说 2008-09-11
  • 打赏
  • 举报
回复
支持全角和半角的中括号,支持分号“;”注释
苍狼传说 2008-09-11
  • 打赏
  • 举报
回复
给你个纯VB的代码,将所有的KEY及值放入字典中


'--------------------------------------------------------------------------------
' Project : GIS_PROJECT
' Procedure : LoadConfigFile
' Description: [type_description_here]
' Created by : Project Administrator
' Machine : DR-L
' Date-Time : 2007-12-28-10:13:45
'
' Parameters : vConfigFilename (String)
'--------------------------------------------------------------------------------
Private Function LoadConfigFile(ByVal vConfigFilename As String) As Scripting.Dictionary

On Error GoTo LoadConfigFile_Err

Dim retDict As Scripting.Dictionary
Dim fso As New FileSystemObject
Dim txtStream As TextStream
Dim content As String
Dim key As String
Dim LineContent As String
Dim firstRead As Boolean

100 firstRead = True
102 If fso.FileExists(vConfigFilename) Then
104 Set retDict = New Scripting.Dictionary
106 Set txtStream = fso.OpenTextFile(vConfigFilename)
108 While Not txtStream.AtEndOfLine
110 LineContent = txtStream.ReadLine

112 If LineContent Like "[[]*[]]" Or LineContent Like "[[]*]" Then
114 If firstRead = True Then

Else
116 retDict.Add key, FormatSql(content)
118 content = ""

End If
120 key = LineContent
122 key = StrConv(key, vbNarrow)
124 key = Replace(key, "[", "")
126 key = Replace(key, "]", "")
128 key = Trim$(key)


Else
' If LineContent = Chr$(13) Then
' Else
130 content = content & vbCrLf & LineContent
' End If
End If
132 firstRead = False
Wend
134 retDict.Add key, FormatSql(content)
136 Set LoadConfigFile = retDict
138 txtStream.Close
Else
140 Set retDict = Nothing
End If
Exit Function

LoadConfigFile_Err:
err.Raise vbObjectError + 100, _
"LoadConfigFile", _
"LoadConfigFile Error by " & Erl & " Line"

End Function
wuhan__boy 2008-09-11
  • 打赏
  • 举报
回复
没分下东西了,狂发几下回帖子拿分,下东西.
  • 打赏
  • 举报
回复
雪情很热心

收藏一下
fvflove 2008-09-10
  • 打赏
  • 举报
回复


'编历ini文件,某个主键下的所有Key
Option Explicit

Private 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

Public Function GetInfoSection(strSection As String, strIniFile As String) As String()
Dim strReturn As String * 32767
Dim strTmp As String
Dim nStart As Integer
Dim nEnd As Integer
Dim i As Integer
Dim sArray() As String

Call GetPrivateProfileSection(strSection, strReturn, Len(strReturn), strIniFile)

strTmp = strReturn
i = 1
Do While strTmp <> ""
nStart = nEnd + 1
nEnd = InStr(nStart, strReturn, vbNullChar)
strTmp = Mid$(strReturn, nStart, nEnd - nStart)
If Len(strTmp) > 0 Then
ReDim Preserve sArray(1 To i)
sArray(i) = strTmp
i = i + 1
End If
Loop
GetInfoSection = sArray

End Function

Private Sub Command1_Click()
Dim i As Long
Dim A() As String
A = GetInfoSection("aaa", "c:\1.ini") 'C:\1.ini 改为你的文件名
For i = 1 To UBound(A)
MsgBox A(i)
Next
End Sub

fvflove 2008-09-10
  • 打赏
  • 举报
回复

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 pFileName 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

'*************************************
'目的:写入数据至Ini文件

'输入: FileName 文件名
' AppName 项目名
' In_Key 键名
' In_Data 键名上的数值

'返回: 写入成功 True
' 写入失败 False

'*************************************

Public Function WriteIniStr(ByVal FileName As String, ByVal AppName As String, ByVal In_Key As String, ByVal In_Data As String) As Boolean
On Error GoTo WriteIniStrErr
WriteIniStr = True
If VBA.Trim(In_Data) = "" Or VBA.Trim(In_Key) = "" Or VBA.Trim(AppName) = "" Then
GoTo WriteIniStrErr
Else
WritePrivateProfileString AppName, In_Key, In_Data, FileName
End If
Exit Function
WriteIniStrErr:
Err.Clear
WriteIniStr = False
End Function


'*************************************
'目的:从Ini文件中读取数据

'输入: FileName 文件名
' AppName 项目名
' In_Key 键名

'返回: 取得给定键名上的数据

'*************************************

Public Function GetIniStr(ByVal FileName As String, ByVal AppName As String, ByVal In_Key As String) As String
On Error GoTo GetIniStrErr
If VBA.Trim(In_Key) = "" Then
GoTo GetIniStrErr
End If
Dim GetStr As String
GetStr = VBA.String(128, 0)
GetPrivateProfileString AppName, In_Key, "", GetStr, 256, FileName
GetStr = VBA.Replace(GetStr, VBA.Chr(0), "")
If GetStr = "" Then
GoTo GetIniStrErr
Else
GetIniStr = GetStr
GetStr = ""
End If
Exit Function
GetIniStrErr:
Err.Clear
GetIniStr = ""
GetStr = ""
End Function


1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧