Мой корректно работает при достаточно большом количестве ключей:
#Persistent
SetTimer, Timer
MyArray := new DeleteKey(5000) ; удалять через 5 секунд
Loop 1000 {
Sleep, 10
MyArray.Push(A_Index)
}
class DeleteKey
{
__New(time) {
this._time := time
}
__Set(key) {
if (key != "_time") {
Timer := Func("Delete").Bind(this, key)
SetTimer, % Timer, % "-" this._time
}
}
Push(value) {
var := this.MaxIndex()
this[(var = "" ? 0 : var) + 1] := value
}
}
Delete(obj, key) {
obj.Delete(key)
}
Timer:
CoordMode, ToolTip
text := ""
for k, v in MyArray
if (k != "_time")
text .= "MyArray." k " = " v "`n"
ToolTip % text, A_ScreenWidth//2, A_ScreenHeight//2, 1
Return
А вот твой выдаёт вышеуказанную ошибку, почему — не знаю, не разбирался:
#Persistent
Time := 5000 ; 5 минут
oArr := []
SetTimer, Remove, -%Time%
oArr[A_TickCount] := 0
Sleep, 2000
oArr[A_TickCount] := 1
Loop 1000 {
Sleep, 10
oArr[A_TickCount] := A_Index
}
Return
Remove:
If (A_TickCount - oArr.MinIndex() >= Time)
oArr.RemoveAt(oArr.MinIndex())
SetTimer, Remove, % "-" (!oArr.MinIndex() ? Time : Time - (A_TickCount - oArr.MinIndex()))
ToolTip % oArr[oArr.MinIndex()]
Return
Разработка AHK-скриптов:
e-mail
dfiveg@mail.ruTelegram
jollycoder