Skript schmiert ab

  • Hi Community

    also ich habe nen kleines Problem! Ich bekomme diese Meldung wenn ich mich verbunden habe und die Verbindung wieder lösen will.

    D:\Desktop\Study Control\StudyControlDBServer\DB_Server.au3 (149) : ==> Array variable subscript badly formatted.:
    Local $arTmp[UBound($ARRAY) - 1][$UBound2nd]
    Local $arTmp[^ ERROR

    Hier mein Skript :

    Spoiler anzeigen
    [autoit]


    #include <GuiListView.au3>
    #include <GuiImageList.au3>
    #include <Date.au3>
    #include <Array.au3>

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

    Global Const $version = "0.1 Beta"
    Global $error
    Global Const $IP = @IPAddress1
    Global Const $MaxConnections = 1

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

    GUICreate("Error Console", 628, 429, 710, 427)
    $List = GUICtrlCreateListView("", 8, 8, 609, 409)
    $IconList = _GUIImageList_Create()
    _GUICtrlListView_SetImageList($List, $IconList, 1)

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

    _GUICtrlListView_AddColumn($List, "", 20)
    _GUICtrlListView_AddColumn($List, "Ereignis", 450)
    _GUICtrlListView_AddColumn($List, "Zeit", 130)
    GUISetState(@SW_SHOW)

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

    AddEvent(2, "Study Control DB Server v." & $version & " by Sprenger120")
    AddEvent(2, "Running on IP:" & $IP)

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

    $error = TCPStartup()
    AddEvent($error, "TCP Engine Init")

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

    $Socket = TCPListen($IP, 7741, $MaxConnections)
    If @error Then AddEvent(0, "Creating Listen Soket " & $IP & ":7741 Error Code:" & @error)
    If $Socket <> -1 Then AddEvent(1, "Creating Listen Soket on " & $IP & ":7741")

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

    AddEvent(2, "Waiting for Connections")

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

    Dim $Connected[$MaxConnections][2]

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

    $ConnectedCounter = 0
    While 1
    $error = TCPAccept($Socket)
    If $error <> -1 Then
    $Connected[$ConnectedCounter][0] = $error
    $Connected[$ConnectedCounter][1] = SocketToIP($Connected[$ConnectedCounter][0])
    AddEvent(1, "Client Connected:" & $Connected[$ConnectedCounter][1])
    $ConnectedCounter += 1
    AddEvent(2, "Slots in Use " & $ConnectedCounter & "/" & $MaxConnections)
    EndIf
    If $ConnectedCounter = $MaxConnections Then ExitLoop
    WEnd

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

    AddEvent(2, "Debug:Starting Resive")

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

    While 1
    For $x = 0 To $ConnectedCounter - 1
    $rec = TCPRecv($Connected[$x][0], 300)
    If @error Then
    AddEvent(0, "Client Quit:" & $Connected[$x][1])
    _Array2DDelete($Connected, $x)
    EndIf
    If $rec <> "" Then ConsoleWrite($Connected[$x][1] & ":" & $rec & @CR)
    Next
    WEnd

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

    Func AddEvent($code, $sEventText); 2 Info , 1 Ok ,0 Error
    Local $PicIndex
    Switch $code
    Case 1
    $PicIndex = _GUIImageList_AddIcon($IconList, @ScriptDir & "\Ok.ico")
    _GUICtrlListView_AddItem($List, $sEventText, $PicIndex)
    _GUICtrlListView_AddSubItem($List, $PicIndex, $sEventText, 1)
    _GUICtrlListView_AddSubItem($List, $PicIndex, _Now(), 2)

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

    Case 2
    $PicIndex = _GUIImageList_AddIcon($IconList, @ScriptDir & "\Info.ico")
    _GUICtrlListView_AddItem($List, $sEventText, $PicIndex)
    _GUICtrlListView_AddSubItem($List, $PicIndex, $sEventText, 1)
    _GUICtrlListView_AddSubItem($List, $PicIndex, _Now(), 2)
    Case 0
    $PicIndex = _GUIImageList_AddIcon($IconList, @ScriptDir & "\Error.ico")
    _GUICtrlListView_AddItem($List, $sEventText, $PicIndex)
    _GUICtrlListView_AddSubItem($List, $PicIndex, $sEventText, 1)
    _GUICtrlListView_AddSubItem($List, $PicIndex, _Now(), 2)
    EndSwitch
    EndFunc ;==>AddEvent

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

    Func _TcpSend($SoketArray, $sData)
    For $x = 0 To UBound($SoketArray, 0) - 1
    TCPSend($SoketArray[$x][0], $sData)
    Next
    EndFunc ;==>_TcpSend

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

    Func SocketToIP($SHOCKET)
    Local $sockaddr, $aRet

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

    $sockaddr = DllStructCreate("short;ushort;uint;char[8]")

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

    $aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $SHOCKET, _
    "ptr", DllStructGetPtr($sockaddr), "int*", DllStructGetSize($sockaddr))
    If Not @error And $aRet[0] = 0 Then
    $aRet = DllCall("Ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($sockaddr, 3))
    If Not @error Then $aRet = $aRet[0]
    Else
    $aRet = 0
    EndIf

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

    $sockaddr = 0

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

    Return $aRet
    EndFunc ;==>SocketToIP

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

    ;----------------------------------------------------------------------------------------------------------------------
    ; Fuction _Array2DDelete(ByRef $ARRAY, $iDEL)
    ;
    ; Description Delete one row on a given index in an 1D/2D -Array
    ;
    ; Parameter $ARRAY the array, where one row will deleted
    ; $iDEL Row-Index to delete
    ;
    ; Return Succes -1 ByRef $ARRAY
    ; Failure 0 set @error = 1; given array are not array
    ; set @error = 2; index is out of range
    ;
    ; Author BugFix ([email='bugfix@autoit.de'][/email])
    ;----------------------------------------------------------------------------------------------------------------------
    Func _Array2DDelete(ByRef $ARRAY, $iDEL)
    If (Not IsArray($ARRAY)) Then
    SetError(1)
    Return 0
    EndIf
    If ($iDEL < 0) Or ($iDEL > UBound($ARRAY) - 1) Then
    SetError(2)
    Return 0
    EndIf
    Local $UBound2nd = UBound($ARRAY, 2)
    If @error = 2 Then
    Local $arTmp[UBound($ARRAY) - 1]
    $k = 0
    For $i = 0 To UBound($ARRAY) - 1
    If $i <> $iDEL Then
    $arTmp[$k] = $ARRAY[$i]
    $k += 1
    EndIf
    Next
    Else
    Local $arTmp[UBound($ARRAY) - 1][$UBound2nd]
    $k = 0
    For $i = 0 To UBound($ARRAY) - 1
    If $i <> $iDEL Then
    For $l = 0 To $UBound2nd - 1
    $arTmp[$k][$l] = $ARRAY[$i][$l]
    Next
    $k += 1
    EndIf
    Next
    EndIf
    $ARRAY = $arTmp
    Return -1
    EndFunc ;==>_Array2DDelete

    [/autoit]

    woran liegts ?


    naja schon mal Danke im vorraus hoffe natürlich auf ne schnelle lösung damit ich weitermachen kann