📄 如何列举ini文件中所有的项.txt
字号:
在 QA000940 “VB中如何读取INI文件”中 介 绍 了 如 何 读 写 INI文 件 。 读 INI文 件 应 该 使 用 GetPrivateProfileString, 该 函 数 定 义 如 下 :
Declare Function GetPrivateProfileString Lib _
"kernel32" Alias "GetPrivateProfileStringA" ( _
ByVal lpApplicationName As Any, ByVal lpKeyName As Any, _
ByVal lpDefault As String, ByVal lpReturnedString As String, _
ByVal nSize As Long, ByVal lpFileName As String) As Long
请 注 意 这 里 我 们 定 义 前 两 个 参 数 为 Any类 型 。 按 照 API说 明 , 如 果 lpApplicationName参 数 为 NULL, 则 该 函 数 返 回 所 有 的 段 , 如 :
Dim s As String
s = Space(256)
GetPrivateProfileString 0&, 0&, "", s, 256, "control.ini"
Dim v As Variant
v = Split(s, Chr(0))
Dim i
For i = 0 To UBound(v)
List1.AddItem v(i)
Next
这 里 的 Split是 VB6的 新 函 数 , vb6的 用 户 可 以 使 用 :
Public Function Split(ByVal sIn As String, Optional sDelim As _
String, Optional nLimit As Long = -1, Optional bCompare As _
VbCompareMethod = vbBinaryCompare) As Variant
Dim sRead As String, sOut() As String, nC As Integer
If sDelim = "" Then
Split = sIn
End If
sRead = ReadUntil(sIn, sDelim, bCompare)
Do
ReDim Preserve sOut(nC)
sOut(nC) = sRead
nC = nC + 1
If nLimit <> -1 And nC >= nLimit Then Exit Do
sRead = ReadUntil(sIn, sDelim)
Loop While sRead <> ""
ReDim Preserve sOut(nC)
sOut(nC) = sIn
Split = sOut
End Function
Public Function ReadUntil(ByRef sIn As String, _
sDelim As String, Optional bCompare As VbCompareMethod _
= vbBinaryCompare) As String
Dim nPos As String
nPos = InStr(1, sIn, sDelim, bCompare)
If nPos > 0 Then
ReadUntil = Left(sIn, nPos - 1)
sIn = Mid(sIn, nPos + Len(sDelim))
End If
End Function
而 如 果 第 一 个 参 数 不 为 NULL, 第 二 个 参 数 为 NULL, 则 返 回 段 中 所 有 项 的 名 字 , 如
Dim s As String
s = Space(256)
GetPrivateProfileString "don't load", 0&, "", s, 256, "control.ini"
Dim v As Variant
v = Split(s, Chr(0))
Dim i
For i = 0 To UBound(v)
List1.AddItem v(i)
Next
<END>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -