回 帖 发 新 帖 刷新版面

主题:[原创]正则表达式的计算(利用QB编译器)

将下面程序保存到记事本中 ,另存为“main.bas”
如果使用qb4.5(解压到E:\qb\qb45 )  把main.bas放到E:\qb
进入E:\qb\qb45,打开QB.EXE(alt+f  alt+o)打开main.bas

如果是使用QBASIC.EXE,QBASIC.HLP
则把main.bas和QBASIC.EXE,QBASIC.HLP放到同一目录下
打开QBASIC.EXE(alt+f  alt+o)打开main.bas

COMMON y, express$, flag
IF flag = 0 THEN
  OPEN "temp.bas" FOR OUTPUT AS #1
  INPUT "y = ", express$
  PRINT #1, "COMMON y, express$, flag"
  PRINT #1, "flag = 1"
  PRINT #1, "y="; express$
  PRINT #1, "CHAIN " + CHR$(34) + "main.bas" + CHR$(34)
  PRINT #1, "END"
  CLOSE #1
  CHAIN "temp.bas"
ELSE
  PRINT express$; "="; y
  PRINT
  'SHELL "del temp.bas"
END IF
END

程序只能在解释方式下运行,编译成main.exe 则不能运行
运行实例:
y = 2+7*4
2+7*4= 30

y = 2*(3+4)
2*(3+4)= 14

回复列表 (共3个回复)

沙发

计算表达式是吧?

记得以前我也弄过喔,不用那么复杂.
只是我当时没弄返回值.那都不难了.

i$="3*6+4*5^3-48/12"
f$="计算.bas"
ff=freefile
open f$ for output as #ff
print #ff,"print ";i$          '呵呵,还可以更改输出到文件以便你再利用的
print #ff,"system"
close
run f$


如果要编译成EXE文件也不难的,
第二个文件就要改一改方式
改成
read i$
data "(                      )"
从编译好的EXE文件中找到Data的位置
每次都把表达式(最后规定好最大长度)写到这个位置上就OK了

板凳

我想做的是实时地从键盘输入表达式,然后计算出结果

你的程序实现方法和我的大致相同

问题在于利用CHAIN 或RUN 都需要QB编译器的支持
变成main.exe之后程序怎么运行?
READ、DATA怎么实现?

即便是你的 第二种方法也只是如此
不能脱离编译器

3 楼

呵呵
不好意思,我没想起来EXE文件的计算表达式不能用文本的,
这样子,第二个文件就不能用EXE文件了

  INPUT "y = ", express$
  if express$="" then end
  f$="temp.bas"
  ff=freefile
  open f$ for output as #ff
  print #ff,"print ";express$
  print #ff,"system"
  close #ff
  shell "qbx /run "+f$
  kill f$

只要QBx的目录path进去了,或者知道qbx所在的目录
这个文件还是可以做成EXE的,呵呵,不过还是需要QBX,哈哈,(我承认死要脸的,哈哈)

我来回复

您尚未登录,请登录后再回复。点此登录或注册