如何将字符串直接作为命令执行?如字符串G_Str为‘a:=b*c/d’,直接执行命令G_Str(50分)

  • 主题发起人 主题发起人 HunterTeam
  • 开始时间 开始时间
H

HunterTeam

Unregistered / Unconfirmed
GUEST, unregistred user!
我作了一个公式编辑的界面,编辑好的公式如何在程序中直接执行呢?如在vfp中象
上面的G_Str直接就可以用&G_Str执行。
 
先写一个可以执行运算你所编辑的公式的函数或是可执行文件,
然后在控制台调用这个函数,或是可执行文件。
这是编写shell的方法,
这有个unix下写shell的程序
你看看或许有帮助:
{ printf(“$”);
scanf(“% s”,&command);
检查命令的语法;
if (fork()==0)
{execlp(command,参数表,0);
}
if (command后缀!=‘&’)
wait( …);
…..
}
 
在网上找个脚本解释器控件吧,很多的
 
Sorry,我要的是能直接在Delphi中直接执行的代码,而不借助于外部可执行文件。如果
用函数,这函数又怎么个写法呢?
 
不记得了,在哪里看到过一个例子,是关于模仿简单的计算器的,当时也没太注意,但是
我想,你可以这样,写一个函数,如果在C++里可能会好处理一点,因为它的模板会让你
在处理返回值类型时,会轻松许多。在Delphi中,我想这样吧,
1。判断式子的合理性,(比如括号的排布等)原理:
a.从最左边开始,"("的个数始终不小于")"的个数
b.到最后,上述两个值相等
2。对式子进行更详细的分析,对其中的优先级进行判断,主要是,"( )","+","-","*","/"
3。在对上述的条件进行分析时,必须考虑递归,而且必须是两个终和考虑。
具体的代码会比较复杂,大概流程是这样的
式子有括号???
有 没有
找第一个左括号 直接按四则运算优先
funct 找下一个括号
找到的是右括号?? 那么上面的式子进行斯则运算 否则先把运算的式子
起始位置移到当前位置 。。。。。。goto funct

实在对不起,条件简陋,只能写成这样了,
 
我告诉你,编译型的语言很难做到这一点,除非你写一个自己的解析器。象楼上那位说的。
别把FOX的思想带到这儿来
 
接受答案了.
 
后退
顶部