Denkfehler oder Logikproblem mit Array

  • Hab da einen Denkfehler oder so!? Bin für jeden Rat dankbar.

    Spoiler anzeigen
    [autoit]

    Global $New = 0

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

    Global $a[5] = [0, 0, 0, 0, 0]
    Global $b[5]

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

    For $i = 0 To UBound($a) -1
    If $a[$i] <> $b[$i] Then $New +=1 ;funktioniert nicht ?
    Next
    ConsoleWrite($New & @CR) ;hier kommt 0 raus ?

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

    ;Ich will aber 5 erhalten, also mache ich es so:
    For $i = 0 To UBound($a) -1
    If $a[$i] <> $b[$i] Or $b[$i] = "" Then $New +=1 ;funktioniert (dachte ich zumindest!)
    Next
    ConsoleWrite($New & @CR) ;hier kommt 5 raus

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

    ;aber wenn ich das Array kopiere, dann sollte doch 0 herauskommen
    $b = $a ;kopiere das Array
    $New = 0; setz die Variable wieder auf 0

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

    For $i = 0 To UBound($a) -1
    If $a[$i] <> $b[$i] Or $b[$i] = "" Then $New +=1 ;warum geht das nicht ?
    Next
    ConsoleWrite($New & @CR) ;!!!!! hier kommt 5 raus ?????

    [/autoit]

    Edit: Hab den Denkfehler gefunden. Als String funktioniert es.

    [autoit]

    If 0 = "" Then MsgBox(0,"0","")
    If Int(0) = "" Then MsgBox(0,"Int","")
    If String(0) = "" Then MsgBox(0,"String","")

    [/autoit]
  • Hi,
    als "Denkfehler" würde ich das nicht bezeichnen.
    Deklarierte Variablen werden, soweit kein Wert zugewiesen wird, als String behandelt.

    [autoit]

    Global $b[5]
    if isstring($b[1]) then consolewrite("string"& @CRLF)
    local $i
    if isstring($i) then consolewrite("string" & @CRLF)

    [/autoit]