一个离开.NET的程序员

ryhan

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

'
'* 功能:使用VBS读取ini文件中指定节点下的所有值
'* 输入参数:inipath :ini文件的地址
'*           initypes :ini文件中包含在"["和"]"之间的值
'* 返回值:找到的字段的值组成的array
'* 编写人:  chenyb
'* 编写日期:2008-12-26
'* 其他说明:以下只是方法,具体问题具体修改
'
Function vbsGetIniFields(inipath,initypes)
 Const ForReading = 1 '定义常量
 'FSO对象,文本对象,下一行数据变量,字串搜索位置
 Dim objFSO,objTextFile,strNextLine,intLineFinder
 Dim state  '指定是否在匹配的initypes中是否找到字段
 Dim tmp    '临时存储字符串
 Dim typeList '分割字符串后的字串list
 Dim rsStr    '函数返回值
 Set objFSO = CreateObject("Scripting.FileSystemObject") '建立FSO对象
 Set objTextFile = objFSO.OpenTextFile(inipath, ForReading)'打开文档
 Do Until objTextFile.AtEndOfStream   '遍历每一行
  strNextLine = objTextFile.ReadLine '读取一行数据
  '如果已经找到了initypes,又找到了"[]",那说明字段未找到
  If InStr(strNextLine, "[") <> 0 And InStr(strNextLine, "]") <> 0 Then
      If state = 1 Then
          Exit DO
      End if
      tmp = Trim(Mid(Trim(strNextLine),InStr(strNextLine, "[")+1,Len(initypes)))    
      if tmp = Trim(initypes) Then '找到了initypes  
          state = 1
          strNextLine = objTextFile.ReadLine
      End if
  End if
  
  If state = 1 Then  
   intLineFinder = InStr(strNextLine,"=") '搜索字符串中的"="
   If intLineFinder <> 0 Then '如果找到"="
       typeList = Split(strNextLine,"=") '分割字符串
       rsStr =rsStr & ",""" & typeList(1) & """" '赋值 
   End If
  End if
 Loop 
 objTextFile.Close '关闭文档
 Execute "vbsGetIniFields = Array(" & right(rsStr,Len(rsStr) - 1) & ")" '返回值
End Function
'***********使用示例******************************
Dim t
t = vbsGetIniFields("公诉.ini","包括VBS")
MsgBox UBound(t)
MsgBox t(0)
MsgBox t(1)
'*************************************************

(原 http://blog.sina.com.cn/s/blog_46fe1e110100cmzl.html )

posted on 2011-05-04 15:08  ryhan  阅读(1297)  评论(0编辑  收藏  举报