Hi,

Here is my un-subtle attempt, how about summing the ASCII codes for the character string to be selected and use SELect ON to select the option based on the sum total, for example:

10 a$="Goodbye"
15 asum=0
20 FOR a=1 TO LEN(a$): asum=asum+CODE(a)
40 SELect ON asum
50   = 255: REMark ASCII Code sum for "Hello"
51          PRINT "Hello World"
60   = 364: REMark ASCII sum for "Goodbye"
61          PRINT "Goodbye World"
70 END SELect

On 19/06/2020 20:35, pjwitte via Ql-Users wrote:
On 19/06/2020 20:02, Daniel Baum via Ql-Users wrote:
What about doing something like this. In languages like c# the equivalent
of the "select on: command is hardly ever used and if .. else if ... else
is much more common:

100 INPUT a$
110 IF a$="a" THEN
115   PRINT "hello a"
120   ELSE
130     IF a$="b"
135     PRINT "hello b"
150     ELSE
155       IF a$="c"
157       PRINT "hello c "
160       ELSE
170         PRINT "hello d"
180       END IF
190     END IF
200 END IF

Actually, I had need of a similar construct recently. This is what I came up with:

100 FOR i% = 1 TO 6
110  case$ = 'case' & i%
120 c% = case$ INSTR "case1 case2 case3 case4 case5 case6"
130 :
140 SELect ON c%
150  =  1: PRINT 'case 1'
160  =  7: PRINT 'case 2'
170  = 13: PRINT 'case 3'
180  = 19: PRINT 'case 4'
190  = 25: PRINT 'case 5'
200  = 31: PRINT 'case 6'
210  = REMAINDER : PRINT 'ERROR'
220 END SELect
230 :
240 END FOR i%
This is obviously just a demo to illustrate the idea. It seems reasonably fast. In my case
I was able to keep all the terms to more or less the same size.
If there is a chance of ambiguity, one could wrap the terms in delimiters:

c% = '#' & case$ & '#' INSTR '#case1#test this2#or this#etc#..#'

Per


_______________________________________________
QL-Users Mailing List
_______________________________________________
QL-Users Mailing List

Reply via email to