Jump to content

Recommended Posts

Quantumation
#include <AD.au3>
#include <Array.au3>

;~ GUI INCLUDES
#include <GuiEdit.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1_1 = GUICreate("Get Managers", 592, 516, -1, -1)
Global $Edit1 = GUICtrlCreateEdit("", 16, 112, 177, 361)
GUICtrlSetData(-1, "")
Global $Edit2 = GUICtrlCreateEdit("", 200, 112, 385, 177)
GUICtrlSetData(-1, "")
Global $Label1 = GUICtrlCreateLabel("GROUP NAMES", 16, 88, 135, 24)
GUICtrlSetFont(-1, 12, 800, 4, "MS Sans Serif")
Global $Label2 = GUICtrlCreateLabel("Group Name - Manager Names", 200, 88, 251, 24)
GUICtrlSetFont(-1, 12, 800, 4, "MS Sans Serif")
Global $Button1 = GUICtrlCreateButton("Get Managed By", 32, 52, 163, 31)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
Global $Button2 = GUICtrlCreateButton("Copy Automated", 456, 296, 99, 25)
Global $Button3 = GUICtrlCreateButton("CLEAR ALL", 440, 24, 83, 25)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
Global $Label3 = GUICtrlCreateLabel("Created by - Clint Smith", 185, 480, 212, 24)
GUICtrlSetFont(-1, 12, 800, 0, "Century")
Global $Label4 = GUICtrlCreateLabel("Enter group names with no leading spaces", 16, 8, 244, 17)
GUICtrlSetFont(-1, 8, 800, 4, "MS Sans Serif")
Global $Label5 = GUICtrlCreateLabel("Each Group name should be on its own line", 16, 32, 250, 17)
GUICtrlSetFont(-1, 8, 800, 4, "MS Sans Serif")
Global $Edit4 = GUICtrlCreateEdit("", 200, 328, 385, 145)
GUICtrlSetData(-1, "")
Global $Label8 = GUICtrlCreateLabel("Automated Groups", 200, 304, 156, 24)
GUICtrlSetFont(-1, 12, 800, 4, "MS Sans Serif")
Global $Button4 = GUICtrlCreateButton("Copy All Output", 464, 80, 99, 25)
Global $Label9 = GUICtrlCreateLabel("This will Clear all boxes", 328, 32, 112, 17)
Global $Label6 = GUICtrlCreateLabel("Input", 160, 88, 28, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            GetManBy()
        Case $Button3

    EndSwitch
WEnd

Func GetManBy()
    Local $dispname[0]
    Local $groupnames = StringSplit(GUICtrlRead($Edit1), @CR)
    _ArrayDisplay($groupnames)
    _AD_Open()
    If @error Then Exit MsgBox(16, "Active Directory", "Function _AD_Open encountered a problem. @error = " & @error & ", @extended = " & @extended)

    For $i = 1 To $groupnames[0]

        $GRPname = _AD_GetObjectProperties($groupnames[$i], "displayname")
        If $GRPname = @error Then Return MsgBox(16, "Group Not Found", $groupnames[$i] & " was not found")
        $info = _AD_GetObjectProperties($groupnames[$i], "info")
        Global $Managedby = _AD_GetObjectProperties($groupnames[$i], "managedBy,msExchCoManagedByLink")
            If $Managedby = @error Then
                MsgBox(1, "No Manager for group", $groupnames[$i] & " - Has no managers")
            EndIf
            _ArrayDisplay($Managedby)
            
         
        For $f = 1 To $Managedby[0][0]
            _ArrayDisplay($Managedby)
;~          Here is the problem below.
            $add = _AD_FQDNToDisplayname($Managedby[$f][1]) 
            _ArrayAdd($dispname, $add, 0)
        Next

        $Managers = _ArrayToString($dispname, ",")
        $str = StringInStr($info[1][1], "automated")
        If $str = 0 Then
        GUICtrlSetData($Edit2, $GRPname & " - " & $Managers & @CRLF)
        ElseIf $str > 0 Then
        GUICtrlSetData($Edit4, $GRPname & " - Automated Group" & @CRLF)
        EndIf
    Next
    _AD_Close()
EndFunc   ;==>GetManBy

I have two groups that i created with all the correct properties to make sure this script has data in all fields.

Basically i'm trying to run a for look inside a for loop and the loops aren't playing well together for some reason. Can anyone help?

Below is the error I get when i try to run this script.

"C:\Users\casmith\Documents\Autoit Scripts\GetManAndCoMan.au3" (72) : ==> Subscript used on non-accessible variable.:
For $f = 1 To $Managedby[0][0]
For $f = 1 To $Managedby^ ERROR
->04:00:21 AutoIt3.exe ended.rc:1
+>04:00:21 AutoIt3Wrapper Finished.
>Exit code: 1    Time: 10.42

Edited by Quantumation
added proper error

Share this post


Link to post
Share on other sites
AutoBert

Extend your script by inserting some debuglines:

ConsoleWrite('$Managedby[0][0]=' & $Managedby[0][0] & @CRLF)
        For $f = 1 To $Managedby[0][0]
            ConsoleWrite($f & ': ' & $Managedby[$f][1] & @CRLF)
            _ArrayDisplay($Managedby)
;~          Here is the problem below.
            $add = _AD_FQDNToDisplayname($Managedby[$f][1])
            ConsoleWrite($add&@TAB&@error&' '&@extended)
            _ArrayAdd($dispname, $add); the column is only in 2D necesarry: , 0)
        Next

