[发脚本] 用VBS编写的类似读写INI的2个函数!

昨天没事编写了以个读取配置的函数:
'读取配置文件的小节名的值
Function ReadPeiZhi(strLuJing,JieMing)
Const ForReading = 1
ReadPeiZhi=0
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextFile = FSO.OpenTextFile(strlujing, ForReading)
Do Until TextFile.AtEndOfStream
strLine =TextFile.ReadLine
if instr(strLine,"=")<>0 Then
StrFile=Split(StrLine,"=")
if trim(strFile(0))=JieMing Then
ReadPeiZhi=Trim(strFile(1))
Exit Do
End If
End If
Loop
Set FSO=Nothing
End Function
'参数说明:strLuJing-----配置文件的路径 JieMing-----小节名(如类似HP=100)HP就是小节名
'改写配置文件的值
Sub WritePeiZhi(strLuJing,JieMing,strNeiRong)
Const ForReading = 1
Const ForWriting = 2
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextFile = FSO.OpenTextFile(strLuJing, ForReading)
Do Until TextFile.AtEndOfStream
strLine =TextFile.ReadLine
If InStr(strLine,JieMing)<>0 Then
strLine=JieMing&"="&strNeiRong
End If
strTmp=strTmp&strLine&vbcrlf
Loop
TextFile.Close
Set TextFile = FSO.OpenTextFile(strLuJing, ForWriting)
TextFile.WriteLine strTmp
TextFile.Close
Set FSO=Nothing
End Sub
'参数说明:strLuJing-----配置文件的路径 JieMing-----小节名(如类似HP=100)HP就是小节名
'strNeiRong-----就如上面的100
用上面2个函数举个例子:
加入D盘下一个名为:peizhi.txt的配置文件里面的内容为:
HP=1500
MP=2000
USER=醉月清风
XZUOBIAO=50
YZUOBIAO=400
=========================
如果要读取USER的值就这样写:
msg=ReadPeiZhi("D:\PeiZhi.txt","USER")
运行后msg的值就为“醉月清风”其他项目的也一样
如果我要把XZUOBIAO的值从50改到100就这样写:
Call WritePeiZhi("D:\PeiZhi.txt","USER",100)
运行后整个配置文件的内容变为:
HP=1500
MP=2000
USER=醉月清风
XZUOBIAO=50
YZUOBIAO=400
如有什么疑问请回复!

[ 本帖最后由 caozh522601 于 2008-3-13 03:07 PM 编辑 ]
联系方式:
qq:739915041
http://hi.baidu.com/caozh522601

頂一個  

TOP

觉得用vbs写这个有点吃力不讨好,初步看了一下代码主要有这样一些问题
1. 第一个Set TextFile = FSO.OpenTextFile(strLuJing, ForReading)  后,没有 TextFile.Close 关闭以及释放
2. 如果有一行,比如是 abc=123=3230  ,超过数量的 "=" 号,会只取到123
3. 如果整行只有一个 "=" 号(前后无空格),就有出错的可能
4. 写函数中,InStr(strLine,JieMing)<>0 这样的查找方式有问题,如果我要写的小节是 "abc" ,而有一行内容是 "x=abc" ,InStr(strLine,JieMing) 也会返回>0 的结论
先生啊 ,难道您不知道, 人生本来就是由矛盾组成的啊!

TOP

谢谢指点
联系方式:
qq:739915041
http://hi.baidu.com/caozh522601

TOP

第一个函数漏了TextFile.Close
联系方式:
qq:739915041
http://hi.baidu.com/caozh522601

TOP

改成:
Sub WritePeiZhi(strLuJing,JieMing,strNeiRong)
Const ForReading = 1
Const ForWriting = 2
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextFile = FSO.OpenTextFile(strLuJing, ForReading)
Do Until TextFile.AtEndOfStream
strLine =TextFile.ReadLine
If InStr(strLine,JieMing)<>0 Then
Tmp=Split(strLine,"=")
if Tmp(0)=JieMing then
strLine=JieMing&"="&strNeiRong
End If
End if
strTmp=strTmp&strLine&vbcrlf
Loop
TextFile.Close
Set TextFile = FSO.OpenTextFile(strLuJing, ForWriting)
TextFile.WriteLine strTmp
TextFile.Close
Set FSO=Nothing
End Sub

问题全部解决
联系方式:
qq:739915041
http://hi.baidu.com/caozh522601

TOP