Sign in to follow this  
Followers 0
cypher175

Combining Arrays..??

8 posts in this topic

I have 20 txt files all with data in them, and I need to combine all data in all the files into one big 2D array...

How would I do this..??

Share this post


Link to post
Share on other sites

I can get an array from each file with _FileReadToArray

but how do I combine all those arrays into 1 array..??

Share this post


Link to post
Share on other sites

_ArrayConcatenate()?

It really depends on what you are trying to do.

You could:

1. Do a fileread on all the files, and dump to one file, then do a _filereadtoarray on the one file for one array

2. Continue what you're doing and use _ArrayConcatenate()

3. Do a fileread and append/concatenate each fileread to the var string $s_str &= FileRead($a_file[$i]) ( if the filereads were in a loop example ), then use StringSplit() to split the lines into one array.


Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Share this post


Link to post
Share on other sites

with the _ArrayConcatenate() how do I combine the 1st _FileReadToArray to an empty non existent array..??

Share this post


Link to post
Share on other sites

with the _ArrayConcatenate() how do I combine the 1st _FileReadToArray to an empty non existent array..??

Philosophers would probably be able to have a lengthy discussion contemplating if something that does not exist can be an array.

The autoit interpeter is not a philosopher and wants it's arrays to exist before it will accept them as arrays.

If you mean you want to combine 2 arrays into another array, while keeping the original arrays the same as before the combine, lok at this:

#include <array.au3>
Local $array1[4] = [0,1,2,3]
Local $array2[3] = ["a","b","c"]

Local $newAray = $array1 ;Just making a copy of $array1 to work with here. This way $array1 is not affected.

_ArrayConcatenate($newAray,$array2)
_ArrayDisplay($array1,"$array1")
_ArrayDisplay($array2,"$array2")
_ArrayDisplay($newAray,"$newAray")

Share this post


Link to post
Share on other sites

with the _ArrayConcatenate() how do I combine the 1st _FileReadToArray to an empty non existent array..??

I've personally never used the function.

But I'd imagine my code would look something like this:

#include <File.au3>
#include <Array.au3>

Global $a_filelist[11] = [ 10, _
    "C:\file1", "C:\file2", "C:\file3", "C:\file4", "C:\file5", _
    "C:\file6", "C:\file7", "C:\file8", "C:\file9", "C:\file10"]
    
Global $a_lta, $a_lta_now

For $ilist = 1 To $a_filelist[0]
    $a_lta_now = _FileListToArray($a_filelist[$ilist])
    If $ilist = 1 Then
        $a_lta = $a_lta_now
        ContinueLoop
    EndIf
    _ArrayConcatenate($a_lta, $a_lta_now, 1)
Next

If IsArray($a_lta) Then
    $a_lta[0] = UBound($a_lta) - 1
EndIf

_ArrayDisplay($a_lta)

Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Share this post


Link to post
Share on other sites

#8 ·  Posted (edited)

OR

Sorry a simple mistake, Code has been modified

#include <Array.au3>
$file = FileOpen("file1.txt", 2)
FileWrite($file,"0123456789")
FileClose($file)
$file = FileOpen("file2.txt", 2)
FileWrite($file,"01234567890123456789")
FileClose($file)

Dim $FileArray
addFileName("file1.txt",$FileArray)
addFileName("file2.txt",$FileArray)

_ArrayDisplay($FileArray,"")
_FileReadToArray2D($FileArray)
_ArrayDisplay($FileArray,"")

Func _FileReadToArray2D(ByRef $FileArray)
if Not IsArray($FileArray) Then Return
For $i = 0 To UBound($FileArray) - 1
$FileName = $FileArray[$i][0]
$file = FileOpen($FileName, 0)
$chars = FileRead($file)
FileClose($file)
$CharArray = StringSplit($chars,"")
$FileArray[$i][0] &= "|cols = " & $CharArray[0]
For $j = 1 To $CharArray[0]
if $j >= UBound($FileArray,2)  Then _
ReDim $FileArray[UBound($FileArray)][UBound($FileArray,2) + 1]
$FileArray[$i][$j] = $CharArray[$j]
Next
Next
EndFunc

Func addFileName($FileName,ByRef $FileArray)
if Not IsArray($FileArray) Then
Dim $FileArray[1][1]
$FileArray[0][0] = $FileName
Else
ReDim $FileArray[UBound($FileArray) + 1][1]
$FileArray[UBound($FileArray) - 1][0] = $FileName
EndIf
EndFunc
Edited by wolf9228

صرح السماء كان هنا

 

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  
Followers 0