[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Re: JavaScript Problem with Array


  • Date: Mon, 07 Dec 2009 22:06:31 -0000
  • From: "Mike" <sfclimbers@xxxxxxxxx>
  • Subject: [amibroker] Re: JavaScript Problem with Array

PureBytes Links

Trading Reference Links



Bert,

You were on the right track with the split function. The code below shows how you could iteratively open the second file, write the single selected element, close the file.

I did that only because it looks to me like that was what you were trying for. If, in your real usage,  you are able to open/close the second file only once (i.e. before/after the loop) that would be far superior.

var line;
var fso, ts;
var ForReading = 1, ForWriting = 2, ForAppending = 8;
var TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0;
var before = "C:\\Temp\\before.csv"
var after = "C:\\Temp\\after.csv"

fso = new ActiveXObject("Scripting.FileSystemObject");
ts = fso.OpenTextFile(before, ForReading, false, TristateUseDefault);
line = ts.ReadLine(); // First line
line = ts.ReadLine(); // Second line
ts.Close();

myarray = line.split(",");
count = myarray.length;

for (i = 0; i < count; i++) {
  access = (i == 0 ? ForWriting : ForAppending);
  ts = fso.OpenTextFile(after, access, true, TristateUseDefault);
  ts.Write("" + myarray[i] + (i < count - 1 ? "," : ""));
  ts.Close();
}

Mike

--- In amibroker@xxxxxxxxxxxxxxx, "bistrader" <bistrader@xxx> wrote:
>
> Thanks Mike, but I want to be clear(er). My plan is to expand this simple example to get me at individual values in the array. In this case, the 10 values in the before.csv file provide information needed for 10 backtest runs. So, when I modifiy the JavaSript to loop thru the 10 backtests, I need to get at one and only one of the array values in before.csv. For example, when the _javascript_ loop is on number 5, then I need to get at the 5th item in the second line of before.csv or what I was thinking would be myarray(5) of 1. Know that you know this (and sorry for not being clear if I wasn't), does this change your reply? Thanks again!
>
> --- In amibroker@xxxxxxxxxxxxxxx, "Mike" sfclimbers@ wrote:
> >
> > You need to store the value that you have read, then write that value. Unless the lines in the file are very very long, a simple string will do.
> >
> > var line;
> > var fso, ts;
> >
> > var ForReading = 1, ForWriting = 2, ForAppending = 8;
> > var TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0;
> >
> > var before = "C:\\Temp\\before.csv"
> > var after = "C:\\Temp\\after.csv"
> >
> > fso = new ActiveXObject("Scripting.FileSystemObject");
> > ts = fso.OpenTextFile(before, ForReading, false, TristateUseDefault);
> >
> > line = ts.ReadLine(); // First line
> > line = ts.ReadLine(); // Second line
> > ts.Close();
> >
> > ts = fso.OpenTextFile(after, ForWriting, true, TristateUseDefault);
> > ts.WriteLine(line);
> > ts.Close();
> >
> > Mike
> >
> >
> > --- In amibroker@xxxxxxxxxxxxxxx, "bistrader" <bistrader@> wrote:
> > >
> > > Am trying to put together a simple _javascript_ to eventually use with AmiBroker. This _javascript_ should ...
> > >
> > > 1. Start out with the before.csv file.
> > > A,B,C,D,E,F,G,H,I,J
> > > 5,4,3,2,1,10,9,7,6,6
> > >
> > > 2. Skip the first line and read the 10 numbers into an array.
> > >
> > > 3. Write this array to a new after.csv file.
> > >
> > > I am lost with all of my googling. Here is what I have. Help appreciated.
> > >
> > > var myarray = new Array();
> > > var fso, ts, ts2, i;
> > >
> > > var ForReading = 1, ForWriting = 2, ForAppending = 8;
> > > var TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0;
> > >
> > > var before = "C:\\Amibroker\\Temp\\before.csv"
> > > var after = "C:\\Amibroker\\Temp\\after.csv"
> > >
> > > fso = new ActiveXObject("Scripting.FileSystemObject");
> > > //object.OpenTextFile(filename, iomode, create, format)
> > > ts = fso.OpenTextFile(before, ForReading, false, TristateUseDefault);
> > >
> > > //ts.SkipLine();
> > > //ts.ReadLine();
> > > //myarray = ts.split(',');
> > >
> > > for (i = 1; i <= 10; i++)
> > > {
> > > ts.ReadLine();
> > > //ts.ReadLine();
> > > ts.ReadLine(myarray[i]);
> > > }
> > >
> > > ts.Close();
> > >
> > >
> > > ts2 = fso.OpenTextFile(after, ForWriting, true, TristateUseDefault);
> > > ts2.Write(myarray + ',');
> > > ts2.Close();
> > > // The end
> > >
> >
>


__._,_.___


**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

TO GET TECHNICAL SUPPORT send an e-mail directly to
SUPPORT {at} amibroker.com

TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/





Your email settings: Individual Email|Traditional
Change settings via the Web (Yahoo! ID required)
Change settings via email: Switch delivery to Daily Digest | Switch to Fully Featured
Visit Your Group | Yahoo! Groups Terms of Use | Unsubscribe

__,_._,___