找回密码
 加入
搜索
查看: 1754|回复: 5

[AU3基础] 如何让数组只记录最近的5次数据【已解决】

  [复制链接]
发表于 2011-11-1 22:53:45 | 显示全部楼层 |阅读模式
本帖最后由 xwt620 于 2011-11-1 23:48 编辑

RT,到记录第六次数据时,把第一次数据抛弃,并重新排序

描述的不太清楚话,请看下面结果
第1次$aArr[5] = {1,0,0,0,0}
第2次$aArr[5] = {1,2,0,0,0}
第3次$aArr[5] = {1,2,3,0,0}
第4次$aArr[5] = {1,2,3,4,0}
第5次$aArr[5] = {1,2,3,4,5}
第6次时$aArr[5] = {2,3,4,5,6}
第7次时$aArr[5] = {3,4,5,6,7}

有点类似记录最近打开的文件一样。
发表于 2011-11-1 23:07:56 | 显示全部楼层
要求有点不明:就是怎么知道现在更新在那个数组元素?你给的例子,用是否值为0来判断吗?

也就是怎么知道是第1次,第二次……
 楼主| 发表于 2011-11-1 23:14:07 | 显示全部楼层
回复 2# happytc


    其实我觉得用空值表示也是可以的,这个也不是用于记录最近文件,所以在开始定义数组时也不一定就直接赋值了
发表于 2011-11-1 23:25:43 | 显示全部楼层
回复  happytc


    其实我觉得用空值表示也是可以的,这个也不是用于记录最近文件,所以在开始定义数 ...
xwt620 发表于 2011-11-1 23:14


你在脚本里,用个计数器计录下前面5次更新到那里了就可以了。
前1-5次,你直接赋值:$aArr[$Counter - 1] = $Value

当第6次时,用下面的

#include <Array.au3>

Local $aArr[5] = [1,0,0,0,0]


_ChangeArray(8, $aArr)
_ArrayDisplay($aArr)

Func _ChangeArray($Value, ByRef $aArr)
        For $i = 0 To UBound($aArr) - 1
                If $i = UBound($aArr) - 1 Then
                        $aArr[$i] = $Value
                        Return
                Else
                        $aArr[$i] = $aArr[$i + 1]
                EndIf
        Next
EndFunc
 楼主| 发表于 2011-11-1 23:30:06 | 显示全部楼层
回复 4# happytc


    呵呵,谢谢。刚才脑袋瓜子有点蒙,半天转不过弯。休息一下后自己也想到一个思路
#include <Array.au3>

Global $aArr[6]

For $i = 1 To 10
        If $i <=5 Then
                $aArr[$i]=$i
                $aArr[0] = $aArr[0] + $aArr[$i]
        Else
                $aArr[0] = $aArr[0] - $aArr[1]
                _ArrayDelete($aArr, 1)
                _ArrayAdd($aArr,$i)
                $aArr[0] = $aArr[0] + $aArr[UBound($aArr)-1]
        EndIf
        
Next
_ArrayDisplay($aArr)
                
发表于 2011-11-2 13:09:17 | 显示全部楼层
_ArrayPush(ByRef $avArray, $vValue [, $iDirection = 0])
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-1 09:46 , Processed in 0.079547 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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