Plötzlich auftretender unerklärlicher Fehler... Hilfe!

  • Hey Ihr.
    Ich hab da mal ein kleines Problem.

    Dazu folgende Angaben:

    Die Quelltextzeilen:

    [autoit]


    Func _UeberpruefeLogin ( $NAME, $PASSWORT )
    $Charakterdaten = IniReadSection ( "Userdaten.ini", $NAME )
    Sleep ( 100 )
    MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '$Charakterdaten' & @lf & @lf & 'Return:' & @lf & @error) ;### Debug MSGBOX
    If @error Then
    $VerbundenerSocket = TCPConnect ( $Absender, $SPort )
    Sleep ( 100 )
    TCPSend($VerbundenerSocket, "LOGIN" & ">"& "ID nicht vorhanden" )
    Sleep ( 100 )
    GUICtrlSetData ( $Inhalt, $ServerName & " -> " & $Absender & " > " & "LOGIN ID nicht vorhanden" & @CRLF & GUICtrlRead ( $Inhalt ) )
    ; Exit
    Else
    Sleep ( 100 )
    $OriginalPasswort = $Charakterdaten[1][1] ;----> HIER SOLL DER FEHLER SEIN
    If $OriginalPasswort = $PASSWORT Then
    $VerbundenerSocket = TCPConnect ( $Absender, $SPort )
    Sleep ( 100 )
    TCPSend($VerbundenerSocket, "LOGIN" & ">"& "OK" )
    Sleep ( 100 )
    GUICtrlSetData ( $Inhalt, $ServerName & " -> " & $Absender & " > " & "LOGIN OK" & @CRLF & GUICtrlRead ( $Inhalt ) )
    Else
    $VerbundenerSocket = TCPConnect ( $Absender, $SPort )
    Sleep ( 100 )
    TCPSend($VerbundenerSocket, "LOGIN" & ">"& "PASSWORT falsch" )
    Sleep ( 100 )
    GUICtrlSetData ( $Inhalt, $ServerName & " -> " & $Absender & " > " & "LOGIN PASSWORT falsch" & @CRLF & GUICtrlRead ( $Inhalt ) )
    EndIf
    EndIf
    EndFunc

    [/autoit]

    @error aus der Debug MsgBox zeigt 0 als Ausgabe, daher wird auch die ELSE Auswahl getroffen.

    Output von SciTE:
    servertest.au3 (91) : ==> Subscript used with non-Array variable.:
    $OriginalPasswort = $Charakterdaten[1][1]
    $OriginalPasswort = $Charakterdaten^ ERROR
    ->19:57:13 AutoIT3.exe ended.rc:1
    +>19:57:14 AutoIt3Wrapper Finished
    >Exit code: 1 Time: 26.968

    Dieser Fehler tritt in meinem Script seit gestern abend auf, dabei hab ich an dem Ablauf des Codes selber garnichts geändert...
    Habe lediglich die Sleep Befehle eingefügt, weil der Check auf der Gegenseite nicht ankam und ich nicht sicher war, woran das ganze liegt
    und ich dabei erstmal vermutet hatte, dass es sich um ein zeitliches Problem handelte.

    Davor lief die Funktion, halt bis auf das Empfangen an der Gegenseite, fehlerfrei.
    Ich bin verzweifelt am suchen, ob ich vielleicht aus Versehen irgendwo ein Zeichen gelöscht habe oder so, aber ich kann einfach nichts finden...
    Vielleicht hat ja einer von Euch einen Tip dazu ;)

    LG Darius83

    Einmal editiert, zuletzt von darius83 (30. September 2009 um 20:49)

    • Offizieller Beitrag

    Füge mal nach Zeile 2 folgendes ein:

    [autoit]

    If Not IsArray($Charakterdaten) Then Return MsgBox(0,"Fehler","Kein Array vorhanden")

    [/autoit]

    Kommt dann eine Fehlermeldung wurde die Section nicht gelesen .

  • Hmm ja aber müsste das nicht eigentlich schon die Abfrage mit If @error bewirken?
    Dass kein Array existiert, wenn die Sektion nicht besteht ist eigentlich klar, aber dann wird
    doch normalerweise beim IniReadSection ein @error gesetzt...
    Und es hat ja vorher auch genau so geklappt...

    Aber trotzdem Danke ;) So bekomm ich das Script zumindest schonmal wieder zum laufen ;)

    PS.: Die Fehlermeldung kommt... Ich verstehe nur nicht ganz, wieso da kein @error gesetzt wird...

    • Offizieller Beitrag

    Deine Errorabfrage würde auch funktionieren, wenn du nicht den Sleep (100) in deinem Script hättest. @error bezieht sich immer auf den letzten ausgeführten Befehl. ;) Also Sleep.

    nuts war schneller. ;)

  • Ahhh Danke Ihr 2 ... Nun gehts wieder ;)
    Vielen Dank ;) Endlich funktionierts so, wie ich es wollte...

    Vielleicht bekomme ich meinen AutoItChat ja doch noch dieses Jahr fertig ;)

    Einmal editiert, zuletzt von darius83 (30. September 2009 um 21:08)