求助怎样不读取重复行(已解决)
本帖最后由 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<> $1Then
MsgBox(64, "提示", "第二个人是"&$2)
假如第二、第三行存在怎样跳过。
(可能第二、第三不存在,不用组数判断)
先谢谢了! $var = IniReadSection('Test.ini', '姓名')
If Not @error Then
For $i = 1 To $var
$sBinary = StringToBinary($var[$i], 2)
If Eval('!' & $sBinary) = '' Then
Assign('!' & $sBinary, $var[$i])
MsgBox(4096, "", "关键字: " & $var[$i] & @CRLF & "值: " & $var[$i])
EndIf
Next
EndIf 谢谢 水木子 大虾
我想不用组数来判断
有其它方法吗? 回复 3# fuldho
不用数组那怎么?一行一行的读取吗?
这个方法也可以的!动态变量嘛! 本帖最后由 水木子 于 2011-11-10 19:40 编辑
我们来理解下这个方法吧!
就是说先读取动态变量的值,如果这个结果是空的,那么说明这个内容在前面没有出现过,那它在目前就是唯一的,得到了这个结果后,我们就给它赋值,下次再读取它的时候就不会是空的,反之跳过,相当于做个记号。
这样一来我们所得到的所有结果都将是唯一的。 对!就是一行一行读取,就是跳过空行、重复行。 这样还是有空行出现
本帖最后由 水木子 于 2011-11-10 19:52 编辑
既然不用数组,那也没必要用INI吧!
空行很简单,检查下读取到的内容是否是空的就行了。 回复 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 本帖最后由 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 谢谢各位大虾了!问题解决了!
页:
[1]