tuffgong

StringSplit within Array

4 posts in this topic

I have a text file with many lines that needs to be converted to a new format. Each individual line is separated by numerous commas. I want to import the text into an array then use StringSplit and assign the resulting values to variables. This code results in an error: "Array variable has incorrect number of subscript or subscript dimensions range exceeded."

While 1

Global $String = String($aArray[$count])
Global $aDelim = StringSplit($String, ",")
;_ArrayDisplay ($aDelim)
Global $date = $aDelim[1]
Global $No = $aDelim[2]
Global $A = $aDelim[7]
Global $B = $aDelim[4]

So, I tried something similar on a smaller scale. The only difference that I can see is that the test code (below - which works as expected) does not read the original array in a loop. I can see no difference:

#include<array.au3>
#include<MsgBoxConstants.au3>
#include<file.au3>
Global $aArray
Global $source = @ScriptDir & "\test.txt"
_FileReadToArray ($source, $aArray)
Global $String = String($aArray[3])

Global $aDelim = StringSplit($String, ",")
;_ArrayDisplay ($aDelim)
Global $one = $aDelim[1]
Global $two = $aDelim[2]
Global $seven = $aDelim[7]
Global $four = $aDelim[4]
MsgBox(" "," ",$seven)

In both cases the _ArrayDisplay shows what I would expect but the code on top gets an error and the one below does not. I would appreciate any insight.

Share this post


Link to post
Share on other sites



If you set the delimiter parameter in _FileReadToArray then the function does it for you and returns a 2D array:

_FileReadToArray($source, $aArray, Default, ",")

 


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

Thanks for the response. I think this is exactly what I need. However, I am inexperienced with 2d Arrays in AutoIT. My experiments with your solution have not been successful yet. Could you be a little more specific about the syntax?

Should the above statement work as written? If so, how do I display the Array to check? For example, the below code runs with no errors but it never displays my Array:

_FileReadtoArray($source, $aArray, Default, ",")
_ArrayDisplay($aArray, "", Default, 1)

I have tried adding $FRTA_ENTIRSPLIT with the same results.

Share this post


Link to post
Share on other sites

tuffgong,

Splitting the file to an instantly viewable 2D array with _FileReadToArray will only work if all the lines have the same number of delimiters - if this is not the case, then using  $FRTA_INTARRAYS  will need some further work to get the arrays displayed. Could you post a copy of the file in question so that we can see how best to proceed - PM me a copy if you do not want to post it in open forum.

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

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