I try to do a ‘while…wend’ until two variables are 127, but it quits if just one variable is 127.
What is wrong here?
while (data1 <> 127 and data2 <> 127)
get data1
get data2
//do something
wend
I try to do a ‘while…wend’ until two variables are 127, but it quits if just one variable is 127.
What is wrong here?
while (data1 <> 127 and data2 <> 127)
get data1
get data2
//do something
wend
No idea, but have-you tried the other way of testing the values ?
While
get data1
get data2
//do something
Wend (data1 = 127 And data2 = 127)
While ( Not (data1 = 127 or data2 = 127) )
The equivalent using “And” should be:
While ( Not(data1 = 127) And Not(data2 = 127) )
//So it ends equivalent to your statement
While (data1 <> 127 and data2 <> 127)
I guess you have some problem with your data.
(Edit: I was misunderstanding his problem at this point)
I understand he want to stop when both values are 127.
Was I wrong (time for an afternoon sleep ?)?
I understood he wants to quit if one is 127
So I need more coffee
If only I could send you one…
I’m old and these days I feel like I do not understand correctly things, so I asked.
However, this does not disallow me for an afternoon nap !
For a continue until both = 127 is
While ( Not(data1 = 127 And data2 = 127) )
Loop … Until both = 127…
You could also exit the while
while true
// Do super secret stuff
if data1 = 127 and data2 = 127 then
// Time to leave!
exit while
end if
wend
The design he proposes seems that he does not want to enter the loop if the condition is previously set, so I stick with:
Or
Do Until data1 = 127 And data2 = 127
//...
Loop
OK.
OK. alone is rejected. Error is:
Body seems unclear, is it a complete sentence?
Correct, I want a quit if both are 127.
It’s OK, I also found a workaround, but I just want to understand why the and condition not works…
^^^
I just want to understand why the and condition not work
Your first expression was wrong for what you intended.
You wrote the equivalent to:
But you wanted
While loopes while the test is true. If you write:
while (data1 <> 127 and data2 <> 127)
If data1 and data2 are differents, then it is true and true then it loops.
If one is egual it is true and false (or false and true) = false then it exists.
By the way, I always write:
while (data1 <> 127) and (data2 <> 127)
with () for each test. I’m always afraid of the interpretation of the compiler.
I’m always afraid of the interpretation of the compiler.
The compiler don’t make assumptions, it just executes what you wrote. Be afraid of what you wrote.
it quits if just one variable is 127.
What is wrong here?
When dealing with files, we are told to test in this order:
if thefile <> nil and thefile.exists then
if the first test is false, the compiler doesnt bother testing the second.
So
data1 <> 127 is FALSE because it IS 127
therefore the compiler feels no need to check whether data2 <> 127
The test should be simply test that both are 127 as Rick says
so
While ( Not(data1 = 127) And Not(data2 = 127) )
Thank you guys, now I understand.
I would find:
While ((data1=127 and data2=127) = False)
...
Wend
to be much more readable…