array, inhalt & minuten

  • moin,

    ich brauche eure hilfe beim thema arrays. hier erstmal eine beschreibung von dem was ich realisieren möchte:

    1. es soll geprüft werden, ob sich der aktive wintitle in dem array befindet.
    2. falls nicht wird dieser dem array hinzuzugefügt.
    3. jeder wintitle soll nach 10 minten wieder aus dem array gelöscht werden.

    es soll nach möglichkeit in zwei funktionen verpackt werden, nämlich pruefen & zufuegen


    für hilfe bin ich dankbar :)

    2 Mal editiert, zuletzt von anna.assaoui (21. September 2010 um 10:36) aus folgendem Grund: $Array[n][2] [n][0] = WinTitle [n][1] = Timestamp (wann hinzugefügt In schleife durchlaufen und mit Differenz aktuelle Zeit <-> gespeicherte Zeit bilden. Wenn größer Time-max dann Eintrag löschen.

  • ;(

    [autoit]


    #include <Array.au3>
    HotKeySet("{w}", "zufuegen")
    HotKeySet("{e}", "pruefen")
    dim $b[1000]

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    func zufuegen()
    $b[1000]=WinGetTitle("[active]")
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    func pruefen()
    Send ("^c")
    $a=clipget()
    if $a=$b[1000] Then
    MsgBox(1, "Ja", "ist drin", 3)
    EndIf
    if $a<>$b[1000] Then
    MsgBox(2, "Nein", "nicht drin!", 3)
    $b[1000]=ClipGet()
    EndIf

    EndFunc

    [/autoit]
  • Kein Windows parat um das zu testen.

    &quot;ungetesteter Ansatz&quot;
    [autoit]

    #include <array.au3>
    #include <Date.au3>
    #include "ArrayMore.au3"
    Global $aTitle[1][2]

    [/autoit] [autoit][/autoit] [autoit]

    AdlibRegister("_bla")

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _bla()
    $active = WinGetTitle("[active]")
    If $active <> "" Then
    $find = _ArraySearch($aTitle, $active, 0, 0, 1, 1, 0)
    If $find = -1 And @error = 6 Then
    _Array2DAdd($aTitle, $active & "|" & _NowCalc())
    ElseIf $find >= 0 Then
    If _DateDiff('n', $aTitle[$find][1], _NowCalc()) >= 10 Then
    _array2ddelete($aTitle, $find)
    EndIf
    EndIf
    EndIf
    EndFunc

    [/autoit]


    Die ArrayMore.au3 findest du über die Forensuche

  • vielen dank i2c!

    ich habe nochmal versucht das ganze in zwei funktionen zu bekommen, wobei die abfrag (ob schon vorhanden oder nicht) bei zufuegen nicht mehr nötig ist. ergibt das so sinn?

    [autoit]


    #include <Array.au3>
    #include <Date.au3>
    #include "ArrayMore.au3"
    HotKeySet("{w}", "_zufuegen")
    HotKeySet("{e}", "_pruefen")

    [/autoit][autoit][/autoit][autoit]

    Global $aTitle[1][2]
    $find=""
    AdlibRegister("_pruefen")
    AdlibRegister("_zufuegen")

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func _pruefen()
    Send ("^c")
    $a=clipget()

    If $a <> "" Then
    $find = _ArraySearch($aTitle, $a, 0, 0, 1, 1, 0)
    EndIf
    If $find=-1 Then
    MsgBox(1, "Ja", "ist drin", 3)
    EndIf

    If $find>=0 Then
    MsgBox(2, "Nein", "nicht drin!", 3)
    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func _zufuegen()
    $active = WinGetTitle("[active]")
    _Array2DAdd($aTitle, $active & "|" & _NowCalc())
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    while 1
    If _DateDiff('n', $aTitle[$find][1], _NowCalc()) >= 10 Then
    _array2ddelete($aTitle, $find)
    EndIf

    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit]
  • ah danke.

    ich habe noch adlibregister geändert und eine weitere func eingebaut.

    [autoit]


    #include <Array.au3>
    #include <Date.au3>
    #include "ArrayMore.au3"
    HotKeySet("{w}", "_zufuegen")
    HotKeySet("{e}", "_pruefen")

    [/autoit][autoit][/autoit][autoit]

    Global $aTitle[1][2]
    $find=""
    AdlibRegister("_timecheck")

    [/autoit][autoit][/autoit][autoit]

    Func _pruefen()
    Send ("^c")
    $a=clipget()

    if _ArraySearch($aTitle, $a, 0, 0, 1, 1, 0) >=0 then
    MsgBox(1, "Ja", "ist drin", 3)


    else
    MsgBox(2, "Nein", "nicht drin!", 3)
    EndIf

    [/autoit][autoit][/autoit][autoit]

    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _zufuegen()
    $active = WinGetTitle("[active]")
    _Array2DAdd($aTitle, $active & "|" & _NowCalc())
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _timecheck()
    If _DateDiff('n', $aTitle[$find][1], _NowCalc()) >= 10 Then
    _array2ddelete($aTitle, $find)
    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    while 1
    sleep(100)
    WEnd

    [/autoit]
  • Mir erschliesst sich nicht ganz, warum man das unbedingt in 3 Funktionen aufteilen muss.

    ich dachte dann ist's übersichtlicher, wenn ich einen wintitle habe von dem ich genau weiß, dass er noch nicht im array ist ?(

    kann mir nochmal jemand verraten wie ich texteile zu schneiden kann? ich brauche nämlich sowohl von clipget als auch von wingettitle nur die ersten 5 ziffern.

  • Hallo anna.assaoui,

    ich bringe dieses ansich harmlose Thema in Zusammenhang mit:
    [ offen ] zwei fragen zu fenstern
    dieses von dir Reaktiosnspiel, von mir Scherzprogramm bzw. BOT bezeichnete Skript hat mich veranlasst dieses Thema zu deaktivieren,

    @Admin/Mod bitte prüfen evtl. closen,oder OK geben

    mfg autoBert