array problem

  • hi, ich hab (mal wieder :D ) ein problem

    [autoit]

    #include <Array.au3>
    $aZeilen = 'current'
    $aZeilenlast = 'diff'
    $Name = 'TESTNAME1'
    Dim $array_spam[1][1]

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

    _ArrayDisplay($array_spam)
    If not ($aZeilen = $aZeilenlast) And _ArraySearch($array_spam,$Name) = -1 Then ;bedingungen prüfen
    _ArrayAdd($array_spam, $Name) ;name dem array hinzufügen
    $find = _ArraySearch($array_spam,$Name) ;zeile finden in welcher der name vorhanden ist
    $array_spam[$find][1] += 1
    EndIf
    _ArrayDisplay($array_spam)

    [/autoit]

    wenn ic hes starte erhalte ich jedesmal

    Zitat

    F:\Avp2-voting system\antispam.au3 (11) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
    $array_spam[$find][1] += 1
    ^ ERROR
    >Exit code: 1 Time: 1.687

    ich check das problem nicht, was is da falsch ?(

    Thx.

  • Öhm, nur mal so:
    was soll das 2. [1] bei Dim $array[1][1] bringen ?
    wenn du 2 Spalten haben willst muss da ne 2 hin ;)
    Ansonsten einfach weglassen, eine Spalte ist doch immer :P

    Also so müsste es gehn:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    $aZeilen = 'current'
    $aZeilenlast = 'diff'
    $Name = 'TESTNAME1'
    Dim $array_spam[1]

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

    _ArrayDisplay($array_spam)

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

    If not ($aZeilen = $aZeilenlast) And _ArraySearch($array_spam,$Name) = -1 Then ;bedingungen prüfen
    _ArrayAdd($array_spam, $Name) ;name dem array hinzufügen
    _ArrayDisplay( $array_spam )
    $find = _ArraySearch($array_spam,$Name) ;zeile finden in welcher der name vorhanden ist
    $array_spam[$find] += 1
    EndIf

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

    _ArrayDisplay($array_spam)

    [/autoit]

    Auch wenn ich nicht weiß, was das
    $array_spam[$find] += 1
    soll, das ersetzt den Namen durch ne 1 ;)
    Anhängen geht mit & =)

    Außerdem kannst du das ArraySearch eigentlich weglassen, guck mal in der
    Hilfe, was ArrayAdd zurückgibt ;)

    Spoiler anzeigen
    Zitat

    Return Value
    Success: Index of last added item
    Failure: -1, sets @error to 1

    limette

    There are only 10 types of people in the world:
    Those who understand binary - and those who don't.

  • oops
    es muss natürlich ne 2 da stehen

    Dim $array_spam[1][2]
    $array_spam[$find][2] += 1

    Zitat

    Auch wenn ich nicht weiß, was das
    $array_spam[$find] += 1
    soll, das ersetzt den Namen durch ne 1 ;)

    das soll zu der 2. spalte 1 raufzählen zum vorhandenen wert

  • Ok, aber

    Zitat


    Dim $array_spam[1][2]
    $array_spam[$find][2] += 1

    ist immernoch falsch. ^^
    Wie gesagt, Arrays fangen bei 0 an !
    Also:

    Dim $array_spam[1][2]
    $array_spam[$find][1] += 1 ; [$find][0] = Spalte Nr.1, [$find][1] = Spalte Nr. 2 ;)

    limette

    Edit: $find ? Wieso $find ? ;) ArrayAdd gibt das doch schon zurück =)

    There are only 10 types of people in the world:
    Those who understand binary - and those who don't.

    • Offizieller Beitrag

    Wozu soll denn der Zähler in Spalte 2 sein? Wenn nur für die Anzahl der Array-Elemente, dafür bräuchte man doch kein 2D-Array: UBound($array) würde das auch liefern.

    Aber abgesehen davon, zurück zu Deinem Problem: _ArrayAdd() unterstützt keine 2D-Arrays. Du könntest aber die Funktion _Array2DInsert() von BugFix benutzen, wenn es denn ein 2D-Array sein muss.