如何计算一个字符串型的函数表达式的值。如“(11+2)*5”的值

对于这个问题,网上根本没有给出一个好的办法。无意间想到SQL语言就是一种表达式语言。那么借助于SQL语言能否解决呢?经过试验,得到如下的方法,还真灵

function Calc(exp:string):string;
/// 上函数用来计算一个字符串表达式的值,结果为字符串
var
ado:tadoquery;
begin
ado:=tadoquery.Create(nil);
ado.Connection:=main_form.ADOConnection1;
ado.SQL.Clear;
ado.SQL.Text:=’select ‘+Exp;
ado.Open;
result:=ado.Fields[0].AsString;
ado.Close;
ado.Free;
end;

调用方法:

self.edit1.text:=calc(‘(11+2)*5’);

你就会得到 65

是不是很不错呀!

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

2 + 2 =