用第三方控件(如rxLIB),我这里有一个用pas写的: - Delphi(Pascal) code
// Borland C++ Builder
// Copyright (c) 1995, 2002 by Borland Software Corporation
// All rights reserved
// (DO NOT EDIT: machine generated header) 'cmpEvaluator.pas' rev: 6.00
#ifndef cmpEvaluatorHPP
#define cmpEvaluatorHPP
#pragma delphiheader begin
#pragma option push -w-
#pragma option push -Vx
#include <Dialogs.hpp> // Pascal unit
#include <Forms.hpp> // Pascal unit
#include <Controls.hpp> // Pascal unit
#include <Graphics.hpp> // Pascal unit
#include <Classes.hpp> // Pascal unit
#include <SysUtils.hpp> // Pascal unit
#include <Messages.hpp> // Pascal unit
#include <Windows.hpp> // Pascal unit
#include <SysInit.hpp> // Pascal unit
#include <System.hpp> // Pascal unit
//-- user supplied -----------------------------------------------------------
namespace Cmpevaluator
{
//-- type declarations -------------------------------------------------------
class DELPHICLASS TExpressionEvaluator;
class PASCALIMPLEMENTATION TExpressionEvaluator : public Classes::TComponent
{
typedef Classes::TComponent inherited;
private:
AnsiString fExpression;
int pos;
char ch;
char __fastcall GetChar(void);
char __fastcall GetNonWhitespace(void);
void __fastcall SkipWhitespace(void);
Extended __fastcall CalcAddition(void);
Extended __fastcall CalcMultiplication(void);
Extended __fastcall CalcPower(void);
Extended __fastcall CalcSignedTerm(void);
Extended __fastcall CalcTerm(void);
Extended __fastcall CalcNumber(void);
Extended __fastcall CalcExpressionInBrackets(void);
public:
Extended __fastcall Calculate(void);
__property int Position = {read=pos, nodefault};
__published:
__property AnsiString Expression = {read=fExpression, write=fExpression};
public:
#pragma option push -w-inl
/* TComponent.Create */ inline __fastcall virtual TExpressionEvaluator(Classes::TComponent* AOwner) : Classes::TComponent(AOwner) { }
#pragma option pop
#pragma option push -w-inl
/* TComponent.Destroy */ inline __fastcall virtual ~TExpressionEvaluator(void) { }
#pragma option pop
};
//-- var, const, procedure ---------------------------------------------------
extern PACKAGE void __fastcall Register(void);
} /* namespace Cmpevaluator */
using namespace Cmpevaluator;
#pragma option pop // -w-
#pragma option pop // -Vx
#pragma delphiheader end.
//-- end unit ----------------------------------------------------------------
#endif // cmpEvaluator
使用时将该pas加入你的项目 ... #include "cmpEvaluator.hpp" ... TExpressionEvaluator *x=new TExpressionEvaluator(this); x->Expression="(2+3)*6" ; double y=x->Calculate(); ShowMessage(y);
|