SorryButImaNewbie

[SOLVED] Another "Array variable has incorrect number of subscripts or subscript dimension range exceeded"

22 posts in this topic

#1 ·  Posted (edited)

Hello!

Sorry for the weekly simpleton question, but:

I tried to make a part of my code be able to handle arrays of any size (Before, I used a fixed array size of 4, which is far from ideal, I just wanted it to run)

I szccesfully read the array size, ReDim it and I thought that I can easly read the values I need, but the 5. version of my code is giving me the same error. I'm not sure, how should I use variabels as "array subscripts" (I mean: $Array[!This for example!][!Or this!])

I wrote the following abomination, Its job would be to read through an array of running/open excel instances and find the one with a .xls extension. Then read its filepath and name  so I can make a copy of it a bit down on the line (BTW Anyother insight if you think I'm doing something wrong or not idealy is welcome!) 

Local $aWorkBooks = _Excel_BookList()
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookList Example 2", "Error listing Workbooks." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
_ArrayDisplay($aWorkBooks, "Excel UDF: _Excel_BookList Example 2 - List of workbooks of all instances")

;CONSTRUCTION-----------------------------------
;$aWorkBooks array méretezés
If IsArray($aWorkBooks) Then
    ReDim $aWorkBooks[UBound($aWorkBooks)]
    ;MsgBox($MB_SYSTEMMODAL, "Értesítás", "Cucc:" & UBound($aWorkBooks) & "")
    Local $ArrayElement = UBound($aWorkBooks)
    Do
        Local $Int = Int(0)
        ;MsgBox($MB_SYSTEMMODAL, "Értesítés", "Cucc: " & $ArrayElement &" Int: " & $Int &"")
        Local $Array = $aWorkBooks[Int($Int)][1]
        Local $xls = StringRegExp(String($Array), ".xls")
        $Int = Int($Int + 1)
    Until $xls = 1
    $ExcelName = $aWorkBooks[$Int][1]
    $ExcelPath = $aWorkBooks[$Int][2]
Else
    MsgBox($MB_SYSTEMMODAL, "Excel Array Hiba", "Hiba a formázandó excel felismerése közben.")
    Exit
EndIf

Consol Error:

(242) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:

Local $Array = $aWorkBooks[Int($Int)][1]
Local $Array = ^ ERROR

I try to use an increasing variable to read the array until its find the .xls extension, the values of $Int is okey according to the message boxes

Thanks for the help, wise users of this forum!

Edit:

You find the solution to this problem in the thread below, also the problem developed into an other one, _Excel_SheetList UDF returned with a "funny array" with numbers (see the pic around comment 5-8) the solution was to disable excel addons: Analysis ToolPak and Solver, not sure which one did the trick at the end. Also in this thread you can find a "bug fix" for _Excel_SheetList , in the current version, _Excel_SheetList gave 0 return to every error, master water posted a fix to that (you have to change a 0 value to @error).

Best of luck!

Edited by SorryButImaNewbie
Because the problem blossomd in to a new one, I edit this so others with similar problems may benefit

Share this post


Link to post
Share on other sites

You ReDim a 2D array to a 1D array with this statement

ReDim $aWorkBooks[UBound($aWorkBooks)]

Drop this statement as I do not see any need for it in your script.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

#3 ·  Posted (edited)

Ohhh, sounds logical, since I only "read in" the array once, I only need to know its size... And yes, its not a 1D array as I display it and can clearly see...

Thank you master water, I also moved the $int = 0 out from the loop, so its value doesnt jump on 1 to 0 making an infinite loop :D (thats help to)

My code right now:

Local $aWorkBooks = _Excel_BookList()
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookList Example 2", "Error listing Workbooks." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
_ArrayDisplay($aWorkBooks, "Excel UDF: _Excel_BookList Example 2 - List of workbooks of all instances")

;CONSTRUCTION-----------------------------------
;$aWorkBooks array méretezés
If IsArray($aWorkBooks) Then
    ;ReDim $aWorkBooks[UBound($aWorkBooks)]
    ;MsgBox($MB_SYSTEMMODAL, "Értesítás", "Cucc:" & UBound($aWorkBooks) & "")
    Local $ArrayElement = UBound($aWorkBooks)
    Local $Int = Int(0)
    Do
        ;MsgBox($MB_SYSTEMMODAL, "Értesítés", "Cucc: " & $ArrayElement &" Int: " & $Int &"")
        Local $Array = $aWorkBooks[Int($Int)][1]
        Local $xls = StringRegExp(String($Array), ".xls")
        $Int = $Int + 1
        If $xls = 1 Then
            Global $ExcelName = $aWorkBooks[Int($Int)][1]
            Global $ExcelPath = $aWorkBooks[Int($Int)][2]
        EndIf
    Until $xls = 1
Else
    MsgBox($MB_SYSTEMMODAL, "Excel Array Hiba", "Hiba a formázandó excel felismerése közben.")
    Exit
EndIf
;_Excel_SheetCopyMove
;----------------------------------------------

$ExcelObject = _Excel_BookAttach($ExcelName, "filename")
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookAttach Example 2", "Error attaching to '" & $ExcelObject & "'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

$ExcelSheetListArray = _Excel_SheetList($ExcelObject)
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_SheetList Example 1", "Error listing Worksheets." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
;_ArrayDisplay($ExcelSheetListArray, "Excel UDF: _Excel_SheetList Example 1")
$ExcelSheetListArrayMaxIndex = _ArrayMaxIndex($ExcelSheetListArray)

Local $oCopiedSheet = _Excel_SheetCopyMove($ExcelObject,Default,Default,Number(($ExcelSheetListArrayMaxIndex+2)),True,True)
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_SheetCopyMove", "Error copying sheet." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

Local $aWorkBooks = _Excel_BookList()
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookList Example 2", "Error listing Workbooks." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

I'm getting a new error: (pic added)

I belive Its an error for _Excel_SheetCopyMove, according to help: 

5 - Error occurred when copying/moving the sheet. @extended is set to the COM error code. 

Com error: 0

I aslo added extra code to my snipet, because I realized, the error giving part isn't here, so its makes any rescu attempt a "bit tricky".

Képkivágás.JPG

Edited by SorryButImaNewbie
Missing code with the error...

Share this post


Link to post
Share on other sites

This might be a bug in the UDF. Which version of AutoIt do you run?


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

3.3.14.1 right now

Share this post


Link to post
Share on other sites

You need to change the marked line in function _Excel_SheetCopyMove in Excel.au3 to get the COM error code.

If $bCopy Then
        $vSourceSheet.Copy($vBefore, $vAfter)
    Else
        $vSourceSheet.Move($vBefore, $vAfter)
    EndIf
    If @error Then Return SetError(5, @error, 0) ; <== Modify

 


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

#7 ·  Posted (edited)

Ohhh, to what? (I thought the error = 0)

 

So I tried to overwrite excel.au3, but I can't, only with different name (SciTE error)

Edited by SorryButImaNewbie

Share this post


Link to post
Share on other sites

It's a bug so it does not report @error correctly.

Now it is:

If @error Then Return SetError(5, 0, 0)

but it needs to be:

If @error Then Return SetError(5, @error, 0)

 

1 person likes this

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

I understand that, but when I try to save it with 0 replaced by @error , I get an error (pic)

What i think I can do, is to rename it to excel2.au3 or something, and then simply #include that?

(Sorry I like to make sure before I do something I dont understand instead of try and make things worse :) )

