Yesterday, 02:57 PM
A *lot* of commands are like this -- EVEN ONES YOU WRITE YOURSELF!!
There's no warning here that we're passing single values to a long variable, and no error either. BASIC, all the way from back in the days of GW BASIC, simply rolls with what you send it and doesn't issue a strict "type mismatch" error or anything. When it's looking for an integer type, and you send it a single type, then it converts to the closest integer value as illustrated above.
If you look at the wiki for our documentation on SLEEP, you'll find this: https://qb64phoenix.com/qb64wiki/index.php/SLEEP
First comment under the info tells you in big bold letters that this is going to be an integer value. By using 0.1 for SLEEP, it's going to behave *exactly* as any other SUB/FUNCTION with an INTEGER-type parameter -- it's going to round your floats down to the nearest integer value. In this case, that SLEEP .1 gets rounded and basically becomes SLEEP 0...
And SLEEP 0 is the command to "Sleep forever and ever and ever and don't bother counting time; only wake up after the user has pressed some button!"...
...which doesn't sound like that's what you were looking for in this case.
Code: (Select All)
Print foo(0.1)
Print foo(0.9)
Function foo& (example As Long)
foo = example
End Function
There's no warning here that we're passing single values to a long variable, and no error either. BASIC, all the way from back in the days of GW BASIC, simply rolls with what you send it and doesn't issue a strict "type mismatch" error or anything. When it's looking for an integer type, and you send it a single type, then it converts to the closest integer value as illustrated above.
If you look at the wiki for our documentation on SLEEP, you'll find this: https://qb64phoenix.com/qb64wiki/index.php/SLEEP
Quote:Seconds are an optional INTEGER value. If there is no parameter, then it waits for a keypress.
First comment under the info tells you in big bold letters that this is going to be an integer value. By using 0.1 for SLEEP, it's going to behave *exactly* as any other SUB/FUNCTION with an INTEGER-type parameter -- it's going to round your floats down to the nearest integer value. In this case, that SLEEP .1 gets rounded and basically becomes SLEEP 0...
And SLEEP 0 is the command to "Sleep forever and ever and ever and don't bother counting time; only wake up after the user has pressed some button!"...
...which doesn't sound like that's what you were looking for in this case.