The console output will help to find and solve the problem.

Share this post


Link to post
Share on other sites
Quantumation

@AutoBert Thank you, here is what i received but as i look through it i'm not quite sure why it's stopping there.

--> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop
$Managedby[0][0]=4
1: CN=Clint Smith,OU=Service Desk
Clint Smith          0 02: CN=Tony Alzola,OU=Service Desk
Tony Alzola         0 03: CN=Ryan McIntosh,OU=Service Desk
Ryan McIntosh    0 04: CN=Kody Courter,OU=Service Desk
Kody Courter       0 0"C:\Users\casmith\Documents\Autoit Scripts\GetManAndCoMan.au3" (72) : ==> Subscript used on non-accessible variable.:
ConsoleWrite('$Managedby[0][0]=' & $Managedby[0][0] & @CRLF)
ConsoleWrite('$Managedby[0][0]=' & $Managedby^ ERROR
->04:10:46 AutoIt3.exe ended.rc:1
+>04:10:46 AutoIt3Wrapper Finished.
>Exit code: 1    Time: 27.05

 

It seems to me that when the Second loop happens for the $i loop it doesn't have anything in the $Managedby[0][0] variable.

Is there something missing that's needed for nesting For loops?

Share this post


Link to post
Share on other sites
AutoBert

The 2. loop is currently starting in groups with no managers. So you have to change like this:

#include <AD.au3>
#include <Array.au3>

;~ GUI INCLUDES
#include <GuiEdit.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1_1 = GUICreate("Get Managers", 592, 516, -1, -1)
Global $Edit1 = GUICtrlCreateEdit("", 16, 112, 177, 361)
GUICtrlSetData(-1, "")
Global $Edit2 = GUICtrlCreateEdit("", 200, 112, 385, 177)
GUICtrlSetData(-1, "")
Global $Label1 = GUICtrlCreateLabel("GROUP NAMES", 16, 88, 135, 24)
GUICtrlSetFont(-1, 12, 800, 4, "MS Sans Serif")
Global $Label2 = GUICtrlCreateLabel("Group Name - Manager Names", 200, 88, 251, 24)
GUICtrlSetFont(-1, 12, 800, 4, "MS Sans Serif")
Global $Button1 = GUICtrlCreateButton("Get Managed By", 32, 52, 163, 31)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
Global $Button2 = GUICtrlCreateButton("Copy Automated", 456, 296, 99, 25)
Global $Button3 = GUICtrlCreateButton("CLEAR ALL", 440, 24, 83, 25)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
Global $Label3 = GUICtrlCreateLabel("Created by - Clint Smith", 185, 480, 212, 24)
GUICtrlSetFont(-1, 12, 800, 0, "Century")
Global $Label4 = GUICtrlCreateLabel("Enter group names with no leading spaces", 16, 8, 244, 17)
GUICtrlSetFont(-1, 8, 800, 4, "MS Sans Serif")
Global $Label5 = GUICtrlCreateLabel("Each Group name should be on its own line", 16, 32, 250, 17)
GUICtrlSetFont(-1, 8, 800, 4, "MS Sans Serif")
Global $Edit4 = GUICtrlCreateEdit("", 200, 328, 385, 145)
GUICtrlSetData(-1, "")
Global $Label8 = GUICtrlCreateLabel("Automated Groups", 200, 304, 156, 24)
GUICtrlSetFont(-1, 12, 800, 4, "MS Sans Serif")
Global $Button4 = GUICtrlCreateButton("Copy All Output", 464, 80, 99, 25)
Global $Label9 = GUICtrlCreateLabel("This will Clear all boxes", 328, 32, 112, 17)
Global $Label6 = GUICtrlCreateLabel("Input", 160, 88, 28, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            GetManBy()
        Case $Button3

    EndSwitch
WEnd

Func GetManBy()
    Local $dispname[0]
    Local $groupnames = StringSplit(GUICtrlRead($Edit1), @CR)
    _ArrayDisplay($groupnames)
    _AD_Open()
    If @error Then Exit MsgBox(16, "Active Directory", "Function _AD_Open encountered a problem. @error = " & @error & ", @extended = " & @extended)

    For $i = 1 To $groupnames[0]

        $GRPname = _AD_GetObjectProperties($groupnames[$i], "displayname")
        If $GRPname = @error Then Return MsgBox(16, "Group Not Found", $groupnames[$i] & " was not found")
        $info = _AD_GetObjectProperties($groupnames[$i], "info")
        Global $Managedby = _AD_GetObjectProperties($groupnames[$i], "managedBy,msExchCoManagedByLink")
        If $Managedby = @error Then
            MsgBox(1, "No Manager for group", $groupnames[$i] & " - Has no managers")
            ;EndIf              ;deleted by autoBert
        Else ;inserted by autoBert
            _ArrayDisplay($Managedby)


            ConsoleWrite('$Managedby[0][0]=' & $Managedby[0][0] & @CRLF)
            For $f = 1 To $Managedby[0][0]
                ConsoleWrite($f & ': ' & $Managedby[$f][1] & @CRLF)
                _ArrayDisplay($Managedby)
;~          Here is the problem below.
                $add = _AD_FQDNToDisplayname($Managedby[$f][1])
                ConsoleWrite($add & @TAB & @error & ' ' & @extended)
                _ArrayAdd($dispname, $add); the column is only in 2D necesarry: , 0)
            Next
        EndIf ;inserted by autoBert may be must be moved befor 91) Next
        $Managers = _ArrayToString($dispname, ",")
        $str = StringInStr($info[1][1], "automated")
        If $str = 0 Then
            GUICtrlSetData($Edit2, $GRPname & " - " & $Managers & @CRLF)
        ElseIf $str > 0 Then
            GUICtrlSetData($Edit4, $GRPname & " - Automated Group" & @CRLF)
        EndIf
    Next
    _AD_Close()
