roastedbean 0 Posted October 1, 2007 CODEDim $aRecords If Not _FileReadToArray("hansmann2.txt",$aRecords) Then MsgBox(4096,"Error", " Error reading log to Array error:" & @error) Exit EndIf For $x = 1 to 5 ConsoleWrite($aRecords[$x] & @CRLF) Next Successfully displays first five records as: D11,17,97, SAF IRA Janet 62727373, NBuy, YEuroPacific Growth, I28.070000, Q41.002000, T1,150.926140 D05,13,99, SAF IRA Janet 62727373, NBuy, YEuroPacific Growth, I32.809475, Q30.479000, T1,000.000000 D12,12,97, SAF IRA Janet 62727373, NReinvDiv, YEuroPacific Growth, I25.390000, Q0.581000, T14.751590 D12,12,97, SAF IRA Janet 62727373, NReinvLg, YEuroPacific Growth, I25.390000, Q1.332000, T33.819480 D12,12,97, SAF IRA Janet 62727373, NReinvSh, YEuroPacific Growth, I25.390000, Q0.364000, T9.241960 How do I set the 7th element to $var array? ie. $var = $aRecords[1][6] I basically need to parse the array elements and assign them to variables. I sincerely appreciate any and all help! Thanks. Share this post Link to post Share on other sites
stampy 0 Posted October 1, 2007 Are you trying to convert the entire array to a 2 dim array or just the one element? Share this post Link to post Share on other sites
PsaltyDS 42 Posted October 1, 2007 CODEDim $aRecords If Not _FileReadToArray("hansmann2.txt",$aRecords) Then MsgBox(4096,"Error", " Error reading log to Array error:" & @error) Exit EndIf For $x = 1 to 5 ConsoleWrite($aRecords[$x] & @CRLF) Next Successfully displays first five records as: D11,17,97, SAF IRA Janet 62727373, NBuy, YEuroPacific Growth, I28.070000, Q41.002000, T1,150.926140 D05,13,99, SAF IRA Janet 62727373, NBuy, YEuroPacific Growth, I32.809475, Q30.479000, T1,000.000000 D12,12,97, SAF IRA Janet 62727373, NReinvDiv, YEuroPacific Growth, I25.390000, Q0.581000, T14.751590 D12,12,97, SAF IRA Janet 62727373, NReinvLg, YEuroPacific Growth, I25.390000, Q1.332000, T33.819480 D12,12,97, SAF IRA Janet 62727373, NReinvSh, YEuroPacific Growth, I25.390000, Q0.364000, T9.241960 How do I set the 7th element to $var array? ie. $var = $aRecords[1][6] I basically need to parse the array elements and assign them to variables. I sincerely appreciate any and all help! Thanks. _FileReadToArray() returns a 1D array. To break each line into an array of its own, use StringSplit(): Dim $aRecords If Not _FileReadToArray("hansmann2.txt",$aRecords) Then MsgBox(4096,"Error", " Error reading log to Array error:" & @error) Exit EndIf For $x = 1 to 5 $aSplit = StringSplit($aRecords[$x], ",") ConsoleWrite("Debug: " & $x & ": Seventh field = " & $aSplit[7] & @LF) Next Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law Share this post Link to post Share on other sites
roastedbean 0 Posted October 1, 2007 Are you trying to convert the entire array to a 2 dim array or just the one element?To confirm my understanding: this is a 2D array called $aRecordseach row in my output (5 above) is one record in the arrayeach record is made of elementsMaybe I have incorrectly assumed that this is a 2D and it's only a 1D (simply separated by @CRLF) in which case, "yes" I think I need to convert to a 2D, then call individual elements as variables.Hope this makes sense... if not, I will try and describe in other words.Gracious for the help.Andrew Share this post Link to post Share on other sites
frostfel 0 Posted October 1, 2007 $aRecords = "D11,17,97, SAF IRA Janet 62727373, NBuy, YEuroPacific Growth, I28.070000, Q41.002000, T1,150.926140" $aRecords2 = StringReplace($aRecords, " ", "") $aRecords3 = StringSplit($aRecords2, ",") MsgBox( 0, "Test", $aRecords3[1]) Share this post Link to post Share on other sites
stampy 0 Posted October 1, 2007 yes the readtoarray is a 1Dim array. Agreed with other to use stringsplit to get the 2dim array. Use it in a loop to get entire array to 2dim or alone to split the single element Share this post Link to post Share on other sites
roastedbean 0 Posted October 1, 2007 yes the readtoarray is a 1Dim array. Agreed with other to use stringsplit to get the 2dim array. Use it in a loop to get entire array to 2dim or alone to split the single elementI will continue and work on this, thank you both.Andrew Share this post Link to post Share on other sites
aslani 2 Posted October 1, 2007 Successfully displays first five records as: D11,17,97, SAF IRA Janet 62727373, NBuy, YEuroPacific Growth, I28.070000, Q41.002000, T1,150.926140 D05,13,99, SAF IRA Janet 62727373, NBuy, YEuroPacific Growth, I32.809475, Q30.479000, T1,000.000000 D12,12,97, SAF IRA Janet 62727373, NReinvDiv, YEuroPacific Growth, I25.390000, Q0.581000, T14.751590 D12,12,97, SAF IRA Janet 62727373, NReinvLg, YEuroPacific Growth, I25.390000, Q1.332000, T33.819480 D12,12,97, SAF IRA Janet 62727373, NReinvSh, YEuroPacific Growth, I25.390000, Q0.364000, T9.241960 Is "T1,150.926140" one or two elements? If one element, then you'll run into a problem with StringStrip() with "," delimiter. Also, can you show here what kind of a result you want? Example: $item_id = "D11" $item_code = "17" etc. This will help a lot. Here's a long version that I come up with, hopefully someone here can come up with something more attractive. expandcollapse popup#Include <Array.au3> #include <File.au3> Dim $aRecords If Not _FileReadToArray("hansmann2.txt",$aRecords) Then MsgBox(4096,"Error", " Error reading log to Array error:" & @error) Exit EndIf _ArrayDisplay($aRecords, "$aRecords") $record_1 = StringSplit($aRecords[1], ",") _ArrayDisplay($record_1, "$record_1") $record_2 = StringSplit($aRecords[2], ",") _ArrayDisplay($record_2, "$record_2") $record_3 = StringSplit($aRecords[3], ",") _ArrayDisplay($record_3, "$record_3") $record_4 = StringSplit($aRecords[4], ",") _ArrayDisplay($record_4, "$record_4") $record_5 = StringSplit($aRecords[5], ",") _ArrayDisplay($record_5, "$record_5") $element_1 = _ArrayCreate($record_1[1], $record_2[1], $record_3[1], $record_4[1], $record_5[1]) _ArrayDisplay($element_1, "$element_1") $element_2 = _ArrayCreate($record_1[2], $record_2[2], $record_3[2], $record_4[2], $record_5[2]) _ArrayDisplay($element_2, "$element_2") $element_3 = _ArrayCreate($record_1[3], $record_2[3], $record_3[3], $record_4[3], $record_5[3]) _ArrayDisplay($element_3, "$element_3") $element_4 = _ArrayCreate($record_1[4], $record_2[4], $record_3[4], $record_4[4], $record_5[4]) _ArrayDisplay($element_4, "$element_4") $element_5 = _ArrayCreate($record_1[5], $record_2[5], $record_3[5], $record_4[5], $record_5[5]) _ArrayDisplay($element_5, "$element_5") $element_6 = _ArrayCreate($record_1[6], $record_2[6], $record_3[6], $record_4[6], $record_5[6]) _ArrayDisplay($element_6, "$element_6") $element_7 = _ArrayCreate($record_1[7], $record_2[7], $record_3[7], $record_4[7], $record_5[7]) _ArrayDisplay($element_7, "$element_7") $element_8 = _ArrayCreate($record_1[8], $record_2[8], $record_3[8], $record_4[8], $record_5[8]) _ArrayDisplay($element_8, "$element_8") $element_9 = _ArrayCreate($record_1[9], $record_2[9], $record_3[9], $record_4[9], $record_5[9]) _ArrayDisplay($element_9, "$element_9") [font="Georgia"]Chances are, I'm wrong.[/font]HotKey trouble?Stringregexp GuideAutoIT Current Version Share this post Link to post Share on other sites
stampy 0 Posted October 2, 2007 Something I wrote a long time ago (hopefully it doesn't contain errors), thought it might help. Func ConvertArrayTo2Dimen($Array, $Seperator) ;returns new array ;pass a single dim array return a 2dim array ;if not 1 dimen array then error =1 array is passed back Local $ColumnCount, $SplitLine If UBound($Array, 0) <> 1 Then SetError(1) Return $Array EndIf $ColumnCount = '' For $i = 1 To $Array[0] $SplitLine = StringSplit($Array[$i], $Seperator, 1) If $ColumnCount = '' Then $ColumnCount = $SplitLine[0] Else If $SplitLine[0] > $ColumnCount Then $ColumnCount = $SplitLine[0] EndIf $SplitLine = 0 Next Dim $2DimenArray[$Array[0] + 1][$ColumnCount + 1] $2DimenArray[0][0] = $Array[0] For $i = 1 To $Array[0] $SplitLine = StringSplit($Array[$i], $Seperator, 1) For $k = 0 To $SplitLine[0] ;find the value of [0] here in case not all are same column count $2DimenArray[$i][$k] = $SplitLine[$k] Next Next $Array = 0 Return $2DimenArray EndFunc ;==>ConvertArrayTo2Dimen Share this post Link to post Share on other sites