Charlie Reinl ha scritto:
> Am Donnerstag, den 15.04.2010, 21:07 +0300 schrieb Jussi Lahtinen:
>    
>> Yes, you can test it.
>>
>> This should generate error:
>> If 1 = 2 And 1 / 0 Then Print "test"
>>
>> This should not.:
>> If 1 = 2 And If 1 / 0 Then Print "test"
>>
>>      
>>>>
>>>>      if i<tabstrip1.count and tabstrip1[i].caption=""
>>>>
>>>> can fail, if I understand well. Perhaps I must check a few lines of code...
>>>>
>>>>          
> yes you are right for that example
>
> (my teacher said never try to divide something by 0).
>
> And I do not understand why/what/where.... that condition is/could be
> good for ... 1/0 !?
>
> but
> If 1 = 1 And 1<>  2 Then Print "test"
> and
> If 1 = 1 And If 1<>  2 Then Print "test"
>
> works the same way.
>    
The problem is this. Suppose you have to test a property of a object; if 
the object exists, and its property value is "1" you do something:

     if theobject<>NULL and theobject.number=1 THEN ...

The above statement is wrong, because gambas evaluates the second 
expression even if the first is false; doing so, it tries to read a 
property of a non-existent object. I checked the documentation (perhaps 
a little old), and this behavior is not specified. It is true that you 
find an alternative syntax, looking strange at first but nice, like "IF 
expr and IF otherexpr THEN ...", but this does say nothing about the 
classic syntax.

Coming from years of programming in C and pascal, I gave for normal that 
short-circuit is common practice, but this is not the case. So I must 
check a few lines of code.

Better explanation can be found on wikipedia: 
http://en.wikipedia.org/wiki/Short-circuit_evaluation

Ciao,
Doriano


------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Gambas-user mailing list
Gambas-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user

Reply via email to