对于这个问题,网上根本没有给出一个好的办法。无意间想到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
是不是很不错呀!