sfwd001 发表于 2009-2-9 12:43:22

ini配置文件的读取

有一个配置文件,内容如下:

abc.ini


a.ipshougou.com=机器狗病毒存放主机2008/12/1
b.ipshougou.com=机器狗病毒存放主机2008/12/1
www.biaoqing365.cn=机器狗病毒存放主机2008/12/1
qq.icafe88.cn=机器狗病毒存放主机2008/12/1
www.qq808a.cn=钓鱼网2008/12/1
.............

怎么读取配置文件中的网站地址?



我的想法是要从这个配置文件中读出其中的网站地址(这些网站地址都是需要屏蔽的非法网站或木马病毒网站),网站地址可能有近千条之多。

[ 本帖最后由 sfwd001 于 2009-3-9 18:36 编辑 ]

xrbenbeba 发表于 2009-2-9 13:01:41

1.
$var = IniRead(@ScriptDir&"\abc.ini", "abcd", "www.xxx.com", "非法网站")
MsgBox(4096, "结果", $var)

2.
$var = IniReadSection(@ScriptDir&"\abc.ini", "abcd")
MsgBox(4096, "结果", $var)

sfwd001 发表于 2009-2-10 11:50:20

感谢 xrbenbeba 网友的回复,但您的这种方法不是我想要的,我的想法是要从一个配置文件中读出其中的网站地址(这些网站地址都是需要屏蔽的非法网站或木马病毒网站),网站地址可能有近千条之多。

KiwiCsj 发表于 2009-2-10 15:59:56

xrbenbeba 朋友给你第二个方案是合你的要求的,你不能指望别人完全按你的意思帮你把代码写完整吧,点到关键了就自己稍稍再动动脑筋查查帮助喽。

Local $var,$tmp_str
$var = IniReadSection(@ScriptDir&"\abc.ini", "abcd")
If @error <> 1 Then
        For $i=1 to $var
                $tmp_str&=@CRLF&$var
        Next
        MsgBox(4096, "结果", $tmp_str)
Else
        MsgBox(4096, "结果", "没有找到")
EndIf

gzkay 发表于 2009-2-10 16:02:27

其实这些一切都可以在au3的帮助文档找到..

KiwiCsj 发表于 2009-2-10 16:05:32

所以说初学者要注意学习方法,当然更要注意提问方法,理当先看帮助后查论坛,实在不行整理好思路,再提问,不然自己头痛得很,还伤了帮助他解决问题的朋友们的心,人家伤心了不搭理了,还当是世态炎凉。

sfwd001 发表于 2009-2-24 23:24:18

感谢KiwiCsj的大力支持,我修改了一下,可以运行,但有一个问题还是不能解决,还请大家再次帮助!就是这个程序只能读取1105行数据!我的数据远远超过这个行数!怎么办?
Local $var,$tmp_str,$file,$dt
$dt="ProcessSafe.ini"
$file="hosts"
$var = IniReadSection($dt, "Local_HostsDeny")
If @error <> 1 Then
    For $i=1 to $var
      $tmp_str&=@CRLF&"127.0.0.1 "&$var[$i]
    Next
    FileWrite($file,$tmp_str)
Else
    MsgBox(4096, "结果", "没有找到")
EndIf
    ;FileWrite($file,@CRLF)
                ;FileClose($file)
    MsgBox(0, "提示", "文件提取成功!")

[ 本帖最后由 sfwd001 于 2009-2-24 23:26 编辑 ]

mcknight1013 发表于 2009-2-25 02:17:24

我的办法是把现有程序分别复制. 也就是现在的1105行,另一个放另外的1105行..:face (25):
比较笨..

sfwd001 发表于 2009-2-25 10:58:13

有没有更好的方法?

sfwd001 发表于 2009-2-28 15:36:27

这么大的论坛就没有人可以回复这个了?

netegg 发表于 2009-2-28 18:05:48

#include<file.au3>
dim $j=1, $aWeb, $address, $aBlock
$file= fileopen(@systemdir @ "\drivers\etc\hosts", 2)
_filereadtoarray($ini, $aWeb)
for $i = 1 to $aWeb
if stringinstr($aWeb[$i], "=") <> 0 then
   $address = stringsplit($aWeb[$i], "=")
   $aBlock[$j] = "127.0.0.1    " & $address
   $j=$j+1
endif
next
_filewritefromarray($file, $aBlock, 1)

[ 本帖最后由 netegg 于 2009-3-1 10:33 编辑 ]

sfwd001 发表于 2009-3-1 21:35:36

原帖由 netegg 于 2009-2-28 18:05 发表 http://www.autoitx.com/images/common/back.gif
#include
dim $j=1, $aWeb, $address, $aBlock
$file= fileopen(@systemdir @ "\drivers\etc\hosts", 2)
_filereadtoarray($ini, $aWeb)
for $i = 1 to $aWeb
if stringinstr($aWeb[$i], "=")0 then
   ...


感谢netegg的回复,可是我还是搞不懂您写的这一段程序,运行也是出错,请您看看

xayle 发表于 2009-3-2 02:38:16

我以前做的一个ini文件里面有3000多行,
分类
[一级分类]
001=001
.
.
.
.
999=999

111
222
[......]
111

999
能看明白吗

netegg 发表于 2009-3-2 10:29:11

简单说说看你自己的思路,不用列举那么多行,每个section举一两个就行

netegg 发表于 2009-3-2 10:30:06

还有,把错误提示发上来我看看
页: [1] 2 3
查看完整版本: ini配置文件的读取