Jump to content
Sign in to follow this  

Compile Error

Recommended Posts

Heres the main code.

$g_IP = @IPAddress1
                Dim $MainSocket[7]
                If GuiCtrlRead($Checkbox1) = $GUI_CHECKED Then $MainSocket[0] = TCPListen($g_IP, 21, 100)
                If GuiCtrlRead($Checkbox2) = $GUI_CHECKED Then $MainSocket[1] = TCPListen($g_IP, 23, 100)
                If GuiCtrlRead($Checkbox3) = $GUI_CHECKED Then $MainSocket[2] = TCPListen($g_IP, 25, 100)
                If GuiCtrlRead($Checkbox4) = $GUI_CHECKED Then $MainSocket[3] = TCPListen($g_IP, 53, 100)
                If GuiCtrlRead($Checkbox5) = $GUI_CHECKED Then $MainSocket[4] = TCPListen($g_IP, 79, 100)
                If GuiCtrlRead($Checkbox6) = $GUI_CHECKED Then $MainSocket[5] = TCPListen($g_IP, 80, 100)
                If GuiCtrlRead($Checkbox7) = $GUI_CHECKED Then $MainSocket[6] = TCPListen($g_IP, 1080, 100)
                While 1
                    $msg = GuiGetMsg()
                    For $i = 1 to $MainSocket[0]
                        $ConnectedSocket = TCPAccept($MainSocket[$i])
                        If $ConnectedSocket >= 0 Then
                            Dim $szIP_Accepted = SocketToIP($ConnectedSocket)
                            ToolTip("" &@CRLF& "Client Connected - " & $szIP_Accepted &@CRLF& " ", 10, 10)
                    If $DiscButton = 1 or $msg = $Disc Then ExitLoop

And when I compile to test run I get this error:

>"D:\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "L:\Projects\Test.au3"  
L:\Projects\Test.au3 (313) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.: 
$ConnectedSocket = TCPAccept($MainSocket[$i]) 
$ConnectedSocket = TCPAccept(^ ERROR
>Exit code: 1   Time: 5.872

I guess im not entirely understanding whats wrong with "$ConnectedSocket = TCPAccept($MainSocket[$i])", someone please help?

Share this post

Link to post
Share on other sites

Well the array $MainSocket has 7 elements. when you do:

For $i = 1 to $MainSocket[0]

you exceed that number, since $MainSocket[0] doesn't have the number of elements of the array, but it contains a socket handle, which can be a number a lot greater than 7 :)

Hope it's clear...

Edited by Nahuel

Share this post

Link to post
Share on other sites

Thanks Gary :)

Dim $MainSocket[7] --> here you declare an array of 7 elements.

$MainSocket[0] = TCPListen($g_IP, 21, 100) --> here you assign the socket identifier to the 0 element of the array. This identifier (if i'm not wrong) is a number.

For $i=0 to $MainSocket[0] -->will loop increasing the value of $i from 0 to whatever the number of the identifier is, when you only need it to do it up to 6. Use Garys suggestion.

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Create New...