找回密码
 加入
搜索
查看: 2833|回复: 10

[AU3基础] 求助怎样不读取重复行(已解决)

  [复制链接]
发表于 2011-11-10 18:34:02 | 显示全部楼层 |阅读模式
本帖最后由 fuldho 于 2011-11-10 21:02 编辑

配置文件如下:
[姓名]
1=年老痴呆
2=
3=年老痴呆
4=张三

$1=IniRead(@ScriptDir & "\名单.ini", "姓名", "1","")
$2=IniRead(@ScriptDir & "\名单.ini", "姓名", "2","")
If Not $2= "" And  $2<> $1  Then
MsgBox(64, "提示", "第二个人是"&$2)

假如第二、第三行存在怎样跳过。
(可能第二、第三不存在,不用组数判断)
先谢谢了!
发表于 2011-11-10 19:21:57 | 显示全部楼层
$var = IniReadSection('Test.ini', '姓名')

If Not @error Then
        For $i = 1 To $var[0][0]
                $sBinary = StringToBinary($var[$i][1], 2)
                If Eval('!' & $sBinary) = '' Then
                        Assign('!' & $sBinary, $var[$i][1])
                        MsgBox(4096, "", "关键字: " & $var[$i][0] & @CRLF & "值: " & $var[$i][1])
                EndIf
    Next
EndIf
 楼主| 发表于 2011-11-10 19:30:12 | 显示全部楼层
谢谢 水木子 大虾

我想不用组数来判断

有其它方法吗?
发表于 2011-11-10 19:33:15 | 显示全部楼层
回复 3# fuldho

不用数组那怎么?一行一行的读取吗?

这个方法也可以的!动态变量嘛!
发表于 2011-11-10 19:37:34 | 显示全部楼层
本帖最后由 水木子 于 2011-11-10 19:40 编辑

我们来理解下这个方法吧!

就是说先读取动态变量的值,如果这个结果是空的,那么说明这个内容在前面没有出现过,那它在目前就是唯一的,得到了这个结果后,我们就给它赋值,下次再读取它的时候就不会是空的,反之跳过,相当于做个记号。

这样一来我们所得到的所有结果都将是唯一的。
 楼主| 发表于 2011-11-10 19:42:06 | 显示全部楼层
对!就是一行一行读取,就是跳过空行、重复行。
 楼主| 发表于 2011-11-10 19:49:38 | 显示全部楼层
这样还是有空行出现

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-11-10 19:50:37 | 显示全部楼层
本帖最后由 水木子 于 2011-11-10 19:52 编辑

既然不用数组,那也没必要用INI吧!

空行很简单,检查下读取到的内容是否是空的就行了。
发表于 2011-11-10 20:28:19 | 显示全部楼层
回复 7# fuldho

Local $z = 2

While 1
        Local $sText = FileReadLine('Test.ini', $z)
        If @error = -1 Then ExitLoop
        If $sText Then
                $sText = StringRegExpReplace($sText, '\d+\=', '')
                $sBinary = StringToBinary($sText, 2)
                If Eval('!' & $sBinary) = '' Then
                        Assign('!' & $sBinary, $sText)
                        MsgBox(4096, '', $sText)
                EndIf
                $z += 1
        EndIf
WEnd
发表于 2011-11-10 20:44:20 | 显示全部楼层
本帖最后由 xms77 于 2011-11-10 20:46 编辑
        $Read_all = ""
        For $i = 1 To 4
                $Read = IniRead(@ScriptDir & "\名单.ini",'姓名',$i,"")
                If $read <> "" Then
                        $Result = StringRegExp($Read_all,$read,0) 
                        If $Result = 0 Then
                                MsgBox(0,0,$read)
                                $Read_all = $Read_all & '+' & $read
                        EndIf
                EndIf
        Next
 楼主| 发表于 2011-11-10 20:59:34 | 显示全部楼层
谢谢各位大虾了!问题解决了!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-1 09:43 , Processed in 0.107264 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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