[求助]如何比对一个INI中的所有键名那几个最小?
本帖最后由 ac5474012 于 2011-3-8 17:12 编辑如何比对一个INI中的所有键名那几个最小?我做了一个ini来记录时间,我想判断出在ini中那个时间最接近现在。时间计算打算用_DateDiff 来计算,我打算每次计算返回一个最接近现在的日期。ini文件中日期记录的数量大概有2000条。
另外还有一个问题想让会的人教教我
回复水木子
但是这个数组要如何写呢?$var[$sl]这样不行的
ac5474012 发表于 2011-3-8 15:02 http://www.autoitx.com/images/common/back.gif
暂时用了一把本办法写了一个,还有个问题。#include <Array.au3>
#include <Date.au3>
$var = IniReadSection("H:\新.ini", "完成")
$sl = $var
Dim $a
If @error Then
MsgBox(4096, "", "错误, 读取INI文件失败.")
Else
For $i = 1 To $var
$riqijisuan = StringSplit($var[$i], "-")
_arrayadd($a,$riqijisuan)
Next
EndIf
_ArrayDelete( $a,0)
MsgBox(0, '', '最接近的日期:' & _ArrayMax($a,1) & @CRLF & '最接远的日期:' & _ArrayMin($a,1))这里我每次必须删除0数组_ArrayDelete( $a,0)这是因为Dim $a,但是不这样声明又不行所以问问有什么办法解决? #include <Array.au3>
Global $avArray = ['2011:01:01 12:05', '2011:02:02 11:03', '2010:05:12 01:11', '2000:05:05 12:03', '2008:12:12 12:12']
MsgBox(0, '', '最接近的日期:' & _ArrayMax($avArray) & @CRLF & '最接远的日期:' & _ArrayMin($avArray)) 回复 2# 水木子
水木子 发表于 2011-3-6 10:19 http://www.autoitx.com/images/common/back.gif
请问如何将ini中2000多个非固定数量的数值全变成数组? _FileReadToArray()
IniReadSection() ini*函数的返回值本来就是数组啊! 回复 5# 水木子
ini*函数的返回值本来就是数组啊!
水木子 发表于 2011-3-6 11:30 http://www.autoitx.com/images/common/back.gif
对啊! 回复 4# happytc
_FileReadToArray()
IniReadSection()
happytc 发表于 2011-3-6 10:57 http://www.autoitx.com/images/common/back.gif
那我要找的是所有关键字中的数据比较,那我要先把所有的关键字放到一个文件里面吗? 回复 7# ac5474012
不是直接就读ini的东西到数组了呀,你在数组比较就可以呀 回复 5# 水木子
ini*函数的返回值本来就是数组啊!
水木子 发表于 2011-3-6 11:30 http://www.autoitx.com/images/common/back.gif
但是这个数组要如何写呢?$var[$sl]这样不行的 回复 9# ac5474012
你不会看帮助呀,写得那么清楚,还有清析的例子,看你也不是新人了,灌了400多帖了
$var = IniReadSection("C:\Temp\myfile.ini", "section2")
If @error Then
MsgBox(4096, "", "错误, 读取INI文件失败.")
Else
For $i = 1 To $var
MsgBox(4096, "", "关键字: " & $var[$i] & @CRLF & "值: " & $var[$i])
Next
EndIf
回复 10# happytc
$var = IniReadSection("C:\Temp\myfile.ini", "section2")
If @error Then
MsgBox(4096, "", "错误, 读取INI文件失败.")
Else
For $i = 1 To $var
MsgBox(4096, "", "关键字: " & $var[$i] & @CRLF & "值: " & $var[$i])
Next
EndIf
。。。那你说我要这个ini中的所有值做比较,在下面写_ArrayMax($a,1)这个$a应该写作为什么? 既然说来说去问题都没解决,楼主为何不将你那ini文件放上来看看。 回复 12# 水木子
既然说来说去问题都没解决,楼主为何不将你那ini文件放上来看看。
水木子 发表于 2011-3-8 17:21 http://www.autoitx.com/images/common/back.gif
[完成]
3213211=2009/09/12 00:00:00-2011/02/24 00:00:00
434228=1939/09/09 00:00:00-2011/02/24 00:00:00
5435343566=1999/09/09 04:00:00-2011/02/24 00:04:00
654645646=1949/09/09 00:00:00-2011/02/24 00:00:00
88940=1959/08/09 00:00:00-2011/02/24 00:00:00
76575=1999/07/09 01:00:00-2011/02/24 00:00:00
432432866=1999/09/01 06:00:00-2011/02/24 00:00:00
13213042=1997/09/09 05:04:00-2011/02/24 00:00:00
32132135=1299/09/09 05:02:00-2011/02/24 00:00:00
32318858=1999/09/09 00:00:00-2011/02/24 00:01:00
21312086=1999/09/09 00:00:00-2011/02/24 00:00:00
3213123357=1999/09/09 00:00:00-2011/02/24 00:00:00
21312318611=1399/09/09 00:00:00-2011/02/24 03:00:00 回复 13# ac5474012
同样的思路变通一下.
#include <Date.au3>
#include <Array.au3>
;Global $avArray = ['2011/01/01 12:05', '2011/02/02 11:03', '2010/05/12 01:11', '2000/05/05 12:03', '2008/12/12 12:12']
$var = IniReadSection("Temp.ini", "完成")
If @error Then
MsgBox(4096, "", "错误, 读取INI文件失败.")
Else
local $var_array
For $i = 1 To $var
$var_array[$i]=$var[$i]
$split=StringSplit($var[$i],"-",3)
$var_array[$i]=$split
$var_array[$i]=$split
Next
EndIf
_ArrayDisplay($var_array)
MsgBox(0, '比较第一列时间', '最接近的日期:' & _Time_Max($var_Array,1) & @CRLF & '最接远的日期:' & _Time_Min($var_Array,1))
MsgBox(0, '比较第二列时间', '最接近的日期:' & _Time_Max($var_Array,2) & @CRLF & '最接远的日期:' & _Time_Min($var_Array,2))
func _Time_Max($array,$subitem=1)
if Not IsArray($array) then
SetError(1)
Else
local $temp
for $i=0 to UBound($array)-1
$temp[$i] = $array[$i][$subitem]
$temp[$i] = _DateDiff( 's',$array[$i][$subitem],_NowCalc())
Next
_ArraySort($temp,0,0,0,1)
return $temp
EndIf
EndFunc
func _Time_Min($array,$subitem=1)
if Not IsArray($array) then
SetError(1)
Else
local $temp
for $i=0 to UBound($array)-1
$temp[$i] = $array[$i][$subitem]
$temp[$i] = _DateDiff( 's',$array[$i][$subitem],_NowCalc())
Next
_ArraySort($temp,1,0,0,1)
return $temp
EndIf
EndFunc #include<array.au3>
Local $aA = IniReadSection('1.ini','完成')
_arraydisplay($aA, ' ')
_ArraySort($aA, 0, 0, 0, 1)
_arraydisplay($aA, ' ')
页:
[1]