Jump to content
rm4453

_ArrayFindAll Not returning Only valid result

Recommended Posts

rm4453
Posted (edited)

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:

TableSample.PNG

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:

image.png.e5de862ecef512c1bdc241dfd794b294.png

 

Edited by rm4453
Forgot To Include Result Used For Filter

Share this post


Link to post
Share on other sites
AutoBert

Please attach resulting array from

$cars = _IETableWriteToArray_ProgressBar($oObj, True, "Processing Requested Information!") ;

as a txt file and specify which value is var:

$engine = GUICtrlRead($engine)

so i and maybe someother's too can have a short look for a quick solution. But as i see are you deleting from begin to end in the  array. This is no good idea, try to do this from end to begin and it should be the solution.

Share this post


Link to post
Share on other sites
rm4453
Posted (edited)

@AutoBert Sorry forgot to include the data, try cache refreshing (CTRL+SHIFT+R), as it should load the if not most data requested. (The table as you see it is the resulting array, aka the HTML attached is the table before it is ran through that)

Edited by rm4453

Share this post


Link to post
Share on other sites
BrewManNH
18 minutes ago, rm4453 said:

$engine = GUICtrlRead($engine)

This line is rewriting the contents of your $engine variable. Previously, by my guess, the variable held the Control ID of the input box, now it contains the contents of that box, and you have no way to get the contents of it again because you cleared the reference to it.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites
rm4453
1 minute ago, BrewManNH said:

This line is rewriting the contents of your $engine variable. Previously, by my guess, the variable held the Control ID of the input box, now it contains the contents of that box, and you have no way to get the contents of it again because you cleared the reference to it.

I don't believe so... I am able to get as far as:

_ArrayConcatenate($carsEngine, $carsModel)
        _ArrayDisplay($carsEngine, "Cars Engine") ;<---- This contains the Chevy.

        Dim $carsDriveTrain[1][16]
        Dim $carsDriveTrain2[1][16]
        $driveTrainVal = GUICtrlRead($driveTrain)
        If $driveTrainVal = "4x4" Or $driveTrainVal = "awd" Then

            $carsDriveTrain = _filter($carsEngine, 0, 9, "4") ;<---- Returns No Result.
            $carsDriveTrain2 = _filter($carsEngine, 0, 9, "a") ;<--- Returns No Result.
;~          _ArrayDisplay($carsDriveTrain, "Drive Train Before") ;<- Which means This Contains Nothing.
;~          If @error Then
;~              MsgBox("", "", "Cars Drive Train Error: " & @error)
;~          EndIf
;~          _ArrayDisplay($carsDriveTrain2, "Drive Train2 Before");< And This Contains Nothing as Well.
;~          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")

 

Share this post


Link to post
Share on other sites
BrewManNH
3 minutes ago, rm4453 said:

I don't believe so

Your belief and reality are two different things. You are indeed rewriting the value that the variable $engine contains.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites
rm4453
Posted (edited)
10 minutes ago, BrewManNH said:

Your belief and reality are two different things. You are indeed rewriting the value that the variable $engine contains.

If you believe this is the case will you please point out or highlight which portion of the script after where I commented this contains the chevy, relies on $engine? If you are correct this would be an extremely easy fix, and I would love to have it boil down to something this simple.

 

*In case this helps I can confirm for you other than the GUI initialization this is the only time it is used up to that point:

$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);<--- Here

        If $engine <> "" Then

 

Edited by rm4453

Share this post


Link to post
Share on other sites
Melba23

rm4453,

BrewManNH is absolutely correct. The first time through the loop you trash the $engine ControlID - which means every subsequent pass will not get the correct data into the variable as it will not read the value entered in the control. As a general principle the variables for the ControlID and the data within the control should always have distinct names.

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites
rm4453
Just now, Melba23 said:

rm4453,

BrewManNH is absolutely correct. The first time through the loop you trash the $engine ControlID - which means every subsequent pass will not get the correct data into the variable as it will not read the value entered in the control. As a general principle the variables for the ControlID and the data within the control should always have distinct names.

M23

I see the issue he commented about, I fixed that issue, and am still receiving the same result. I do appreciate him pointing that out.

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

    • Skeletor
      By Skeletor
      Hi Virtual People,
      My array works perfectly fine. However, what is the best practice if the line in the array doesn't have the correct amount of columns and if I can add a placeholder?

       
      For $count = 1 To _FileCountLines($FileRead1) Step 1 $string = FileReadLine($FileRead1, $count) $input = StringSplit($string, ",", 1) $value1 = $input[1] $value2 = $input[2] $value3 = $input[3] _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $value2, "A1") _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $value1, "B1") _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $value3, "C1") Next  
    • MrCheese
      By MrCheese
      hi all,
      reviewing the forum, this thread is applicable: 
       
       
      I wanted to know if there is now a better way to do this?
      In essence, I load a tab delimited txt file into an array (works well). I used tab, as some fields in the original csv contains commas.
      However, I needed autoit to manipulate this array, and output it as a csv.
      IF my array contains items with a comma, without double quotes around the field, then how best do I get a csv out of this?
      My current workaround is to filewritefromarray tab delimited, then open it in excel and save as a csv. I will need to check this to see how the address fields behave that contain a comma.
       
      Any thoughts would be appreciated.
       
    • Skeletor
      By Skeletor
      Hi All,

      I would like to know how you would take a FileLineRead and insert it into an array which then inserts it into Excel?
      One thing to know is the files content is broken up, so I only use half of the content within $FileRead1.
      So its imperative that the $value1, $value2, etc variables be used. 
      Code below:
      $FileRead1 = FileReadLine("C:\temp\sample.txt",1) For $count = 1 To _FileCountLines($FileRead1) Step 1 $string = FileReadLine($FileRead1, $count) $input = StringSplit($string, ",", 1) $value1 = $input[1] $value2 = $input[2] $value3 = $input[3] $value4 = $input[4] _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $value1, "A1") _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $value2, "B1") _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $value3, "C1") _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $value4, "D1") Next  
    • AnonymousX
      By AnonymousX
      Hello,
      I'm trying to write a script that moves copies excel cells into an array. I'll than manipulate the values and send array into another program. 
      I don't want range to be specific to a workbook, or sheet, or set of cells.
      I want user to be able to highlight desired cells and to copy either normally ("Ctrl+C") or by a hotkey ("Alt+C"). 
      Could someone help me with this?
      Thank you,
      I've tried to write the framework: (edited)
      #include <MsgBoxConstants.au3> #include <Array.au3> #include <Excel.au3> HotKeySet("!v", "Pastedata") While True Sleep(1000) WEnd func Makearray() local $bArray ;User has cells already copied ;Convert clipboard into an array ;I don;t know how excel stores data to clipboard so don;t know how to bring it into array _Arraydisplay($bArray) MsgBox(0,0,$bArray) return $bArray endfunc func Pastedata() Local $aArray MsgBox(0,0,"wait",1) ;make array based on assumption user has already copied a range to clipboard $aArray = Makearray() ;paste code ;don;t worry about this I got the rest endfunc  
    • 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).
×