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

[amibroker] Re: Possible File I/O bug.



PureBytes Links

Trading Reference Links

Hi Tomasz,

>> Local variables exist only inside user-defined functions. Simply 
opening brace in global level does not constitute local level. <<

I think you are referring to 

idx = StrExtract( indexesL , j ) ;

being repeated inside and outside the IF statement. That is a foolish 
error on my part but since they are identical it had no effect on the 
problem.

The problem seems to be with testing equality of a string against 
Name() in the IF condition. What follows are 2 simplified code 
snippets that demonstrated the problem. The only difference between 
them is the location of the fopen and fclose statements. The 1st 
works, the second doesn't.

If I replace ( Name() == "^DJI" ) with (1), they both work.

Bill
---
fh = fopen( filename, "w") ;
for (j=0; j<1; j++)
{
  if ( Name() == "^DJI" )
  {
    fputs("Test\n", fh ) ;
  }
}
fclose(fh) ;
---
for (j=0; j<1; j++)
{
  if ( Name() == "^DJI" )
  {
    fh = fopen( filename, "w") ;
    fputs("Test\n", fh ) ;
    fclose(fh) ;
  }
}
--- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <amibroker@xxxx> 
wrote:
> Hello,
> 
> Local variables exist only inside user-defined functions. Simply 
opening brace
> in global level does not constitute local level.
> 
> Best regards,
> Tomasz Janeczko
> amibroker.com
> ----- Original Message ----- 
> From: "Steve Dugas" <sjdugas@xxxx>
> To: <amibroker@xxxxxxxxxxxxxxx>
> Sent: Tuesday, June 28, 2005 4:22 AM
> Subject: Re: [amibroker] Possible File I/O bug.
> 
> 
> > Possibly because your test for fh is inside a set of brackets, it 
is treated 
> > as a seperate local variable? I might try moving it outside the 
brackets, 
> > something like this:
> > 
> > fh = fopen( filename, "w") ;
> > for (j=0; fh AND j<7; j++)
> > {
> > idx = StrExtract( indexesL , j ) ;
> > if ( Name() == "^"+StrExtract( indexesU , j ) )
> > {
> >   idx = StrExtract( indexesL , j ) ;
> >   s = StrFormat( ",%f\n", LastValue(Highest( ATR( 1 ) ) ) ) ;
> >   fputs(idx + s, fh ) ;
> > }
> > }
> > fclose(fh) ;
> > 
> > 
> > ----- Original Message ----- 
> > From: "bilbo0211" <bilbod@xxxx>
> > To: <amibroker@xxxxxxxxxxxxxxx>
> > Sent: Monday, June 27, 2005 8:14 PM
> > Subject: [amibroker] Possible File I/O bug.
> > 
> > 
> >>I am having a problem with file I/O. I don't know if it is a bug 
or I
> >> am doing something I am not supposed to do.
> >>
> >> If I open a file and write to it multiple times in a loop, there 
is no
> >> error but the file is always empty. If I use the same code except 
open
> >> and close the file each time I write to it in the loop, the file
> >> contains the correct data.
> >>
> >> What follows are 2 pieces of code that demonstrates the problem. 
1st
> >> is the one that gives the empty file, them the one that gives the
> >> correct data.
> >>
> >> Bill
> >> ---
> >> Buy=0;
> >> Sell=0;
> >> indexesL = "dji,ixic,ndx,rut,spx,vay,vlic" ;
> >> indexesU = "DJI,IXIC,NDX,RUT,SPX,VAY,VLIC" ;
> >>
> >> filename = "d:\\tmp\\amibroker\\cycles\\highest_tr.dat" ;
> >> fh = fopen( filename, "w") ;
> >> for (j=0; j<7; j++)
> >> {
> >>  idx = StrExtract( indexesL , j ) ;
> >>  if ( Name() == "^"+StrExtract( indexesU , j ) )
> >>  {
> >>    idx = StrExtract( indexesL , j ) ;
> >>    s = StrFormat( ",%f\n", LastValue(Highest( ATR( 1 ) ) ) ) ;
> >>    if(fh)
> >>    {
> >>      fputs(idx + s, fh ) ;
> >>    }
> >>  }
> >> }
> >> fclose(fh) ;
> >> ---
> >> Buy=0;
> >> Sell=0;
> >> indexesL = "dji,ixic,ndx,rut,spx,vay,vlic" ;
> >> indexesU = "DJI,IXIC,NDX,RUT,SPX,VAY,VLIC" ;
> >>
> >> filename = "d:\\tmp\\amibroker\\cycles\\highest_tr.dat" ;
> >>
> >> for (j=0; j<7; j++)
> >> {
> >>  idx = StrExtract( indexesL , j ) ;
> >>  if ( Name() == "^"+StrExtract( indexesU , j ) )
> >>  {
> >>    idx = StrExtract( indexesL , j ) ;
> >>    s = StrFormat( ",%f\n", LastValue(Highest( ATR( 1 ) ) ) ) ;
> >>    if (j==0)
> >>      fh = fopen( filename, "w") ;
> >>    else
> >>      fh = fopen( filename, "a") ;
> >>    if(fh)
> >>    {
> >>      fputs(idx + s, fh ) ;
> >>      fclose(fh) ;
> >>    }
> >>  }
> >> }
> >> ---
> >>
> >>
> >>
> >>
> >> Please note that this group is for discussion between users only.
> >>
> >> To get support from AmiBroker please send an e-mail directly to
> >> SUPPORT {at} amibroker.com
> >>
> >> For other support material please check also:
> >> http://www.amibroker.com/support.html
> >>
> >>
> >> Yahoo! Groups Links
> >>
> >>
> >>
> >>
> >>
> >>
> >> 
> > 
> > 
> > 
> > 
> > Please note that this group is for discussion between users only.
> > 
> > To get support from AmiBroker please send an e-mail directly to 
> > SUPPORT {at} amibroker.com
> > 
> > For other support material please check also:
> > http://www.amibroker.com/support.html
> > 
> > 
> > Yahoo! Groups Links
> > 
> > 
> > 
> > 
> > 
> > 
> >




Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com

For other support material please check also:
http://www.amibroker.com/support.html

 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/