hongshow 发表于 2011-5-14 23:57:45

请问如何分别读取ini中的值??

ini示例:

中国="D:\Program Files\OICQ\QQ1.exe","-d","D:\Program Files\OICQ\QQ1.ico"
外国="D:\Program Files\OICQ\QQ8.exe","-f","D:\Program Files\OICQ\QQ9.ico"
内国="D:\Program Files\OICQ\QQ4.exe","-e","D:\Program Files\OICQ\QQ2.ico"
没国="D:\Program Files\OICQ\QQ7.exe","-v","D:\Program Files\OICQ\QQ8.ico"

怎么依次读取所有值?

分别取到如下值:

D:\Program Files\OICQ\QQ1.exe
-d
D:\Program Files\OICQ\QQ1.ico


...

netegg 发表于 2011-5-15 00:00:11

ini可以这么写吗?

502762378 发表于 2011-5-15 00:40:00

本帖最后由 502762378 于 2011-5-15 17:05 编辑

$file = "1.ini"
$i = IniReadSection("1.ini","run")
For $3 = 1 To $i
        $i_1 = StringSplit($i[$3],'"')       
        MsgBox(4096,$i_1,$i_1&@LF&$i_1)
Next

hongshow 发表于 2011-5-15 08:56:23

$file = "1.ini"
$i = IniReadSection("1.ini","run")
For $3 = 1 To $i
        $i_1 = StringSplit($i[ ...
502762378 发表于 2011-5-15 00:40 http://autoitx.com/images/common/back.gif


    循环读取所有数据呢,循环套循环?

happytc 发表于 2011-5-15 09:11:46

你这个已经不是正经的ini内容写法了,不如直接用
FileReadLine(),然后split了
或者用_FileReadToArray()也较方便点

502762378 发表于 2011-5-15 17:07:31

回复 4# hongshow

如果就这个字段,其他字符窜的规则和以上相同,这样便可以
如果还有其他字段,循环套循环

飘云 发表于 2011-5-15 18:00:47

ini函数可以读取=后面的,比如"D:\Program Files\OICQ\QQ1.exe","-d","D:\Program Files\OICQ\QQ1.ico",然后就要用字符串函数来处理了,比如split

netegg 发表于 2011-5-16 02:26:00

回复 7# 飘云
不对吧,ini等号后面的应该是一个字符串才对呀,不能分开吧,如果说错了,见谅,不是很熟

飘云 发表于 2011-5-16 12:47:47

本帖最后由 飘云 于 2011-5-16 12:52 编辑

回复 8# netegg


可以的,这个随便做个试验就能看出来,用IniReadSection即可,如果用那个iniread函数,不知道为什么会把首尾的引号给过滤了

飘云 发表于 2011-5-16 13:30:13

回复 4# hongshow


    循环读取建议用AdlibRegister函数

netegg 发表于 2011-5-16 13:31:30

回复 9# 飘云
不是说了吗,等号后面是一个字符串

item = "****"
两头的引号是用来表示中间的所有东西是数据

lixiaolong 发表于 2011-5-16 14:27:36

回复 1# hongshow

$file = "a.ini"
$iniread = IniReadSection($file, "run")
For $i = 1 To $iniread
        $a = StringRegExp($iniread[$i], '"(.*?)"', 3)
        For $s = 1 To UBound($a)
                MsgBox(4096, $iniread[$i], $a[$s - 1])
        Next
Next

飘云 发表于 2011-5-16 17:07:07

回复 11# netegg


    我晕,你到底想说什么,如果是对我那句“不知道为什么会把首尾的引号给过滤了”的说明,那大可不必,因为等号后面的内容如果没有引号也能被函数正确读取,所以问题的关键不在于等号后面是否是一个字符串,再说这个和LZ的问题无关吧?

netegg 发表于 2011-5-16 19:40:00

回复 13# 飘云
那倒是,怪我多想了

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

$ini=@ScriptDir&"\ini.ini"
$var=IniRead($ini,"run","中国","")
$var=StringReplace($var,'"',"")
$array=StringSplit($var,",")
$line=""
For $i=1 To $array
        $line=$line&$array[$i]
        If $i<>$array Then $line=$line&@CRLF
Next
MsgBox(64,"输出",$line)只需要取值的话,第4行以下可以无视...

To 蛋蛋:ini的key值如果首尾都是相同引号(成对的单引号或双引号都ok)的话,读取时认为是被引号框起的那部分文字,比如LZ的这个ini文件里面"D:\Program Files\OICQ\QQ1.exe","-d","D:\Program Files\OICQ\QQ1.ico",蓝色部分是函数取到的值,如果非成对的引号,比如"D:\Program Files\OICQ\QQ1.exe","-d","D:\Program Files\OICQ\QQ1.ico',这样的key值会把首位的引号当作一个字符,取到得值为整段。
页: [1] 2
查看完整版本: 请问如何分别读取ini中的值??