Actually, you are running into a documented side effect of IIF usage. Specifically; the IIF statement always executes BOTH the true and the false branches of the code. So, you will always have your Count++ code executed regardless of the value of the IsNull expression.
Refer to the user guide for details: http://www.amibroker.com/guide/afl/afl_view.php?id=72 Mike --- In [email protected], "Paolo Cavatore" <[EMAIL PROTECTED]> wrote: > > Does anyone know how to skip empty symbols when looping through a > list of them? > > The code below shows that IsNull function doesn't return TRUE for > empty symbols. > > Thanks, > > paolo > > // EmptySymbols finder > // retrive comma-separated list of symbols > // from Group 0 > list = CategoryGetSymbols(categoryGroup, 0); > > Count = 0; > > for( i = 0; ( sym = StrExtract( list, i ) ) != ""; i++ ) > { > SetForeign(sym); > myforeign = C; > RestorePriceArrays(); > > //if the symbol is empty Count is not increased > IIf(IsNull(myforeign), Count, Count++); > _TRACE("symbol " + sym); > _TRACE("Count " + Count); > _TRACE("IsNull " + IsNull(myforeign)); > > } >