Képkivágás2.JPG

Share this post


Link to post
Share on other sites

You do not have write permission to this directory where AutoIt is installed.
Either edit the file as administrator or copy the following code to your script

Func _Excel_SheetCopyMoveEX($oSourceBook, $vSourceSheet = Default, $oTargetBook = Default, $vTargetSheet = Default, $bBefore = Default, $bCopy = Default)
    ; Error handler, automatic cleanup at end of function
    Local $oError = ObjEvent("AutoIt.Error", "__Excel_COMErrFunc")
    #forceref $oError
    Local $vBefore = Default, $vAfter = Default
    If Not IsObj($oSourceBook) Or ObjName($oSourceBook, 1) <> "_Workbook" Then Return SetError(1, 0, 0)
    If $vSourceSheet = Default Then $vSourceSheet = $oSourceBook.ActiveSheet
    If $oTargetBook = Default Then $oTargetBook = $oSourceBook
    If Not IsObj($oTargetBook) Or ObjName($oTargetBook, 1) <> "_Workbook" Then Return SetError(2, 0, 0)
    If $vTargetSheet = Default Then $vTargetSheet = 1
    If $bBefore = Default Then $bBefore = True
    If $bCopy = Default Then $bCopy = True
    If Not IsObj($vSourceSheet) Then
        $vSourceSheet = $oSourceBook.Sheets($vSourceSheet)
        If @error Or Not IsObj($vSourceSheet) Then SetError(3, @error, 0)
    EndIf
    If Not IsObj($vTargetSheet) Then
        $vTargetSheet = $oTargetBook.Sheets($vTargetSheet)
        If @error Or Not IsObj($vTargetSheet) Then SetError(4, @error, 0)
    EndIf
    If $bBefore Then
        $vBefore = $vTargetSheet
    Else
        $vAfter = $vTargetSheet
    EndIf
    If $bCopy Then
        $vSourceSheet.Copy($vBefore, $vAfter)
    Else
        $vSourceSheet.Move($vBefore, $vAfter)
    EndIf
    If @error Then Return SetError(5, @error, 0)
    If $bBefore Then
        Return $oTargetBook.Sheets($vTargetSheet.Index - 1)
    Else
        Return $oTargetBook.Sheets($vTargetSheet.Index + 1)
    EndIf
