如果一定要在INI中记录参数的话,把INI中记录的格式改一下吧。
比如: [Board 0]
Boardno=0
Boardstatus=1
[Board 1]
Boardno=1
Boardstatus=2
这样就可以用INI函数来完成了。如果以你这种格式写,我想需要用字符串函数进行分析。
比如: [Board 0]
Boardno=0
Boardstatus=1
[Board 1]
Boardno=1
Boardstatus=2
这样就可以用INI函数来完成了。如果以你这种格式写,我想需要用字符串函数进行分析。
解决方案 »
- Excel2007如何用宏控制粘贴图片的大小?
- 请高手帮忙解决一个关于SQLGetData函数的问题
- 200分急求!手机网络通信问题~望各位高人指点密经~
- 2000中创建的FSO对象在98下不能用,解决不了闪人.
- 我一直用winsock做通信,今天主管叫用MSComm控件进行串口通信,咋办?
- 编程
- 怎么得到MSFlexGrid控件中某一行的焦点?
- 我在做浏览器是遇到的问题,高手指教!
- 关于ADO的重要问题!!!!???进来看来,有意思哟!!!
- VB 已编译的EXE文件,运行时错误!请高手赐教,急!急!
- 用VB进行mdb数据库编程,如何进行备份?
- 在VB中使用了EXCEL图表后,在某些机器上运行无法显示图表?
[Board 0]
Boardno=0
Boardstatus=1[Board 1]
Boardno=1
Boardstatus=2
请大家注意一个前提条件就是:这个ini文件的格式不能够改动,因为它是别人定义的而不是由我来定义的。是不是太恶心了,不过我也没辙。
是否存在更可行的方法?
另外问一句:jamwang--可以用程序一个一个匹配例如B0匹配B END."怎样实现?"
@_@
如果你的所有文件都是这样的话,我建议你把这个部分写成一个单独的模块,换句话说,就是你自己写一个读写你自己定义格式的INI文件。实际上GetPrivateProfileString这个API函数也是通过这种查找字符串的方式来实现的,只不过他用到了一些快速查找的算法。相信你也会写出一个好的函数来。
如果ini文件不能改动,只能一行行读取再自己分析了
你们那个所谓的ini文件格式是谁定的???
dengdun:你说的FileSystemObject对象好象是ASP里面的吧!
[Board 0]
Boardno=0
Boardstatus=1
[Board 1]
Boardno=1
Boardstatus=2
调用API:GetPivateProfileString 或 GetPrivateProfileInt 即可
FileSystemObject当然也是VB中的对象
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile("c:\1.ini", ForReading,TristateFalse)
str=f.ReadLine
f.Close
这个str中就是文件中一行的内容。
Dim lc As Long
lc = FileLen(sFile) Dim l As Long
l = FreeFile
Open sFile For Binary Access Read As #l
Dim lf As Long
lf = l Dim bt() As Byte
ReDim bt(lc - 1)
Get #lf, , bt
Close #lf
lf = 0
'2:分割“[xxxx]”
Dim ss As String
For Each ss In Split(StrConv(bt, vbUnicode), "[")'现在每一个ss里应类似:
'Agboard]
' Board 0
' Boardno=0
' Boardstatus=1
' End Board
'
' Board 1
' Boardno=1
' Boardstatus=2
' End Board Dim l As Long
l = Instr(ss, "]")
If l > 0 Then
'分离出段 Agboard Dim sSection As String
sSection = Trim$(Left$(ss, l-1)) Dim sb As String
For each sb In Split(Mid$(ss, l+1), "End Board")
'现在每个sb 应为:
' Board 0
' Boardno=0
' Boardstatus=1
Dim sl As String
For Each sl In Split(sb, vbCrLf)
'现在每个sl里应是一行
'Board 0
If Len(sBoard)> 0 Then
'已得到段信息
l = Instr(sl, "=")
If l > 0 Then
'唉,老兄这以下的你自己搞定吧!
End If
Else l = Instr(sl, "Board ", vbTextCompare)
If l > 0 Then
’分离出块
Dim sBoard As String
sBoard = Trim$(Mid$(sl, l + 7))
End If
End If
Next
Next
End If
Next