Re: type string
- Posted by "Boehme, Gabriel" <gboehme at MUSICLAND.COM> Mar 10, 1999
- 479 views
Alan Tu <ATU5713 at COMPUSERVE.COM> wrote: >Is there a better way to do this? > >type string(sequence s) > for i = 1 to length(s) do > if not (s[i] >= 0 and s[i] <= 255) then > return 0 > end if > end for > return 1 >end type The previous solutions for this problem overlooked a few possibilities. Here's my solution: ------------------------------------------------------------------------ type string(sequence s) object c -- thanks Rod Jackson! for i = 1 to length(s) do c = s[i] if not integer(c) then -- strings cannot contain sequences or floating-point values return 0 elsif c < 0 or c > 255 then -- not a byte value return 0 end if end for -- if we've made it here, it's a string return 1 end type ------------------------------------------------------------------------- It took me quite a few false starts for me to get this completed. As you can see, we have to look for *much* more than just the range of the values. We have to check each element to be sure it's an integer value (and not a floating-point value or even another sequence), *before* we can verify the range of values. To my knowledge, there isn't any more "elegant" way of doing this, though I'd be quite happy to be proven wrong. Liquid-Nitrogen Software <nitrogen_069 at HOTMAIL.COM> wrote: > --this should work: > >type string(sequence s) > if find(0, (s >= 0 and s <= 255)) then > return 0 > else > return 1 > end if >end type This is basically the first solution I arrived at, only I wrote it like this... -------------------------------------------- type string(sequence s) return not find(0, s >= 0 and s <= 255)) end type -------------------------------------------- ..which would be the *most* elegant way to do this, if we didn't have to check for subsequences or floating-point values. Gabriel Boehme