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));
> 
>     }
>



Reply via email to