a = integer.fromText("-1") -> ok
a = integer.fromText"+1") -> xojo.core.bad.data.exception
???
a = integer.fromText("-1") -> ok
a = integer.fromText"+1") -> xojo.core.bad.data.exception
???
[quote=153222:@Gilles Rioux]a = integer.fromText("-1") -> ok
a = integer.fromText"+1") -> xojo.core.bad.data.exception
???[/quote]
You are missing the opening parenthesis :
http://xojo.helpdocsonline.com/integer$FromText
Assuming you actually had the parentheses in real code this might be a valid exception from Xojo’s point of view. “-1” is really negative one. “+1” is probably considered an unknown string since it’s not common to have positive numbers with the + in front of it.
Integer.FromText is very stringent and there was a very ‘healthy’ debate on it over the weekend here on the forums https://forum.xojo.com/18207-what-do-you-think-of-the-new-framework and on my blog http://www.bkeeneybriefs.com/2014/12/new-xojo-framework-thoughts/.
The bottom line is that 2015 R1 will probably have an Integer.Parse method that would allow this. Until then you’ll want to strip the + sign out of your string.
[quote=153252:@Bob Keeney]Assuming you actually had the parentheses in real code this might be a valid exception from Xojo’s point of view. “-1” is really negative one. “+1” is probably considered an unknown string since it’s not common to have positive numbers with the + in front of it.
[/quote]
Although the usage is uncommon, “+1” is by definition a valid text representation of the number 1. A bug report should be filed… If the are going to be very strict, they need to follow all the rules too!!!
That said, unless there is a speed issue with *.Parse, I doubt I’ll ever use *.From text of numeric conversion.
That said i REALLY hope they code *.parse efficiently under the hood … Anybody remember the first implementation of Join(string())? The way it was coded is was about as slow as doing:
Dim JoinedString as String
For Each Item as String In StrArr
JoinedString = JoinedString + Item
Next
And we all know how slow that is because of immutable strings!
I hope they do some significant optimization on *.Parse from the start as people like me call Val a lot when parsing data files!!!
I will certainly test it relative to the execution speed of Val.
[quote=153230:@Michel Bujardet]You are missing the opening parenthesis :
http://xojo.helpdocsonline.com/integer$FromText[/quote]
This was not copied from IDE, but typed from my memory, my mistake.
But in this case, I should have got a syntax error at compile time and not a runtime error ?
[quote=153404:@Gilles Rioux]This was not copied from IDE, but typed from my memory, my mistake.
But in this case, I should have got a syntax error at compile time and not a runtime error ?[/quote]
Indeed.
[quote=153404:@Gilles Rioux]This was not copied from IDE, but typed from my memory, my mistake.
But in this case, I should have got a syntax error at compile time and not a runtime error ?[/quote]
No. The compiler doesn’t look at the value of the text, but the function does at runtime. Hence the “runtime” error.
I just run this: dim a as integer = integer.fromText"+1")
and I got that from the compiler : [quote]Not enough arguments: got 0, expected 1[/quote]
But with this: [quote]dim a as integer = integer.fromText(“+1”)[/quote]
it compile nice but fail at runtime with a “Character ‘+’ is not a valid number” reason.
[quote=153641:@Gilles Rioux]dim a as integer = integer.fromText(“+1”)
it compile nice but fail at runtime with a “Character ‘+’ is not a valid number” reason.[/quote]
When I do that on Mac I get
No error with “1” or “-1”
Looks like a bug worth reporting. In the meantime, why not do :
dim t as text = "+1"
dim a as integer = integer.fromtext(t.Replace("+",""))
Since by definition, a numerical value without + is positive.
Thank you Michel. I will do that.