EndFunc   ;==>GetManBy

 

Share this post


Link to post
Share on other sites
Quantumation

Thank you for your quick replies @AutoBert

Unfortunately that code still produces the same error.

--> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop
$Managedby[0][0]=4
1: CN=Clint Smith,OU=Service Desk
Clint Smith    0  02: CN=Tony Alzola,OU=Service Desk
Tony Alzola    0  03: CN=Ryan McIntosh,OU=Service Desk,
Ryan McIntosh    0  04: CN=Kody Courter,OU=Service Desk
Kody Courter    0  0"C:\Users\casmith\Documents\Autoit Scripts\GetManAndCoMan.au3" (73) : ==> Subscript used on non-accessible variable.:
ConsoleWrite('$Managedby[0][0]=' & $Managedby[0][0] & @CRLF)
ConsoleWrite('$Managedby[0][0]=' & $Managedby^ ERROR
->04:45:06 AutoIt3.exe ended.rc:1
+>04:45:06 AutoIt3Wrapper Finished.
>Exit code: 1    Time: 4.911

 

It's as though the 2nd loop just wants to keep going even after it's met its threshold. It hits 4 but then it does one more and I can't figure out why.

i've tested the second loop in a different script all by itself and it works just fine.

#include <AD.au3>
#include <Array.au3>
_AD_Open()
Global $Managedby = _AD_GetObjectProperties("TESTGROUP1", "managedBy,msExchCoManagedByLink")
    Global $dispname[0]
    For $f = 1 To $Managedby[0][0]
        $add = _AD_FQDNToDisplayname($Managedby[$f][1])
        _ArrayAdd($dispname, $add, 0)
        $strarray = _ArrayToString($dispname, ",")
    Next
    $strarray = _ArrayToString($dispname, ",")
_AD_Close()
;~This works like a charm

 

This one is really baffling.

 

Share this post


Link to post
Share on other sites
Quantumation
#include <AD.au3>
#include <Array.au3>

;~ GUI INCLUDES
#include <GuiEdit.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1_1 = GUICreate("Get Managers", 592, 516, -1, -1)
Global $Edit1 = GUICtrlCreateEdit("", 16, 112, 177, 361)
GUICtrlSetData(-1, "")
Global $Edit2 = GUICtrlCreateEdit("", 200, 112, 385, 177)
GUICtrlSetData(-1, "")
Global $Label1 = GUICtrlCreateLabel("GROUP NAMES", 16, 88, 135, 24)
GUICtrlSetFont(-1, 12, 800, 4, "MS Sans Serif")
Global $Label2 = GUICtrlCreateLabel("Group Name - Manager Names", 200, 88, 251, 24)
GUICtrlSetFont(-1, 12, 800, 4, "MS Sans Serif")
Global $Button1 = GUICtrlCreateButton("Get Managed By", 32, 52, 163, 31)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
Global $Button2 = GUICtrlCreateButton("Copy Automated", 456, 296, 99, 25)
Global $Button3 = GUICtrlCreateButton("CLEAR ALL", 440, 24, 83, 25)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
Global $Label3 = GUICtrlCreateLabel("Created by - Clint Smith", 185, 480, 212, 24)
GUICtrlSetFont(-1, 12, 800, 0, "Century")
Global $Label4 = GUICtrlCreateLabel("Enter group names with no leading spaces", 16, 8, 244, 17)
GUICtrlSetFont(-1, 8, 800, 4, "MS Sans Serif")
Global $Label5 = GUICtrlCreateLabel("Each Group name should be on its own line", 16, 32, 250, 17)
GUICtrlSetFont(-1, 8, 800, 4, "MS Sans Serif")
Global $Edit4 = GUICtrlCreateEdit("", 200, 328, 385, 145)
GUICtrlSetData(-1, "")
Global $Label8 = GUICtrlCreateLabel("Automated Groups", 200, 304, 156, 24)
GUICtrlSetFont(-1, 12, 800, 4, "MS Sans Serif")
Global $Button4 = GUICtrlCreateButton("Copy All Output", 464, 80, 99, 25)
Global $Label9 = GUICtrlCreateLabel("This will Clear all boxes", 328, 32, 112, 17)
Global $Label6 = GUICtrlCreateLabel("Input", 160, 88, 28, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            GetManBy()
        Case $Button3

    EndSwitch
WEnd

Func GetManBy()
    _AD_Open()
    Local $dispname[0]
    Local $groupnames = StringSplit(GUICtrlRead($Edit1), @CR)
;~  _ArrayDisplay($groupnames)

    If @error Then Exit MsgBox(16, "Active Directory", "Function _AD_Open encountered a problem. @error = " & @error & ", @extended = " & @extended)

    For $i = 1 To $groupnames[0]

        $GRPname = _AD_GetObjectProperties($groupnames[$i], "displayname")
        If $GRPname = @error Then Return MsgBox(16, "Group Not Found", $groupnames[$i] & " was not found")
        $info = _AD_GetObjectProperties($groupnames[$i], "info")
        Global $Managedby = _AD_GetObjectProperties($groupnames[$i], "managedBy,msExchCoManagedByLink")
        If $Managedby = @error Then
            MsgBox(1, "No Manager for group", $groupnames[$i] & " - Has no managers")
;~      EndIf
        Else
;~      _ArrayDisplay($Managedby)
            ConsoleWrite('$Managedby[0][0]=' & $Managedby[0][0] & @CRLF)
            For $f = 1 To $Managedby[0][0]
                ConsoleWrite($f & ': ' & $Managedby[$f][1] & @CRLF)
                _ArrayDisplay($Managedby)
;~          Here is the problem below.
                $add = _AD_FQDNToDisplayname($Managedby[$f][1])
                ConsoleWrite($add & @TAB & @error & '||' & @extended)
                _ArrayAdd($dispname, $add)
            Next
        EndIf
        $Managers = _ArrayToString($dispname, ",")
        $str = StringInStr($info[1][1], "automated")
        If $str = 0 Then
            GUICtrlSetData($Edit2, $GRPname & " - " & $Managers & @CRLF)
        ElseIf $str > 0 Then
            GUICtrlSetData($Edit4, $GRPname & " - Automated Group" & @CRLF)
        EndIf
    Next
    _AD_Close()
EndFunc   ;==>GetManBy

Just for reference here is the code i used with the last error I posted.

Share this post


Link to post
Share on other sites
AutoBert

Sorry, i was a little bit to quick. Changine line 68 to

If @error Then

should solve the problem. I have no AD so i can not test it myself.

Share this post


Link to post
Share on other sites
Quantumation

That got me past that error. But I'm so curious...........How?

Why would that make such a difference?

Share this post


Link to post
Share on other sites
Jfish

I don't know this specific function for AD but it is probably because if there is no manager only the first value of the array 0 is created to show 0 results.  Then your loop tries to access 1 as in "for 1 to ..." and there is no element in the array at that position so it throws the error.  If wondering why the specific change made a difference then I think it is because the array did not have a value of @error.  Instead, I think the @error flag was set.  

Edited by Jfish

Build your own poker game with AutoIt: pokerlogic.au3 | Learn To Program Using FREE Tools with AutoIt

Share this post


Link to post
Share on other sites
AutoBert

I have no Ad so i don't know the returned value of _AD_GetObjectProperties. But fact is $Managedby is no Array in case no managers found. And usualy when a function don't give the ecpected result @error and @extended are used to show show the error occured. 

The other way for you to solve is to test if returned variable type is the excpeted:

If Not IsArray($Managedby) Then
            MsgBox(1, "No Manager for group", $groupnames[$i] & " - Has no managers")
;~      EndIf
        Else
;~      _ArrayDisplay($Managedby)
            ConsoleWrite('$Managedby[0][0]=' & $Managedby[0][0] & @CRLF)
;.....

Your try for errorchecking:

If $Managedby = @error Then

only works if _AD_GetObjectProperties sets in case of an error return value of >=1 instead of a array.

As i saw you are using same (not working) method for errorchecking in line 65:

If $GRPname = @error Then Return MsgBox(16, "Group Not Found", $groupnames[$i] & " was not found")

you have to change it here also, may be in future a group with no displayname throw a error without (correct) handled.

In line 66 you use _AD_GetObjectProperties without any errorhandling, this may cause also future problems.

Edited by AutoBert

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

  • Similar Content

    • Dzenan03
      By Dzenan03
      I want to make a while loop, that creates variables based on a array. For thist I created the array $iDsO with the number and the name of folders in an other folder. Every folder has a different name an I want to create variables(arrays) for each folder that show me all the files in that folder. For example: I have the Folder \Folder1. In it there are the Folders \1, \2, \3. In 1, 2 and 3 there are some files(.png). The array for Folder1 is $iDsO and now I want to crate the arrays $iDsO1, $iDsO2 and $iDsO3 with the files in them can I make something like this:
      While $iDs > 0 ;$iDs is the number of files in Folder1>> $iDsO[0] $iDs#here should come the Foldername for example '1'# = _FileListtoArray(@ProgramFilesDir&"\Folder1\"&$iDsO[$iDs]) $iDs = $iDs - 1 Wend So that in the End I have three variabels ($iDs1, $iDs2 and $iDs3)
       
      Is this posible or if not what could I do instead ( I don´t know the number of folders in Folder1 in the begining).
    • liagason
      By liagason
      Hello everyone,
      How can I display in ascending  sequence some numbers stored in a string variable?
      $str = "18,03,48,23" MsgBox(0,"test",$str) I would like it to display "03,18,23,48"
    • rm4453
      By rm4453
      I have a table I am parsing, to find specific vehicle information. I am unable to get _ArrayFindAll to return the only valid result with my test data.
      Below is a sample of the table's HTML:
      <td class="textCenter">2010</td> <td>TOYOTA</td> <td>TACOMA 4X4 DB</td> <td></td> <td>BLACK</td> <td class="textCenter">C</td> <td class="textCenter">6</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter">4X4</td> <td class="textCenter">Y</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">80,975</td> <td class="textRight" nowrap="nowrap">$16,800</td> </tr> <tr><!-- 308 --> <td class="textCenter">2010</td> <td>TOYOTA</td> <td>TACOMA 4X4 RG</td> <td></td> <td>BLACK</td> <td class="textCenter">R</td> <td class="textCenter">4</td> <td>GAS</td> <td class="textCenter">5</td> <td class="textCenter">4X4</td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">95,224</td> <td class="textRight" nowrap="nowrap">$9,500</td> </tr> <tr><!-- 309 --> <td class="textCenter">2011</td> <td>BUICK</td> <td>REGAL</td> <td>CXL RL4</td> <td>BLACK</td> <td class="textCenter">4</td> <td class="textCenter">4</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter"></td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">SR</td> <td class="textCenter">L</td> <td class="textRight" nowrap="nowrap">102,694</td> <td class="textRight" nowrap="nowrap">$5,000</td> </tr> <tr><!-- 310 --> <td class="textCenter">2011</td> <td>CHEVROLET</td> <td>AVALANCH 4X4 CR</td> <td>LS</td> <td>GRAY</td> <td class="textCenter">C</td> <td class="textCenter">8</td> <td>E</td> <td class="textCenter">A</td> <td class="textCenter">4X4</td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">64,759</td> <td class="textRight" nowrap="nowrap">$16,300</td> </tr> <tr><!-- 311 --> <td class="textCenter">2011</td> <td>CHEVROLET</td> <td>EQUINOX AWD 4C</td> <td>LT W/2LT</td> <td>BLACK</td> <td class="textCenter">S</td> <td class="textCenter">4</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter">AWD</td> <td class="textCenter">Y</td> <td>CD</td> <td class="textCenter">SR</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">91,896</td> <td class="textRight" nowrap="nowrap">$4,400</td> </tr> <tr><!-- 312 --> <td class="textCenter">2011</td> <td>CHEVROLET</td> <td>TAHOE 4X4 V8</td> <td>LTZ</td> <td>WHITE</td> <td class="textCenter">S</td> <td class="textCenter">8</td> <td>C</td> <td class="textCenter">A</td> <td class="textCenter">4X4</td> <td class="textCenter">A</td> <td>N</td> <td class="textCenter">MR</td> <td class="textCenter">L</td> <td class="textRight" nowrap="nowrap">126,982</td> <td class="textRight" nowrap="nowrap">$17,800</td> </tr> <tr><!-- 313 --> <td class="textCenter">2011</td> <td>CHEVROLET</td> <td>1500 SLV 4X4 EX</td> <td>LT</td> <td>GRAY</td> <td class="textCenter">X</td> <td class="textCenter">8</td> <td>GAS</td> <td class="textCenter">O</td> <td class="textCenter">4X4</td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">60,303</td> <td class="textRight" nowrap="nowrap">$18,100</td> </tr> <tr><!-- 314 --> <td class="textCenter">2011</td> <td>CHEVROLET</td> <td>1500 SLV 4X4 EX</td> <td>LT</td> <td>SILVER</td> <td class="textCenter">X</td> <td class="textCenter">8</td> <td>E</td> <td class="textCenter">O</td> <td class="textCenter">4X4</td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">89,403</td> <td class="textRight" nowrap="nowrap">$15,900</td> </tr> <tr><!-- 315 --> <td class="textCenter">2011</td> <td>CHEVROLET</td> <td>1500 SLV 4X4 EX</td> <td>LTZ</td> <td>BLUE</td> <td class="textCenter">X</td> <td class="textCenter">8</td> <td>E</td> <td class="textCenter">A</td> <td class="textCenter">4X4</td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">L</td> <td class="textRight" nowrap="nowrap">53,087</td> <td class="textRight" nowrap="nowrap">$17,700</td> </tr> <tr><!-- 316 --> <td class="textCenter">2011</td> <td>CHEVROLET</td> <td>3500 CUTAWAY</td> <td>WORK VAN</td> <td>WHITE</td> <td class="textCenter">S</td> <td class="textCenter"></td> <td></td> <td class="textCenter">A</td> <td class="textCenter">4X2</td> <td class="textCenter"></td> <td>N</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">202,477</td> <td class="textRight" nowrap="nowrap">$2,700</td> </tr> <tr><!-- 317 --> <td class="textCenter">2011</td> <td>CHRYSLER</td> <td>TOWN &amp; COUNTRY</td> <td>TOURING</td> <td>BLACK</td> <td class="textCenter">4</td> <td class="textCenter">6</td> <td>E</td> <td class="textCenter">A</td> <td class="textCenter">4X2</td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter"></td> <td class="textRight" nowrap="nowrap">198,541</td> <td class="textRight" nowrap="nowrap">$1,900</td> </tr> <tr><!-- 318 --> <td class="textCenter">2011</td> <td>DODGE</td> <td>DURANGO AWD V6</td> <td>CREW</td> <td>BLUE</td> <td class="textCenter">S</td> <td class="textCenter">6</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter">AWD</td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">SR</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">176,036</td> <td class="textRight" nowrap="nowrap">$2,800</td> </tr> <tr><!-- 319 --> <td class="textCenter">2011</td> <td>FORD</td> <td>FOCUS</td> <td>SE</td> <td>SILVER</td> <td class="textCenter">4</td> <td class="textCenter">4</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter"></td> <td class="textCenter">Y</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">101,929</td> <td class="textRight" nowrap="nowrap">$3,100</td> </tr> <tr><!-- 320 --> <td class="textCenter">2011</td> <td>FORD</td> <td>FUSION FWD 4C</td> <td>SEL</td> <td>WHITE</td> <td class="textCenter">4</td> <td class="textCenter">4</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter"></td> <td class="textCenter">Y</td> <td>CD</td> <td class="textCenter">SR</td> <td class="textCenter">L</td> <td class="textRight" nowrap="nowrap">78,290</td> <td class="textRight" nowrap="nowrap">$5,500</td> </tr> <tr><!-- 321 --> <td class="textCenter">2011</td> <td>FORD</td> <td>F150 4X4 CR</td> <td>XLT</td> <td>BLACK</td> <td class="textCenter">C</td> <td class="textCenter">8</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter">4X4</td> <td class="textCenter">Y</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">70,909</td> <td class="textRight" nowrap="nowrap">$16,000</td> </tr> <tr><!-- 322 --> <td class="textCenter">2011</td> <td>FORD</td> <td>MUSTANG V6 CPE</td> <td>V6 PREMIUM</td> <td>BLACK</td> <td class="textCenter">2</td> <td class="textCenter">6</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter">4X2</td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">L</td> <td class="textRight" nowrap="nowrap">92,531</td> <td class="textRight" nowrap="nowrap">$2,700</td> </tr> <tr><!-- 323 --> <td class="textCenter">2011</td> <td>GMC</td> <td>ACADIA FWD</td> <td>SLE</td> <td>RED</td> <td class="textCenter">4</td> <td class="textCenter">6</td> <td>GAS</td> <td class="textCenter">A</td> <td class="textCenter"></td> <td class="textCenter">A</td> <td>CD</td> <td class="textCenter">HT</td> <td class="textCenter">C</td> <td class="textRight" nowrap="nowrap">79,199</td> <td class="textRight" nowrap="nowrap">$10,700</td> A picture of the table test data is attached here:

      Here is the _query function, and all other relevant code that I can share.
       
      Func _query($aSel, $aUrls) $oIE = _login() If $oIE = "Return" Then Return EndIf $j = 0 While $j < UBound($aSel) - 1 $i = 1 $aucID ;Unable To Share What This Is Other Than Var Name. _IENavigate($oIE, "Something" & $aucID[0] & "Something") _IELoadWait($oIE, 100, 2000) $oObj = _IETableGetCollection($oIE, 3) $cars = _IETableWriteToArray_ProgressBar($oObj, True, "Processing Requested Information!") ;<---- Modified Version See Post For It: https://www.autoitscript.com/forum/topic/195335-solved-how-to-add-a-progress-bar-to-_ietablewritetoarray/?tab=comments#comment-1400699 $carsYear = _filter($cars, 0, 0, GUICtrlRead($year)) $carsMake = _filter($carsYear, 0, 1, GUICtrlRead($make)) Global $carsModel = _filter($carsMake, 0, 2, GUICtrlRead($model)) $i = 0 $engine = GUICtrlRead($engine) If $engine <> "" Then While $i < StringLen($engine) $carsEngine = _filter($carsModel, 0, 6 + $i, StringLeft($engine, 1)) ;_ArrayDisplay($carsModel, "Cars Model Before Array Delete") $x = 1 While $x <= UBound($carsModel) _ArrayDelete($carsModel, $x) $x += 1 WEnd ;_ArrayDisplay($carsModel, "Cars Model After Array Delete") ;_ArrayConcatenate($carsModel, $carsEngine) ;_ArrayDisplay($carsModel, "Cars Model After Concatenate") $engine = StringTrimLeft($engine, 1) $i += 1 WEnd Else Dim $carsEngine[1][16] EndIf _ArrayConcatenate($carsEngine, $carsModel) _ArrayDisplay($carsEngine, "Cars Engine") Dim $carsDriveTrain[1][16] Dim $carsDriveTrain2[1][16] $driveTrainVal = GUICtrlRead($driveTrain) If $driveTrainVal = "4x4" Or $driveTrainVal = "awd" Then $carsDriveTrain = _filter($carsEngine, 0, 9, "4") $carsDriveTrain2 = _filter($carsEngine, 0, 9, "a") ;~ _ArrayDisplay($carsDriveTrain, "Drive Train Before") ;~ If @error Then ;~ MsgBox("", "", "Cars Drive Train Error: " & @error) ;~ EndIf ;~ _ArrayDisplay($carsDriveTrain2, "Drive Train2 Before") ;~ If @error Then ;~ MsgBox("", "", "Cars Drive Train 2 Error: " & @error) ;~ EndIf _ArrayConcatenate($carsDriveTrain, $carsDriveTrain2) _ArrayDisplay($carsDriveTrain, "Drive Train After Concat") ElseIf $driveTrainVal = "" Then _ArrayConcatenate($carsDriveTrain, $carsEngine) Else $carsDriveTrain = _filter($carsEngine, 0, 9, $driveTrain) EndIf Dim $carsOdom[1][16] $min = GUICtrlRead($odomMin) $max = GUICtrlRead($odomMax) For $i = 0 To UBound($carsDriveTrain) - 1 If $carsDriveTrain[$i][14] > $min And $carsDriveTrain[$i][14] < $max Then _ArrayAdd($carsOdom, $carsDriveTrain[$i]) MsgBox("", "", "ADDED!") EndIf Next _ArrayDisplay($carsOdom, "Cars Odom") $j += 1 WEnd _IEQuit($oIE) EndFunc ;==>_query Func _filter($tofilter, $xpos1, $ypos1, $str) ;~ If UBound($tofilter, 1) <= 1 Then ;~ $endx = 0 ;~ Else ;~ $endx = UBound($tofilter, 1) - 1 ;~ EndIf ;~ $cars = _ArrayFindAll($tofilter, $str, $tofilter[$xpos1][$ypos1], $tofilter[$endx][$ypos1], 0, 1, $ypos1, False) $cars = _ArrayFindAll($tofilter, $str, Default, Default, 0, 1, $ypos1) Dim $carsFiltered[1][16] = [["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p"]] ;_ArrayDisplay($carsFiltered) $i = 0 $uBound = UBound($cars) - 1 While $i < $uBound $filtered = _ArrayExtract($tofilter, $cars[$i], $cars[$i], 0, 15) ;_ArrayDisplay($filtered, "_filter Array of Filtered") _ArrayConcatenate($carsFiltered, $filtered) $i += 1 WEnd _ArrayDelete($carsFiltered, 0) Return $carsFiltered EndFunc ;==>_filter  
      If you know of a more efficient way of doing this please let me know would be more than happy to chew down my inefficiency while learning! (It's like my grandpa used to say, "The only criticism I can't use is that which is not given to me.")
       
      The Item an I am using to test the filter is:

       
    • rm4453
      By rm4453
      Hello,
       
      I am currently writing a program that parses a massive table from a website, and need a way to add a progress bar while parsing.
      I am currently using the function _IETableWriteToArray($oObj, True) to parse the array. I need the progress bar to update as the table is parsed, not just at the end of the parsing.
      Any help at all would be very much appreciated!
       
      *EDIT --> The array I am left with after parsing is $array[0-50000][16]
    • TrashBoat
      By TrashBoat
      So Im trying to make a simple 2d game and make some sort of collision detection so why not to make a 2 dimensional array but i have no clue how  to write it in multiple lines
      Global $map[5,5] = [0,0,0,0,0 _ [0,0,0,0,0 _ [0,0,0,0,0 _ [0,0,0,0,0 _ [0,0,0,0,0] something like this but it doesn't work
×