Jump to content
Sign in to follow this  

FileTo2dArray UDF modified for blank lines in source file

Recommended Posts


I really believe that this probably belongs in the Example Scripts Sub-Forum, but I can't put it there because I lack the volume of posts necessary.

This is a modified version of the UDF in the "Array2D.au3" include file. I was having a problem using the original version due to a couple of blank lines at the end of my delimited source file. The lines consisted of only CR/LFs and contained no delimiters. By adding the While-Wend loop to the UDF the problem is addressed.

The debug error message being generated was:

C:\Program Files\AutoIt3\Include\Array2D.au3 (555) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:

$aArray[$r - 1][$c - 1] = $aStr[$c]

$aArray[$r - 1][$c - 1] = ^ ERROR

Hope this helps someone.

Func _FileTo2dArray($sFilePath, ByRef $aArray)
    Local $hFile
    Local $str
    Local $r, $c
    Local $aLocal[1]
    Local $aStr
    If Not _FileReadToArray($sFilePath, $aLocal) Then
     Return 0
    $aStr = StringSplit($aLocal[1], ",")
    ; The next While-Wend loop prevents an error if the last line(s) of the input file are blank with no delimiters
      While Not StringInStr( $aLocal[$aLocal[0]] , ",")
         $aLocal[0] = $aLocal[0] -1
    ReDim $aArray[$aLocal[0]][$aStr[0]]
    For $r = 1 To $aLocal[0]
        $aStr = StringSplit($aLocal[$r], ",")
        For $c = 1 To UBound($aArray, 2)
            $aArray[$r - 1][$c - 1] = $aStr[$c]
    ;_Array2dDisplay2($aArray, "Before Sort",0)
EndFunc   ;==>_FileTo2dArray

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

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

Create an account

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

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  


Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.