[Gambas-user] Doesn't IF NOT exist? Bug or feature? Or my bad logic?
Rolf-Werner Eilert
eilert-sprachen at ...221...
Thu Sep 17 17:58:00 CEST 2009
Benoît Minisini schrieb:
>> Rolf-Werner Eilert wrote:
>>> Just stumbled over this when trying to implement a small copying
>>> function:
>>>
>>> FOR EACH datei IN Dir(opfad, odatei & ".*")
>>> IF NOT file.Ext(opfad &/ datei) = "lock" THEN
>>> COPY opfad &/ datei TO ziel &/ datei
>>> SELECT CASE file.Ext(ziel &/ datei)
>>> CASE "fehl", "feldbak", "felder", "notizen"
>>> SHELL "chgrp kartei " & ziel &/ datei WAIT
>>> SHELL "chmod 660 " & ziel &/ datei WAIT
>>> CASE "konto", "kontobak", "ktx", "ktxbak"
>>> SHELL "chgrp konto " & ziel &/ datei WAIT
>>> SHELL "chmod 660 " & ziel &/ datei WAIT
>>> END SELECT
>>> END IF
>>> NEXT
>>>
>>> IF NOT ... = ... THEN
>>>
>>> wouldn't copy anything, although only one file has the given extension.
>>> When I change this line into
>>>
>>> IF file.Ext(opfad &/ datei) <> "lock" THEN
>>>
>>> everything runs as expected. Doesn't make sense to me as both ways
>>> should mean the same in my understanding of logical NOT (which doesn't
>>> mean too much... :-) )
>>>
>>> Regards
>>>
>>> Rolf
>> From the docs, NOT is an operator that makes a boolean it's opposite
>> (TRUE turns to FALSE and vice versa) and will also invert each bit in an
>> integer. NOT(11) = -12 because that's what you get when you change
>> every bit from on to off and vice versa.
>>
>> From other examples in the docs, if you NOT a string with something in
>> it, you will get FALSE. However, if you NOT an empty string, you will
>> get TRUE.
>>
>
> In other words, try to use brackets: IF NOT (...) = ... THEN
>
>
More information about the User
mailing list