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