起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 965|回复: 0

代码计算表达式

[复制链接]
发表于 2008-8-22 15:37:31 | 显示全部楼层 |阅读模式
关键字:
    代码 计算 表达式 表达式计算器 TBizExpr

说明:
    在运行期,我们可以利用系统的表达式计算器(TBizExpr)计算表达式,获得结果。

var
  lExpr: TBizExpr;
  return: Variant;
begin
  lExpr := TBizExpr.Create(Context);
  try
    lExpr.Text := memoExpr.Text; //为计算器设置表达式
    return := lExpr.Calc;                //计算,返回结果
    memo1.Lines.Add(lExpr.Text + ' = ' + variants.VarToStr(return)); //显示计算结果
  finally
    lExpr.Free;
  end;
end;

表达式计算器声明:
NameSpace: Business.Model
--------------------------------------------------------------------------------
TBizExpr = class(Justep.System.Expr.TExpr)
public
  constructor create(AContext: TContext);
  procedure GetParamNames(AParams: Business.System.TStrings);
  property Context: TContext; readonly;
end;

NameSpace: Justep.System.Expr
--------------------------------------------------------------------------------
TExpr = class(Business.System.TObject)
protected
  procedure HandleLexer(E: Justep.System.Parser.IParseException);
  procedure HandleParser(E: Justep.System.Parser.IParseException);
  function QueryInterface(IID: Business.System.TGUID; Obj: TObject): Longint;
  function _AddRef: Longint;
  function _Release: Longint;
public
  constructor create;
  function Calc: TObject;
  function CalcSymbol(AItem: TExprItem; Symbol: TSymbol): TObject;
  function CreateBind(ANode: Justep.System.Parser.IASTNode): TExprItem;
  function CreateItem(ANode: Justep.System.Parser.IASTNode): TExprItem;
  procedure Destroy; override;
  function GetSymbol(AToken: TExprItem): TSymbol;
  function Parse(Expr: string): TExprItem;
  procedure Prepare;
  procedure ReplaceIdentity(ADict: Business.System.TStrings);
  procedure Reset;
  procedure Unprepare;
  property Adapters: TAdapterList; readonly;
  property FindSymbol: TFindSymbolEventList; readonly;
  property Root: TExprItem; readonly;
  property Symbols: Business.System.TStrings; readonly;
  property SymbolTable: TSymbolTable; readonly;
  property Text: string;
end;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-22 17:53 , Processed in 0.037973 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表