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
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <Date.au3>
#include <Array.au3>
Global Const $version = "0.1 Beta"
Global $error
Global Const $IP = @IPAddress1
Global Const $MaxConnections = 1
GUICreate("Error Console", 628, 429, 710, 427)
$List = GUICtrlCreateListView("", 8, 8, 609, 409)
$IconList = _GUIImageList_Create()
_GUICtrlListView_SetImageList($List, $IconList, 1)
_GUICtrlListView_AddColumn($List, "", 20)
_GUICtrlListView_AddColumn($List, "Ereignis", 450)
_GUICtrlListView_AddColumn($List, "Zeit", 130)
GUISetState(@SW_SHOW)
AddEvent(2, "Study Control DB Server v." & $version & " by Sprenger120")
AddEvent(2, "Running on IP:" & $IP)
$error = TCPStartup()
AddEvent($error, "TCP Engine Init")
$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")
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
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
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)
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
Func _TcpSend($SoketArray, $sData)
For $x = 0 To UBound($SoketArray, 0) - 1
TCPSend($SoketArray[$x][0], $sData)
Next
EndFunc ;==>_TcpSend
Func SocketToIP($SHOCKET)
Local $sockaddr, $aRet
$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
$sockaddr = 0
[/autoit] [autoit][/autoit] [autoit]Return $aRet
EndFunc ;==>SocketToIP
;----------------------------------------------------------------------------------------------------------------------
; 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
woran liegts ?
naja schon mal Danke im vorraus hoffe natürlich auf ne schnelle lösung damit ich weitermachen kann