Array out of range when using strict mode.

 

When I use strict mode I get an array out of range error and my indicator is not drawn correctly, when I do not use strict mode no error is received and my indicator is fine.

Is strict mode needed in most cases?

Why would I receive an error in strict mode and not in non strict mode?

Answers would be much appreciated.

 

Old Mt4/non-strict out of range array references silently returned zero. New Mt4/strict returns an error. https://docs.mql4.com/en/mql4changes

Your indicator is not fine, you should fix it. Probably not adjusting for lookback

int counted = Indicator_Counted();
if(counted < LOOKBACK) counted = LOOKBACK;
for(int iBar = Bars - 1 - counted; iBar >= 0; iBar--){
:
 

A lot of older indicators would fail in strict mode for that same reason. Indicator coders have to tighten up ! The old, "well... thats the other end of the chart, no one will notice that mess" type of coding wont cut it in strict mode ;)

 
int counted_bars=IndicatorCounted();
   if(counted_bars<0)return(-1);
   if(counted_bars>0)counted_bars--;
   int uncountedbars=Bars-counted_bars; 

Is what I use.

I think it might be to do with my array calc itself, which is annoying because I've tried to fix that part for strict mode and it didn't work.

 
our code works just fine for me
hops there is no code
 
Lol looks like it was my array calc, fortunately I had fixed a similar issue with another array earlier thanks to a thread I read on this forum, so find the issue this time wasn't as hard.
 

read the documentation

Old MQL4 compiler

New MQL4 compiler

New MQL4 with #property strict

"Array out of range" does not cause a critical error

Ditto, except for the arrays of structures and classes, for which this error is critical one

"Array out of range" is a critical error causing the program to stop

 
qjol:

read the documentation

Old MQL4 compiler

New MQL4 compiler

New MQL4 with #property strict

"Array out of range" does not cause a critical error

Ditto, except for the arrays of structures and classes, for which this error is critical one

"Array out of range" is a critical error causing the program to stop


So is an array out of range a critical error in general, or is the strict property too strict?
 
MetaNt:

So is an array out of range a critical error in general, or is the strict property too strict?
An array out of range results always from a bad coding. The compiler can/cannot catch it according to the use of #property strict.
 
angevoyageur:
An array out of range results always from a bad coding. The compiler can/cannot catch it according to the use of #property strict.

Right ok thanks, well I've fixed it now, thank God.