VB中ini文件的遍历
我在ini文件中存放的是某个时间对某个设备的控制,结构如:时间1=指令1,时间2=指令2.。。。。。。。比如:[LED显示屏]1.0=播放(用代码表示也可以,1.0=0x...
我在ini文件中存放的是某个时间对某个设备的控制,结构如:时间1=指令1,时间2=指令2.。。。。。。。
比如:
[LED显示屏]
1.0=播放(用代码表示也可以,1.0=0x43 之类的)
10.5=暂停
[舞台灯光]
1.0=开
2.0=红光
3.1=蓝光
10.7=闪烁
。。。。。
[。。。。。]
。。。。。
现在我就是想把这些时间和对应的操作读出来保存到一个二维数组中,然后再打开程序后对照时间发送相应的代码控制设备,不一定是读到二维数组中,只要能实现这个功能就行,希望能注释清楚,让我这个菜鸟能看得懂 展开
比如:
[LED显示屏]
1.0=播放(用代码表示也可以,1.0=0x43 之类的)
10.5=暂停
[舞台灯光]
1.0=开
2.0=红光
3.1=蓝光
10.7=闪烁
。。。。。
[。。。。。]
。。。。。
现在我就是想把这些时间和对应的操作读出来保存到一个二维数组中,然后再打开程序后对照时间发送相应的代码控制设备,不一定是读到二维数组中,只要能实现这个功能就行,希望能注释清楚,让我这个菜鸟能看得懂 展开
2个回答
展开全部
'利用API函数批量读取某个 节 所有项目
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
'对API抱装了一下,参数 1.节名; 2.文件名(包括路径)。返回字符串,每个项目以英文逗号分隔。
Public Function getProfileSection(ByVal lpAppName As String, ByVal lpFileName As String) As String
If Dir(lpFileName) <> "" Then
Dim buffer As String
buffer = Space(FileLen(lpFileName))
If GetPrivateProfileSection(lpAppName, buffer, Len(buffer), lpFileName) > 0 Then
Dim loc As Integer
loc = InStr(buffer, Chr(0) & Chr(0))
buffer = Left(buffer, loc - 1)
buffer = Replace(buffer, Chr(0), ",")
getProfileSection = buffer
End If
End If
End Function
'这个函数用上面的函数获取ini文件中的串,把它转换为两维数组返回,如读取错误返回null
Public Function ProfileSectionToArray(ByVal Section As String) As Variant
On Error GoTo errHandle
Dim a
a = Split(Section, ",")
Dim ar() As String
ReDim ar(UBound(a), 1)
Dim i As Integer
Dim items
For i = 0 To UBound(a)
items = Split(a(i), "=")
ar(i, 0) = items(0)
ar(i, 1) = items(1)
Next
ProfileSectionToArray = ar
Exit Function
errHandle:
ProfileSectionToArray = Null
End Function
'这是测试
Private Sub Command1_Click()
Dim keyvalues As String
keyvalues = getProfileSection("舞台灯光", "c:\123.ini")
Dim ar
ar = ProfileSectionToArray(keyvalues)
If Not IsNull(ar) Then
Dim i As Integer
For i = 0 To UBound(ar, 1) '遍历二维数组
Debug.Print ar(i, 0), ar(i, 1)
Next
End If
End Sub
'一次只能读取一个节,如果要把几个节的项目合在一个数组中,可以多getProfileSection几次连接成一个字符串,然后再ProfileSectionToArray
2015-07-10
展开全部
当文本文件一样的操作,读进来,遍历,可以用stringlist;
简单参考如下:
s: TStringlist;
ss: string;
s:=TStringList.Create;
s.LoadFromFile('c:\test.ini');
for i:=0 to s.count-1 do
ss:=s[i].string;
简单参考如下:
s: TStringlist;
ss: string;
s:=TStringList.Create;
s.LoadFromFile('c:\test.ini');
for i:=0 to s.count-1 do
ss:=s[i].string;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询