Unexpected Mid$ behaviour
BlitzMax Forums/BlitzMax Programming/Unexpected Mid$ behaviour
| ||
Local s$ = "1234" Print "S="+Mid(s$,1,1) Print "S="+Mid(s$,1,0) Print "S="+Mid(s$,1,-1) Print "S="+Mid(s$,2,1) Print "S="+Mid(s$,2,0) Print "S="+Mid(s$,2,-1) result: S=1 S= S=1234 S=2 S= S=234 I'd have expected a negative length to return the same as length=0 i.e. a null string! like this does: Function ccMid$(s$,start%,length%) If length<0 Then Return "" Else Return Mid(s$,start,length) EndIf End Function |
| ||
I'd have expected a negative length to return the same as length=0 i.e. a null string! Hummm, I think I would expect that the Mid$ function to be as fast as it could be. All -1 really is, is 1111111111111111(etc) (ie 4294967295)So whereas I can see exactly where you are coming from, I wouldnt call it as unexpected as it would seem to be. That is I concider Indexes to be NON-signed |
| ||
You are probably not using Mid thousands of times a frame in most cases so safety of parameters adds more flexibility of use. Blitz rarely uses unsigned Integer parameters so why use one on a classic BASIC command? |
| ||
I agree totaly, my point was that, I wouldnt have been sure how it would have delt with -1, so the result to me isnt unexpected, because its one of the two ways I would have expected it to do it. What I wanted to say tho, was that in this case at least, the safty of parameters can be done as a very simple extention of the command that exists (That is your ccMid$() function). And I for one would prefer the fastest implementaion to be the base one. Having said that I would be all for Function Mid$(s$,start%,length%) ?Debug If length<0 Then runtimeerror "Negative length in Mid$" Endif ? Normal Mid$ code Return Result End Function |
| ||
The help says 'size' defaults to -1 which means to the end of the string. |
| ||
H&K yeah that could be useful, unless as Azahoth points out you used -1 intentionally... (thx Azahoth) |
| ||
Grey, correct me if I'm wrong, but if -1 means "end of string" then isn't your initial results 100% correct? |
| ||
yep. I just didn't read the help files :-) Like I said, for ME it was unexpected ;-) |
| ||
There's help files? :) lol.. Seriously, I need a book, something, I'm flying blind in the land of Blitzmax coding. lol.. (Aren't we all??) |