I'd say, if a number has been inputted
and it's in the range -90 ... + 90 then it is a valid long.
No more testing required.
Period!!!
If you multiply it by 6 zero's then it could be
-90,000,000 ... +90,000,000
and you're defeating the whole thing.
What you're doing is pointless.

for this snippet...

1>   f = latitude * 1000000
2>   g = CFloat(CInt(f))
3>   Print "f=" & f
4>   Print "g=" & g
5>   If f <> g Then
6>     Message.Info("More than 6 decimal digits - try again")
7>     Last.SetFocus()
8>     Stop Event
9>   End If


if you want f to be with no digits to the right of the decimal point
then use INTEGER, not FLOAT

so, f should be an INTEGER

You're trying so hard to do things an INTEGER does well

line 2,4,5,6,7,8 are not needed

but is line 1 purpose only for testing, then you don't even need line 1

Overall, if lat is -90 ... +90 then it's in range.
No more tests required.


if someone types in: 89.12361263571235671235645345345
and you don't want all those extra digits to the right of the 6th decimal digit
DO NOTHING.
TEST NOTHING.
because it doesn't matter.
It really doesn't!!

-Fernando

---------- Original Message -----------
From: John Rose <[email protected]>
To: GambasUsers MailingList <[email protected]>
Sent: Sun, 12 Aug 2012 08:09:06 +0100
Subject: [Gambas-user] Check on entered number having more than 6 digits not 
working

> Jussi,
> 
> I've put the code below into the Fmain class in that Test project and it
> works OK! The Test project needs a lot more code in order to obtain the
> Latitude from the database. I'll check it out again with the full
> project.
> 
> Public Sub ValueBoxLongitude_KeyRelease()
>   If Key.Code = Key.Return Or Key.Code = Key.Enter Or Key.Code = Key.Tab
> Then
>     ButtonExit.SetFocus()
>   Endif
> End
> 
> Public Sub ValueBoxLatitude_LostFocus()
>   Dim latitude As Float
>   Dim f As Float
>   Dim g As Float
>   If IsNull(Last.Value) Then Return
>   latitude = Last.Value
>   If latitude < -90 Or latitude > 90 Then
>     Message.Info("Must be between -90 and +90 - try again")
>     Last.SetFocus()
>     Stop Event 
>   End If
>   f = latitude * 1000000
>   g = CFloat(CInt(f))
>   Print "f=" & f
>   Print "g=" & g
>   If f <> g Then
>     Message.Info("More than 6 decimal digits - try again")
>     Last.SetFocus()
>     Stop Event
>   End If
>   ButtonExit.SetFocus
> End Sub
> 
> ------------------------------------------------------------------------------
> Live Security Virtual Conference
> Exclusive live event will cover all the ways today's security and 
> threat landscape has changed and how IT managers can respond. Discussions 
> will include endpoint security, mobile security and the latest in malware 
> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
> _______________________________________________
> Gambas-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/gambas-user
------- End of Original Message -------


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Gambas-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gambas-user

Reply via email to