找回密码
 加入
搜索
查看: 10060|回复: 21

[AU3基础] 请问如何分别读取ini中的值??

 火.. [复制链接]
发表于 2011-5-14 23:57:45 | 显示全部楼层 |阅读模式
ini示例:
[run]
中国="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


...
发表于 2011-5-15 00:00:11 | 显示全部楼层
ini可以这么写吗?
发表于 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[0][0]
        $i_1 = StringSplit($i[$3][1],'"')        
        MsgBox(4096,$i_1[2],$i_1[4]&@LF&$i_1[6])
Next
 楼主| 发表于 2011-5-15 08:56:23 | 显示全部楼层
$file = "1.ini"
$i = IniReadSection("1.ini","run")
For $3 = 1 To $i[0][0]
        $i_1 = StringSplit($i[ ...
502762378 发表于 2011-5-15 00:40



    循环读取所有数据呢,循环套循环?
发表于 2011-5-15 09:11:46 | 显示全部楼层
你这个已经不是正经的ini内容写法了,不如直接用
FileReadLine(),然后split了
或者用_FileReadToArray()也较方便点
发表于 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
发表于 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函数
发表于 2011-5-16 13:31:30 | 显示全部楼层
回复 9# 飘云
不是说了吗,等号后面是一个字符串
[section]
item = "****"
两头的引号是用来表示中间的所有东西是数据
发表于 2011-5-16 14:27:36 | 显示全部楼层
回复 1# hongshow

$file = "a.ini"
$iniread = IniReadSection($file, "run")
For $i = 1 To $iniread[0][0]
        $a = StringRegExp($iniread[$i][1], '"(.*?)"', 3)
        For $s = 1 To UBound($a)
                MsgBox(4096, $iniread[$i][0], $a[$s - 1])
        Next
Next
发表于 2011-5-16 17:07:07 | 显示全部楼层
回复 11# netegg


    我晕,你到底想说什么,如果是对我那句“不知道为什么会把首尾的引号给过滤了”的说明,那大可不必,因为等号后面的内容如果没有引号也能被函数正确读取,所以问题的关键不在于等号后面是否是一个字符串,再说这个和LZ的问题无关吧?
发表于 2011-5-16 19:40:00 | 显示全部楼层
回复 13# 飘云
那倒是,怪我多想了
发表于 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[0]
        $line=$line&$array[$i]
        If $i<>$array[0] 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值会把首位的引号当作一个字符,取到得值为整段。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-19 06:24 , Processed in 0.086080 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表