主题:回MOZ;求助
DECLARE SUB Split (X$(), y2$, z$)
DECLARE SUB MiddleCode (Code AS STRING)
SCREEN 12
ON ERROR GOTO ErrCode
DIM TucCode AS STRING
DO
INPUT "", TucCode
TucCode = LCASE$(TucCode)
MiddleCode TucCode
LOOP
END
ErrCode:
PRINT "ErrorCode"
PRINT "Key Enter To Exit"
DO
LOOP UNTIL INKEY$ = CHR$(13)
END
SUB MiddleCode (Code AS STRING)
DIM SplitCode(LEN(Code)) AS STRING
DIM Codetmp AS STRING
IF LEN(Code) = 0 THEN EXIT SUB
SELECT CASE MID$(Code, 1, 1)
CASE "*"
Codetmp = MID$(Code, INSTR(Code, "[") + 1)
Codetmp = MID$(Codetmp, 1, INSTR(Codetmp, "]") - 1)
Split SplitCode(), Codetmp, ";"
PRINT "* ";
FOR a = 1 TO VAL(SplitCode(0))
PRINT SplitCode(a) + " ";
NEXT
PRINT
d = VAL(SplitCode(1))
FOR a = 2 TO VAL(SplitCode(0))
d = d * VAL(SplitCode(a))
NEXT
Codetmp = STR$(d)
PRINT "= "; Codetmp
PRINT
CASE "+"
Codetmp = MID$(Code, INSTR(Code, "[") + 1)
Codetmp = MID$(Codetmp, 1, INSTR(Codetmp, "]") - 1)
Split SplitCode(), Codetmp, ";"
PRINT "+ ";
FOR a = 1 TO VAL(SplitCode(0))
PRINT SplitCode(a) + " ";
NEXT
PRINT
d = VAL(SplitCode(1))
FOR a = 2 TO VAL(SplitCode(0))
d = d + VAL(SplitCode(a))
NEXT
Codetmp = STR$(d)
PRINT "= "; Codetmp
PRINT
CASE "-"
Codetmp = MID$(Code, INSTR(Code, "[") + 1)
Codetmp = MID$(Codetmp, 1, INSTR(Codetmp, "]") - 1)
PRINT "- ";
FOR a = 1 TO VAL(SplitCode(0))
PRINT SplitCode(a) + " ";
NEXT
PRINT
d = VAL(SplitCode(1))
FOR a = 2 TO VAL(SplitCode(0))
d = d - VAL(SplitCode(a))
NEXT
Codetmp = STR$(d)
PRINT "= "; Codetmp
PRINT
CASE "\"
Codetmp = MID$(Code, INSTR(Code, "[") + 1)
Codetmp = MID$(Codetmp, 1, INSTR(Codetmp, "]") - 1)
Split SplitCode(), Codetmp, ";"
PRINT "\ ";
FOR a = 1 TO VAL(SplitCode(0))
PRINT SplitCode(a) + " ";
NEXT
PRINT
d = VAL(SplitCode(1))
FOR a = 2 TO VAL(SplitCode(0))
d = d \ VAL(SplitCode(a))
NEXT
Codetmp = STR$(d)
PRINT "= "; Codetmp
PRINT
CASE "%"
Codetmp = MID$(Code, INSTR(Code, "[") + 1)
Codetmp = MID$(Codetmp, 1, INSTR(Codetmp, "]") - 1)
Split SplitCode(), Codetmp, ";"
PRINT "% ";
FOR a = 1 TO VAL(SplitCode(0))
PRINT SplitCode(a) + " ";
NEXT
PRINT
d = VAL(SplitCode(1))
FOR a = 2 TO VAL(SplitCode(0))
d = d MOD VAL(SplitCode(a))
NEXT
Codetmp = STR$(d)
PRINT "= "; Codetmp
PRINT
CASE "/"
Codetmp = MID$(Code, INSTR(Code, "[") + 1)
Codetmp = MID$(Codetmp, 1, INSTR(Codetmp, "]") - 1)
Split SplitCode(), Codetmp, ";"
PRINT "/ ";
FOR a = 1 TO VAL(SplitCode(0))
PRINT SplitCode(a) + " ";
NEXT
PRINT
d = VAL(SplitCode(1))
FOR a = 2 TO VAL(SplitCode(0))
d = d / VAL(SplitCode(a))
NEXT
Codetmp = STR$(d)
PRINT "= "; Codetmp
PRINT
CASE "^"
Codetmp = MID$(Code, INSTR(Code, "[") + 1)
Codetmp = MID$(Codetmp, 1, INSTR(Codetmp, "]") - 1)
Split SplitCode(), Codetmp, ";"
PRINT "^ ";
FOR a = 1 TO VAL(SplitCode(0))
PRINT SplitCode(a) + " ";
NEXT
PRINT
d = VAL(SplitCode(1))
FOR a = 2 TO VAL(SplitCode(0))
d = d ^ VAL(SplitCode(a))
NEXT
Codetmp = STR$(d)
PRINT "= "; Codetmp
PRINT
CASE "~"
Codetmp = MID$(Code, INSTR(Code, "[") + 1)
Codetmp = MID$(Codetmp, 1, INSTR(Codetmp, "]") - 1)
Split SplitCode(), Codetmp, ";"
PRINT "~ ";
FOR a = 1 TO VAL(SplitCode(0))
PRINT SplitCode(a) + " ";
NEXT
PRINT
d = VAL(SplitCode(1))
FOR a = 2 TO VAL(SplitCode(0))
d = d XOR VAL(SplitCode(a))
NEXT
Codetmp = STR$(d)
PRINT "= "; Codetmp
PRINT
CASE "@"
Codetmp = MID$(Code, INSTR(Code, "[") + 1)
Codetmp = MID$(Codetmp, 1, INSTR(Codetmp, "]") - 1)
Split SplitCode(), Codetmp, ";"
PRINT "@ ";
FOR a = 1 TO VAL(SplitCode(0))
PRINT SplitCode(a) + " ";
NEXT
PRINT
d = VAL(SplitCode(1))
FOR a = 2 TO VAL(SplitCode(0))
d = d OR VAL(SplitCode(a))
NEXT
Codetmp = STR$(d)
PRINT "= "; Codetmp
PRINT
CASE "#"
Codetmp = MID$(Code, INSTR(Code, "[") + 1)
Codetmp = MID$(Codetmp, 1, INSTR(Codetmp, "]") - 1)
Split SplitCode(), Codetmp, ";"
PRINT "# ";
FOR a = 1 TO VAL(SplitCode(0))
PRINT SplitCode(a) + " ";
NEXT
PRINT
d = VAL(SplitCode(1))
FOR a = 2 TO VAL(SplitCode(0))
d = d AND VAL(SplitCode(a))
NEXT
Codetmp = STR$(d)
PRINT "= "; Codetmp
PRINT
CASE "&"
Codetmp = MID$(Code, INSTR(Code, "[") + 1)
Codetmp = MID$(Codetmp, 1, INSTR(Codetmp, "]") - 1)
SELECT CASE Codetmp
CASE "0"
END
CASE "1"
CLS
END SELECT
END SELECT
END SUB
SUB Split (X$(), y2$, z$)
y$ = y2$ + z$
l% = LEN(z$)
i% = INSTR(y$, z$)
j% = 1
DO WHILE i%
K% = K% + 1
X$(K%) = MID$(y$, j%, i% - j%)
j% = i% + l%
i% = INSTR(j%, y$, z$)
LOOP
X$(0) = STR$(K%)
END SUB
上面的程序是个计算的;
运行还正常;
只是输入错误;
列如输入 *['as'ss's;
等不规则表达式时;
程序就有错误;
我想在MiddleCode过程设置错误陷阱;
可是QB提示错误信息;
所以我只能在在主过程里设置陷阱;
每次输入错误都要退出;烦;
DECLARE SUB MiddleCode (Code AS STRING)
SCREEN 12
ON ERROR GOTO ErrCode
DIM TucCode AS STRING
DO
INPUT "", TucCode
TucCode = LCASE$(TucCode)
MiddleCode TucCode
LOOP
END
ErrCode:
PRINT "ErrorCode"
PRINT "Key Enter To Exit"
DO
LOOP UNTIL INKEY$ = CHR$(13)
END
SUB MiddleCode (Code AS STRING)
DIM SplitCode(LEN(Code)) AS STRING
DIM Codetmp AS STRING
IF LEN(Code) = 0 THEN EXIT SUB
SELECT CASE MID$(Code, 1, 1)
CASE "*"
Codetmp = MID$(Code, INSTR(Code, "[") + 1)
Codetmp = MID$(Codetmp, 1, INSTR(Codetmp, "]") - 1)
Split SplitCode(), Codetmp, ";"
PRINT "* ";
FOR a = 1 TO VAL(SplitCode(0))
PRINT SplitCode(a) + " ";
NEXT
d = VAL(SplitCode(1))
FOR a = 2 TO VAL(SplitCode(0))
d = d * VAL(SplitCode(a))
NEXT
Codetmp = STR$(d)
PRINT "= "; Codetmp
CASE "+"
Codetmp = MID$(Code, INSTR(Code, "[") + 1)
Codetmp = MID$(Codetmp, 1, INSTR(Codetmp, "]") - 1)
Split SplitCode(), Codetmp, ";"
PRINT "+ ";
FOR a = 1 TO VAL(SplitCode(0))
PRINT SplitCode(a) + " ";
NEXT
d = VAL(SplitCode(1))
FOR a = 2 TO VAL(SplitCode(0))
d = d + VAL(SplitCode(a))
NEXT
Codetmp = STR$(d)
PRINT "= "; Codetmp
CASE "-"
Codetmp = MID$(Code, INSTR(Code, "[") + 1)
Codetmp = MID$(Codetmp, 1, INSTR(Codetmp, "]") - 1)
PRINT "- ";
FOR a = 1 TO VAL(SplitCode(0))
PRINT SplitCode(a) + " ";
NEXT
d = VAL(SplitCode(1))
FOR a = 2 TO VAL(SplitCode(0))
d = d - VAL(SplitCode(a))
NEXT
Codetmp = STR$(d)
PRINT "= "; Codetmp
CASE "\"
Codetmp = MID$(Code, INSTR(Code, "[") + 1)
Codetmp = MID$(Codetmp, 1, INSTR(Codetmp, "]") - 1)
Split SplitCode(), Codetmp, ";"
PRINT "\ ";
FOR a = 1 TO VAL(SplitCode(0))
PRINT SplitCode(a) + " ";
NEXT
d = VAL(SplitCode(1))
FOR a = 2 TO VAL(SplitCode(0))
d = d \ VAL(SplitCode(a))
NEXT
Codetmp = STR$(d)
PRINT "= "; Codetmp
CASE "%"
Codetmp = MID$(Code, INSTR(Code, "[") + 1)
Codetmp = MID$(Codetmp, 1, INSTR(Codetmp, "]") - 1)
Split SplitCode(), Codetmp, ";"
PRINT "% ";
FOR a = 1 TO VAL(SplitCode(0))
PRINT SplitCode(a) + " ";
NEXT
d = VAL(SplitCode(1))
FOR a = 2 TO VAL(SplitCode(0))
d = d MOD VAL(SplitCode(a))
NEXT
Codetmp = STR$(d)
PRINT "= "; Codetmp
CASE "/"
Codetmp = MID$(Code, INSTR(Code, "[") + 1)
Codetmp = MID$(Codetmp, 1, INSTR(Codetmp, "]") - 1)
Split SplitCode(), Codetmp, ";"
PRINT "/ ";
FOR a = 1 TO VAL(SplitCode(0))
PRINT SplitCode(a) + " ";
NEXT
d = VAL(SplitCode(1))
FOR a = 2 TO VAL(SplitCode(0))
d = d / VAL(SplitCode(a))
NEXT
Codetmp = STR$(d)
PRINT "= "; Codetmp
CASE "^"
Codetmp = MID$(Code, INSTR(Code, "[") + 1)
Codetmp = MID$(Codetmp, 1, INSTR(Codetmp, "]") - 1)
Split SplitCode(), Codetmp, ";"
PRINT "^ ";
FOR a = 1 TO VAL(SplitCode(0))
PRINT SplitCode(a) + " ";
NEXT
d = VAL(SplitCode(1))
FOR a = 2 TO VAL(SplitCode(0))
d = d ^ VAL(SplitCode(a))
NEXT
Codetmp = STR$(d)
PRINT "= "; Codetmp
CASE "~"
Codetmp = MID$(Code, INSTR(Code, "[") + 1)
Codetmp = MID$(Codetmp, 1, INSTR(Codetmp, "]") - 1)
Split SplitCode(), Codetmp, ";"
PRINT "~ ";
FOR a = 1 TO VAL(SplitCode(0))
PRINT SplitCode(a) + " ";
NEXT
d = VAL(SplitCode(1))
FOR a = 2 TO VAL(SplitCode(0))
d = d XOR VAL(SplitCode(a))
NEXT
Codetmp = STR$(d)
PRINT "= "; Codetmp
CASE "@"
Codetmp = MID$(Code, INSTR(Code, "[") + 1)
Codetmp = MID$(Codetmp, 1, INSTR(Codetmp, "]") - 1)
Split SplitCode(), Codetmp, ";"
PRINT "@ ";
FOR a = 1 TO VAL(SplitCode(0))
PRINT SplitCode(a) + " ";
NEXT
d = VAL(SplitCode(1))
FOR a = 2 TO VAL(SplitCode(0))
d = d OR VAL(SplitCode(a))
NEXT
Codetmp = STR$(d)
PRINT "= "; Codetmp
CASE "#"
Codetmp = MID$(Code, INSTR(Code, "[") + 1)
Codetmp = MID$(Codetmp, 1, INSTR(Codetmp, "]") - 1)
Split SplitCode(), Codetmp, ";"
PRINT "# ";
FOR a = 1 TO VAL(SplitCode(0))
PRINT SplitCode(a) + " ";
NEXT
d = VAL(SplitCode(1))
FOR a = 2 TO VAL(SplitCode(0))
d = d AND VAL(SplitCode(a))
NEXT
Codetmp = STR$(d)
PRINT "= "; Codetmp
CASE "&"
Codetmp = MID$(Code, INSTR(Code, "[") + 1)
Codetmp = MID$(Codetmp, 1, INSTR(Codetmp, "]") - 1)
SELECT CASE Codetmp
CASE "0"
END
CASE "1"
CLS
END SELECT
END SELECT
END SUB
SUB Split (X$(), y2$, z$)
y$ = y2$ + z$
l% = LEN(z$)
i% = INSTR(y$, z$)
j% = 1
DO WHILE i%
K% = K% + 1
X$(K%) = MID$(y$, j%, i% - j%)
j% = i% + l%
i% = INSTR(j%, y$, z$)
LOOP
X$(0) = STR$(K%)
END SUB
上面的程序是个计算的;
运行还正常;
只是输入错误;
列如输入 *['as'ss's;
等不规则表达式时;
程序就有错误;
我想在MiddleCode过程设置错误陷阱;
可是QB提示错误信息;
所以我只能在在主过程里设置陷阱;
每次输入错误都要退出;烦;