Sign in to follow this  
Followers 0
burger

Table to text file

7 posts in this topic

I getting an error message regarding this line of code: $line &= $aTableData1[$i][$j]

I believe it is because I trying to delare a single dimensional array as a 2 dimensional array, but I'm over my head here if someone can please help me out.

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

Dim $book1

If Not _FileCreate("book1.txt") Then
   MsgBox(4096, "Error", " Error Creating/book1.txt. error:" & @error)
EndIf
$sentlistfile = FileOpen("book1.txt", 1)
; Check if file opened for writing OK
If $book1= -1 Then
   MsgBox(0, "Error", "Unable to open file.")
   Exit
EndIf

$sURL = "http://finance.google.com/finance/historical?q=INDEXDJX:.BKTLA"
$oIE = _IECreate($sURL,0,0)

;$oTable = _IETableGetCollection ($oIE, 0)
$oTable1 = _IETableGetCollection ($oIE, 1)

;$aTableData = _IETableWriteToArray ($oTable)
$aTableData1 = _IETableWriteToArray ($oTable1, True)

;_ArrayDisplay($aTableData, "_ArrayDisplay() Test1")
_ArrayDisplay($aTableData1 , "_ArrayDisplay() Test2")

Local $i = 0, $j = 0, $line
Local $iMax = Ubound($aTableData1, 0) - 1, $jMax = Ubound($aTableData1, 1) - 1

For $i = 0 To $iMax
    $line = ""
    For $j = 0 to $jMax
        $line &= $aTableData1[$i][$j]
        If $j = $jMax Then
            FileWriteLine("book1.txt", $line)
        Else
            $line &= ","
        EndIf
    Next
Next

Share this post


Link to post
Share on other sites



this line:

Local $iMax = Ubound($aTableData1, 0) - 1, $jMax = Ubound($aTableData1, 1) - 1
should be :

Local $iMax = UBound($aTableData1, 1) - 1, $jMax = UBound($aTableData1, 2) - 1

Visit the SciTE4AutoIt3 Download page for the latest versions        Beta files                                                          Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

this line:

Local $iMax = Ubound($aTableData1, 0) - 1, $jMax = Ubound($aTableData1, 1) - 1
should be :

Local $iMax = UBound($aTableData1, 1) - 1, $jMax = UBound($aTableData1, 2) - 1
Thanks Jos. That worked, but it wrote only the first line of the array to the file. Any idea how I can get all of the lines written?

Share this post


Link to post
Share on other sites

If $j = $jMax Then

FileWriteLine("book1.txt", $line)

Else

$line &= ","

EndIf

You statement is wrong. If $j = $jMax Then should be: If $j == $jMax Then

Share this post


Link to post
Share on other sites

#5 ·  Posted (edited)

thanks but that didn't change the output.

Edit: Problem solved: Local $iMax = Ubound($aTableData1)

Thanks again for the help.

Edited by burger

Share this post


Link to post
Share on other sites

You statement is wrong. If $j = $jMax Then should be: If $j == $jMax Then

Both are integers and the "==" operator is only for case sensitive string compares. I substituted adding $line to a message for writing to a file, but this gets the results I think are desired:

Global $aTableData1[3][3] = [[0, 1, 2], ["a", "b", "c"], ["alpha", "beta", "gamma"]]

Global $line
Global $sMsg = ""
For $i = 0 To UBound($aTableData1) - 1
    $line = ""
    For $j = 0 to UBound($aTableData1, 2) - 1
        $line &= $aTableData1[$i][$j] & ","
    Next
    $sMsg &= StringTrimRight($line, 1) & @CRLF
Next

MsgBox(64, "Results", $sMsg)

Notice there is no need for $iMax or $jMax, the functionality of a For/Next loop takes care of that for you, with the Ubound() results used directly. If the number of lines is not too large to collect in the $sMsg string (upto 100MB or so), you should consider collecting all the lines and writing once to the file, it will be much faster.

:D


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

Thank you for those suggestions. :D

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