jycel 发表于 2009-8-27 22:40:11

[已解决]listview列表中多项目怎样从INI中读取数据?

本帖最后由 jycel 于 2009-8-29 10:16 编辑

解决方法:8楼
如上图:怎样从配置文件中读取所有内容到列表中
我试了下只能读取等号前面的也就是字段名下的关键值,后面的值无法读取
配置文件如:

00-E0-61-15-C5-43=A001|192.168.0.11|按IP地址|255.255.255.0|192.168.0.1|202.98.96.68|61.139.2.69|1440*900*32*75|网维大师|开启
00-E0-61-16-12-01=A002|192.168.0.12|按IP地址|255.255.255.0|192.168.0.1|202.98.96.68|61.139.2.69|1440*900*32*75|网维大师|开启
00-E0-61-15-C8-DC=A003|192.168.0.13|按IP地址|255.255.255.0|192.168.0.1|202.98.96.68|61.139.2.69|1440*900*32*75|网维大师|开启
        $n=0
        $var = IniReadSection($ini, "Maclist")
        For $i = 1 To $var
                _GUICtrlListView_AddItem ($ListView1, $var[$i], $n)
                $var0=IniRead($ini,"Maclist",$var[$i],"")
    Next

UID 发表于 2009-8-28 15:19:25

你不要把问题提得这么得绕人好不好,先研究下你INI文件的数值有没问题

ghostystep 发表于 2009-8-28 15:42:00

iniread.inireadsection就可以读取,不过要注意ini的格式.

a=11|22|33
b=22|33|44

jycel 发表于 2009-8-28 18:33:24

你不要把问题提得这么得绕人好不好,先研究下你INI文件的数值有没问题
UID 发表于 2009-8-28 15:19 http://www.autoitx.com/images/common/back.gif
数值什么问题?
格式都是一样
A001=123|456|789|112|……
A002=545|4654|4564|456456|……
……
N=dfg|sdfas|asdf|asdf|……
不管他后面是值是多少,都是以“|”为分界线,
它的格式是统一的
A=1|2|3|4
B=4|5|6|7
后面值不是按顺序的哈,别看错了,只是例如而已

jycel 发表于 2009-8-28 19:24:24

本帖最后由 jycel 于 2009-8-28 19:25 编辑


如图只能读取字段名下的关键字,关键字后面的值还无从着手,在FOR……next中应该还插入一个FOR循环,我的思路是读取这个值,然后StringSplit来分解开来,再写入列表中!具体读取一直没成功
        $n=0
        $var = IniReadSection($ini, "Maclist")
        For $i = 1 To $var
                _GUICtrlListView_AddItem ($ListView1, $var[$i], $n)
        Next
ini

00-E0-61-15-C5-43=A001|192.168.0.11|按IP地址|255.255.255.0|192.168.0.1|202.98.96.68|61.139.2.69|1440*900*32*75|网维大师|开启
00-E0-61-16-12-01=A002|192.168.0.12|按IP地址|255.255.255.0|192.168.0.1|202.98.96.68|61.139.2.69|1440*900*32*75|网维大师|开启
00-E0-61-15-C8-DC=A003|192.168.0.13|按IP地址|255.255.255.0|192.168.0.1|202.98.96.68|61.139.2.69|1440*900*32*75|网维大师|开启
00-E0-61-15-C7-4E=A004|192.168.0.14|按IP地址|255.255.255.0|192.168.0.1|202.98.96.68|61.139.2.69|1440*900*32*75|网维大师|开启

afan 发表于 2009-8-28 20:56:38

本帖最后由 afan 于 2009-8-28 21:07 编辑

如果 ini 文件跟其它的什么读写没有关系,可以直接写成以下格式,读取更方便:

1=00-E0-61-15-C5-43|A001|192.168.0.11|按IP地址|...|....
2=00-E0-61-16-12-01|A002|192.168.0.12|按IP地址|...|....
3=...
直接IniReadSection读取值,for...next,GUICtrlCreateListViewItem创建项目,简单且不会出错

或者不用ini格式,直接一行一组数据(没等号),如
00-E0-61-15-C5-43|A001|192.168.0.11|按IP地址|...|....
00-E0-61-16-12-01|A002|192.168.0.12|按IP地址|...|....

_FileReadToArray读取到数组再创建,同样简单

jycel 发表于 2009-8-28 22:21:58

如果 ini 文件跟其它的什么读写没有关系,可以直接写成以下格式,读取更方便:

1=00-E0-61-15-C5-43|A001|192.168.0.11|按IP地址|...|....
2=00-E0-61-16-12-01|A002|192.168.0.12|按IP地址|...|....
...
afan 发表于 2009-8-28 20:56 http://www.autoitx.com/images/common/back.gif
我是用来做网吧GHOST后全自动设置工具要,是根据MAC地址来更改

afan 发表于 2009-8-28 22:32:45


Dim $var = IniReadSection($ini, "Maclist"), $item, $i
For $i = 1 to $var
   $item[$i-1] = GUICtrlCreateListViewItem($var[$i] & '|' & $var[$i], $ListView)
   ReDim $item[$i+1]
next

jycel 发表于 2009-8-29 10:15:32


Dim $var = IniReadSection($ini, "Maclist"), $item, $i
For $i = 1 to $var
   $item[$i-1] = GUICtrlCreateListViewItem($var[$i] & '|' & $var[$i], $ListView)
   ReDim $item[$i+1]
...
afan 发表于 2009-8-28 22:32 http://www.autoitx.com/images/common/back.gif
谢谢!试成功了!先去理解下

jianganew 发表于 2014-7-11 19:58:56

afan的代码很好,我试了很成功的读取到值。
页: [1]
查看完整版本: [已解决]listview列表中多项目怎样从INI中读取数据?