lotsunhim 发表于 2011-5-16 12:09:09

调用ini配置的问题?

$i = '卡号:003658,'
$i = StringRegExp($i, '卡号:(\d+),', 3)
MsgBox(0, 0, $a)
上面这个不能做到我的要求,我水平也菜。
要求读取配置文件的卡号然后去读取log.txt中有003658或者003654,匹配就执行程序。
ini文件如下
[配置]
卡号=003659;003657;003654;003653;003650
所以请教大家应该怎么写呢?

palkiller 发表于 2011-5-16 20:51:06

$ini=@ScriptDir&"\ini.ini"               ;定义ini文件路径
$var=IniRead($ini,"配置","卡号","")               ;读取卡号的值
$array=StringSplit($var,";")               ;通过分号分割$var
$log=@ScriptDir&"\log.txt"               ;定义log.txt路径
$open=FileOpen($log)                     ;打开log.txt
$data=FileRead($open)                      ;读取log.txt文件内容,实际上不用fileopen获取句柄,直接读取也可,俺习惯使然
FileClose($open)                           ;关闭log.txt文件
For $i=1 To $array                      ;循环判断log.txt中是否包含ini文件定义的卡号
        $chk=StringInStr($data,$array[$i])   ;在$date中查找是否存在卡号字符串
        If $chk<>0 Then ExitLoop               ;如有,则跳出for...next循环,执行下面的程序
        If $i=$array Then Exit            ;最后一次循环还是无发现,则退出程序
Next

love5173 发表于 2011-5-16 23:41:56

1、StringInStr ( "字符串", "子字符串" [, 区分大小写 [, 出现次序 [, 开始 [, 数量]]]] )
2、OR结构

lotsunhim 发表于 2011-5-17 15:26:55

谢谢了,回头试试。楼上这位看得不太懂,不过也多谢你。

love5173 发表于 2011-5-19 22:01:14

本帖最后由 love5173 于 2011-5-19 22:03 编辑

回复 4# lotsunhim
我也比较菜,我只是认为根本不需要用正则,只是匹配有没有指定字符串,根本没有模糊匹配的意思,所以用StringInStr($txt,"003654") or StringInStr($txt,"003658")
就可以了
或者用正则的StringRegExp($txt,'003654|003658',1)就可以了,因为我比较懒,所以不想给你写完整代码

kinghu318 发表于 2011-5-20 12:45:58

回复 6# love5173


确实不用正则也是可以的,简单易懂就行了。。。
页: [1]
查看完整版本: 调用ini配置的问题?