string内容的调用(50分)

  • 主题发起人 主题发起人 delphilike
  • 开始时间 开始时间
D

delphilike

Unregistered / Unconfirmed
GUEST, unregistred user!
我需要编程让用户输入函数表达式然后依此算出结果
如使用Edit控件让用户输入(按Pascal规则):x*x+x+1
在程序中,我需要将edit.text(即x*x+x+1)作为函数表达式
然后输入x的数值
计算出结果
不知该如何编程?
关键是如何将edit.txt这个string做为数学的表达式使用
 
啊哦,那你只好一个字符一个字符判断了
我记得小时候读数据结构时,好象有一个队列的例子就是讲那个的
 
好象有什么函数或者是转换符可以直接处理的吧
 
最简单的办法,引入M$的Script Control ActiveX控件,之后你就可以在程序
里面使用Javascript,VBscript了,解释性脚本语言哦,专门解释你的文本.
 
就在delphi里面可以处理吗?
难道OOP里面没有这样的函数或操作吗?
我记得好象foxbase里面都有的呀
 
delphilike: 凡是编译型的语言都不会有这样的功能,只有解释性的语言,比如
script,fox系列可以.
 
对对对,cAkk的方法不错
 
你们说的对,但是除了这个script的方法外
还有什么解决方法吗?
还请赐教,谢谢
因为我不懂script
 
我想您可以参考清华大学出版的《数据结构》一书。
书中专门有一节是讲对表达式求值的,还有 pascal
的源程序,我几年前曾经用C+给别人写过一个程序,
中就是照着这个例子程序写得。效果还不错。
如果你用这个方法写的话有什么问题都可以再和我联系。
zhuyii@mail.sc.cninfo.net
 
就自己编程解决吧.
 
没有现成的控件可寻,只得进行语法、词法检测自己编程实现啦?如
Sqr(x)+Sqrt(x)等;
 
自己编写一段代码,解释Text的含义,并转换成数学公式计算,应该不太难。
String也是可以通过下标访问每一个字符的,例如:
S:='abcdefg',那么S[1]就是字符'a',S[2]就是字符'b',诸如此类。
字符串的长度可以用Length函数测出。
用这种方法,可以判断Text表达式中有几个变量、几个运算符,以及它们的组合关系。
 
开两个堆栈,一个放数字,一个放运算符.用后进先出的方法编程实现.
其实这是<<编译系统>>里的内容.
记得以前教我们的那个教授就是搞编译系统的.还专门讲过这个问题呢.
 
真复杂.
干吗不用个控件? (到处都是)
然后在edit.onexit或onkeydown里面将edit.text附值给那个控件然后取得计算
结果然后edit.text := 该结果?

我这有一个古老的控件(TParser), 所做的就是求字符串形式的表达式的结果.
如果要的话我可以贴出来(网慢的别砸我).
 
能给我发一分拷贝来吗?
有多大?
我的邮箱是:liyusan@163.net
 
这是实际上是一个表达式求值的问题,可以用数据结构中的栈的思想来处理.对此你可以参考清华的<<数据结构>>一书,主要的麻烦是排除用户的非法输入.
 
我看需要研究一下《编译原理》等内容。
 
你可以用 SQL语句来实现。我做的一个程序中用户可以自定义字段及计算公式,
我想了好久,没有别的办法,就想起了SQL语句,
gongshi:='加班费=加班天数*加班补贴+10';
query1.sql.Clear;
query1.sql.Add('UPDATE gong SET ');
query1.sql.add(gongshi);
query1.ExecSQL;

 
后退
顶部