EndFunc   ;==>_Excel_SheetCopyMoveEX

and replace all function calls to _Excel_SheetCopyMove to _Excel_SheetCopyMoveEX so the modified version gets called.

1 person likes this

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

#11 ·  Posted (edited)

Wow, thanky you so much!

Can I   "Replace owner on subcontainers and objects"  on the folder? Or thats not a good idea? (I try to run as administrator, but I can't, I even tried to make a sgortcut for excel.au3, so I can use the properties/shortcut/advanced to run as admin, but I dont seems to have admin rights for that (its greyed out) which is actually pretty disturbing now that I think about it

Edit:

I tried to run your code, I get an @error = 5, @extended = 1 error on sheet copying

Edit2:

I found @extended = 1 to be the error of Read-only excel object at book_attach, I'm not sure if thats the reason here as well

Edited by SorryButImaNewbie
I save my advantures here instead of posting extras

Share this post


Link to post
Share on other sites

Did you check that all parameters for _Excel_SheetCopyMove have sensible values?
Does $ExcelSheetListArrayMaxIndex hold a sensible value (means the number of a worksheet that exists)?  I'm not sure as you add 2 to the maximum number returned by _ArrayMaxIndex. If you have 5 worksheets in your workbook thn this value shouldn't be > 5.
Use ConsoleWrite/MsgBox to display this values to check.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

#13 ·  Posted (edited)

According to MsgBox checks, yes, it had a value 1, 1+2 = 3 I had 3 sheets.

I tried Default value, same outcome.

The suspicous part for me is the Excel_SheetList, I displayed that during checking and it returned this, again I have 3 Sheets, none of them can be found in this list.

 

Képkivágás3.JPG

Edit: Also the $ExcelSheetListArrayMaxIndex value is 1. Which doesn't really make sense to me

Edited by SorryButImaNewbie

Share this post


Link to post
Share on other sites

Strange.
Which version of Office do you run?


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

#15 ·  Posted (edited)

I'm not sure.

I have a 2016 "unoffical" version.

Now that I started digging, I found a Shortcut at C:\ProgramData\Microsoft\Windows\Start Menu\Programs, which seems to lead into itself (open containing folder), maybe because its the Start Menu folder

I'm not sure actually (I use it for maybe 2-3 years) according to office download I have an up to date version.

Will Edit for more info

Edit:

Well I may spend some time to install a real office... I'm still a student so I should be able to get a fre copy somehow, but downloading it from a "third party" was much quicker, when I only needed it for some school stuffs and basic use. It was much easier for my younger self...

Thy for the troubelshooting master water!

(verziószám = versionnumber)

Officeversionnumber.JPG

Edit2: I had a windows update, hoped it will solve the problem, it didn't this is my last update today, thanks for the help! (I love this forum)

Edited by SorryButImaNewbie

Share this post


Link to post
Share on other sites

I'm not sure it is caused by the Office version.
Does the _Excel_SheetList.au3 example script work for you? Means - IIRC - you should get 3 sheets listed.
Could it be possible that your workbook contains a lot of hidden sheets?
Are there custom made addons active? I once had problems with a badly written addon driving me crazy!


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

#17 ·  Posted (edited)

I checked for hidden sheets and looked for other VBA shenanigans, but nothing.

I don't know about custom meda addons, but i don't think so.

Excel sheet list gives an "interesting" error. @error = 2 for _Excel_BookOpen meaning 

Specified $sFilePath does not exist, I think this is because its ask for activation first. I added lines

MsgBox($MB_SYSTEMMODAL, " Stop ", "Hammer Time!") 

after the _Excel_BookOpen lines in the _Excel_BookList example, to close these (@error = 2 is avoided this way)

Returns empty array with display, picture of array and one excel (they look the same, empty without sheet, I can go to files and open recently used excels)

However! I can see these excels in System information/Softenvierment/RunningTasks I'm not sure that would usually mean that autoit should see it as well.

I try to open some excels (2 so its like the example) and try to list those, maybe It leads to something

Edit: Okey I tried the booklist example... not sheetlist, Trying with sheet list with the added HammerTime msg box to close the product activation It returns an @error = 1 , I don't know, I try to attach to an excel instance where there is something in the file, and list there... I don't understand I use _excel_SheetList in my code and worked there so far (if array dimensions and size were handeld correctly) it displayed the sheets like it should,

My other "idea" of the origin of the problem is that if I list the _Excel_BookList and display it I get back 3 extra thing. I'm not sure what are these (I wrote a script that goes trhought the array searching for -xls extension, so I can simply skip these) I know what the SOLVER is but I don't know it should be displayed by this function. (see: pic2, arraylist)

Could these XLAM files be the source of my problem to begin with? with some excel extension?

ExcelBookListTest.JPG

ArrayList.JPG

Edited by SorryButImaNewbie

Share this post


Link to post
Share on other sites

I have absolutely no idea what causes your problem :'(
You are sure that you attach to the correct workbook?

Or maybe the problem is caused by the missing activation?


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

I'm pretty sure (there are no other workbooks open, also before I started to upgrade my code to handel arrays, it attached to the workbook and formated the rows/columns inside just nice, so the script was interacting with it before).

Yes, the missing activation is a possible culprit.... You dont't think that these XLAM files are the problem?

Share this post


Link to post
Share on other sites

#20 ·  Posted (edited)

According to the web:
http://pcsupport.about.com/od/fileextensions/f/xlamfile.htm

"A file with the XLAM file extension is an Excel Macro-Enabled Add-In file that's used to add new functions to Excel."

So this add-ins might influence the way Excel COM (and hence the Excel UDF) works.
You could try to deactivate the add-ins and check if that makes any difference.

Edited by water

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

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

    • ronmage
      By ronmage
      So I have a loop that keeps reading data from an array and searching it for the same value. If the value is no there it does work then adds the value to the array to prevent it from doing the same work.
      If _ArraySearch($ID,$filearray[$i]) = -1 Then Work.... _ArrayAdd($ID,$filearray[$i]) EndIf This is in a for loop hence $i
      So what is happening is the code works great for several hours. After a period of time _ArraySearch($ID,$filearray[$i]) will result in -1 even if $ID = $filearray. So it ready as if there is no data in the array. Anyone have this problem? 
       
      Also I am just running in using F5 not compiling it and running it if that makes a difference.
       
    • Ascer
      By Ascer
      1. Description.
      Udf working with MSDN System.Collections.ArrayList. Allow you to make fast operations on huge arrays, speed is even x10 better than basic _ArrayAdd.  Not prefered for small arrays < 600 items. 2. Requirements
      .NET Framework 1.1+ System Windows 3. Possibilities.
      ;=============================================================================================================== ; UDF Name: List.au3 ; ; Date: 2018-02-17, 10:52 ; Description: Simple udf to create System Collections as ArrayList and make multiple actions on them. ; ; Function(s): _ListCreate -> Creates a new list ; _ListCapacity -> Gets a list size in bytes ; _ListCount -> Gets items count in list ; _ListIsFixedSize -> Get bool if list if fixed size ; _ListIsReadOnly -> Get bool if list is read only ; _ListIsSynchronized -> Get bool if list is synchronized ; _ListGetItem -> Get item on index ; _ListSetItem -> Set item on index ; ; _ListAdd -> Add item at end of list ; _ListClear -> Remove all list items ; _ListClone -> Duplicate list in new var ; _ListContains -> Get bool if item is in list ; _ListGetHashCode -> Get hash code for list ; _ListGetRange -> Get list with items between indexs ; _ListIndexOf -> Get index of item ; _ListInsert -> Insert a new item on index ; _ListInsertRange -> Insert list into list on index ; _ListLastIndexOf -> Get index last of item ; _ListRemove -> Remove first found item ; _ListRemoveAt -> Remove item in index ; _ListRemoveRange -> Remove items between indexs ; _ListReverse -> Reverse all items in list ; _ListSetRange -> Set new value for items in range ; _ListSort -> Sort items in list (speed of reading) ; _ListToString -> Get list object name ; _ListTrimToSize -> Remove unused space in list ; ; Author(s): Ascer ;=============================================================================================================== 4. Downloads
      List.au3 5. Examples
      SpeedTest _ArrayAdd vs ListAdd SpeedTest ArraySearch vs ListIndexOf Basic usage - crating guild with members  
    • FMS
      By FMS
      Hello,
      I'm trying to read a binary file to an array but couln't get it to work.
      Also I coul not find any help in the forum around this subject whish was helpfull.
      Is there any way it could be done?
      I tried a lot of ways but maybe somebody know's the right way?
      #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7 #include <File.au3> #include <Array.au3> #include <AutoItConstants.au3> Local $in=FileOpen("TEST_labels.idx1-ubyte",16) ; 16+0=Read binary Local $data = FileRead($in) Local $FileArray = BinaryToString($data,4) ;~ $FileArray = StringSplit($BinarydData, @CRLF, 1+2) ;~ Local $FileArray = StringRegExp($BinarydData, "[^\r\n]+", 3) FileClose($in) _ArrayDisplay($FileArray,"$FileArray","",32) MsgBox($MB_SYSTEMMODAL, "", "$FileArray = " & $FileArray )  
      TEST_labels.idx1-ubyte
    • ur
      By ur
      I am reading a CSV file which is tab seperated as below.
      Local $aArray = FileReadToArray($file) And now, I am splitting this main array record wise so that Array contains internally another arrow to represent each row.
      For $i = 0 to (UBound($aArray) - 1) ;MsgBox(0,"",$aArray[$i]) $aArray[$i] = StringSplit(StringStripCR($aArray[$i]), Chr(9),2);Chr(9) for tab ;_ArrayDisplay($aArray[$i]) Next Afther that, _ArrayDIsplay is able to see the individual internal arrays.
      _ArrayDisplay($aArray[1]) But If I try to access the individual element of it as below.It is not showing any result.
      MsgBox(0,"",$aArray[1][1]) Any suggestion, below is the sample csv file.
      New Text Document.csv
    • Jibsbrown
      By Jibsbrown
      Need some help understanding why the ConsoleWrite works inside 2nd For loop but not out side. Between Audit Wiki, Help file , Forum searching (lots of code reading), and YouTube ( shout out to TutsTeach), I have not been able to find the reason why. 
      $sIniPath = "installLog.ini" ; - Get section name $iniSctionNames = IniReadSectionNames($sIniPath) ; - Get Keys and Vaules For $a = 1 to UBound($iniSctionNames) - 1 $keys = IniReadSection($sIniPath , $iniSctionNames[$a]) For $b = 1 to UBound($keys) - 1 $oldSysInfo = IniRead($sIniPath , $iniSctionNames[1], $keys[$b][0], "") $PntIPInfo = IniRead($sIniPath , $iniSctionNames[2], $keys[$b][0], "") $NewPCInfor = IniRead($sIniPath , $iniSctionNames[3], $keys[$b][0], "") ;ConsoleWrite($oldSysInfo & @LF) Next ;ConsoleWrite($oldSysInfo & @LF) Next ConsoleWrite($oldSysInfo) My intention is to use the variables later for Listboxes. Any explanation, forum post links or whatever would help. Sorry also very very new to Autoit.
      Also here's the ini file.
      [OldSysInfo] 4=192.168.0.4|DESKTOP-RDIU2SN|R90M05Q8 5=192.168.0.5|SD0123456789101|R9WGP9P 6=192.168.0.6|SD0123456789102|R9WGP9PT 3=192.168.0.3|DESKTOP-3RS4LKL|R9WGP9P 23=192.168.0.23|SD0123456789102|MXL1234P5I [PrinterIp] 50=192.168.0.50 48=192.168.0.48 47=192.168.0.47 [NewSysInfo] newPC = SD0123456789adfs|192.168.0.185|2UA1234FTR Thank you for your time.