Arterie Posted June 16, 2008 Share Posted June 16, 2008 (edited) I want to read a table of data into an array... e.g. name| peter klaus chars| 5 5 But i want to assign it "automaticly". That means i do not want to write : $array[0][0] = "peter" Maybe thers a way to read a tabloe out of a *.txt file or out of the script like you can do in C++ like: $array = { peter klaus 5 5 } I hope you know what i mean Edited June 16, 2008 by Arterie Link to comment Share on other sites More sharing options...
Kerros Posted June 16, 2008 Share Posted June 16, 2008 _filereadtoarray Kerros===============================================================How to learn scripting: Figure out enough to be dangerous, then ask for assistance. Link to comment Share on other sites More sharing options...
Arterie Posted June 19, 2008 Author Share Posted June 19, 2008 (edited) hm... I got a *.txt file like this: w.w.w.w.w w.0.0.0.w w.0.1.0.w w.0.0.0.w w.w.w.w.w And i want that to be read into an array...so that it offers 1 if i ask for $array[2][2] I already tried with _FileReadToArray but then this are just lines and this isnt what i want.... I thought of something like reading out,then using stringsplit and then copieing this into another array...but i dont get it Edited June 19, 2008 by Arterie Link to comment Share on other sites More sharing options...
zorphnog Posted June 19, 2008 Share Posted June 19, 2008 #include <File.au3> #include <Array.au3> Global $sFile, $aFile, $aTable[1][1], $aTemp, $i, $j $sFile = "test.txt" _FileReadToArray($sFile, $aFile) If @error = 1 Then Exit For $i=1 To $aFile[0] $aTemp = StringSplit($aFile[$i], ".") If @error <> 1 Then ReDim $aTable[$i][$aTemp[0]] For $j=1 To $aTemp[0] $aTable[$i-1][$j-1] = $aTemp[$j] Next EndIf Next _ArrayDisplay($aTable) Link to comment Share on other sites More sharing options...
SadBunny Posted June 19, 2008 Share Posted June 19, 2008 Put the contents you spoke of in a file called test.txt and run the following... Is this what you mean? (By the way, I made it work for any gridsize as long as it's in the exact format as your example, meaning all lines have equal amount of elements, and no non-zero lines are used.) #include <file.au3> #include <array.au3> Dim $aRecords[1], $tempArray[1], $array[1][1] _FileReadToArray("c:\test.txt", $aRecords) $max_y = $aRecords[0] - 1 For $y = 0 To $max_y $tempArray = StringSplit($aRecords[$y + 1], ".") ; <- aRecords's info that we need is records 1-5 If $y = 0 Then $max_x = $tempArray[0] - 1 ReDim $array[$max_x+1][$max_y+1] EndIf For $x = 0 To $max_x $array[$x][$y] = $tempArray[$x + 1] ; <- We also need $tempArray elements 1-5 Next Next _ArrayDisplay($array,-1,-1,-1) Roses are FF0000, violets are 0000FF... All my base are belong to you. Link to comment Share on other sites More sharing options...
SadBunny Posted June 19, 2008 Share Posted June 19, 2008 Wow, that's almost exactly the same Only I thought about really big arrays which would make the ReDim possibly slow My solution came with the drawback however of requiring a stricter format Roses are FF0000, violets are 0000FF... All my base are belong to you. Link to comment Share on other sites More sharing options...
zorphnog Posted June 19, 2008 Share Posted June 19, 2008 True. You only need to run ReDim once, I was just in a hurry and didn't really care about efficiency. Link to comment Share on other sites More sharing options...
Arterie Posted June 19, 2008 Author Share Posted June 19, 2008 Thats great...Thank you Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now