我想在财务凭证转换的时候,让财务人员可以自行设定某个科目数值的计算公式,例如
应缴税款的计算方法就是:金额*17%
当然,可能还会涉及其他的运算,我就希望能让用户自行设定公式,然后程序在生成科目的时候,根据预设的公式自动计算该科目对应的金额,
现在就不知道该如何把用户定义的公式字符串转换为deiphi的计算公式?
应缴税款的计算方法就是:金额*17%
当然,可能还会涉及其他的运算,我就希望能让用户自行设定公式,然后程序在生成科目的时候,根据预设的公式自动计算该科目对应的金额,
现在就不知道该如何把用户定义的公式字符串转换为deiphi的计算公式?
function Evaluate(Expression: String): String;
var
Calc: Variant;
begin
Calc := CreateOleObject('ScriptControl');
try
Calc.Language := 'JavaScript';//or VBScript
Result := Calc.Eval(Expression);
except
Result := '';
end;
end;
var
I: Integer;
Expres: string;
const
Params: array [0..2] of string = ('金额', '数量', '回扣');
begin
Expres := '(金额*数量)*17%*(1-回扣)';
for I := 0 to High(Params) do
Expres := StringReplace(Expres, Params[I], VarToStrDef(ADODataSet1[Params[I]], '0'), [rfReplaceAll]);
Expres := StringReplace(Expres, '%', '/100', [rfReplaceAll]);
ShowMessage(Evaluate(Expres));
end;
PS:看到17%好熟悉啊