Parametro per ignore_error (evita la segnalazione di errori come Zero divide)
git-svn-id: svn://10.65.10.50/trunk@4525 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
c5419e2e34
commit
8b4afb6062
@ -186,10 +186,12 @@ TString& TEval_stack::peek_string()
|
||||
// TExpression
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
TExpression::TExpression(const char* expression, TTypeexp type)
|
||||
TExpression::TExpression(const char* expression, TTypeexp type, bool ignore_err)
|
||||
: _original(expression)
|
||||
|
||||
{
|
||||
_ignore_error=ignore_err;
|
||||
_error=0;
|
||||
_val = real(0.0);
|
||||
_dirty = TRUE;
|
||||
_type = type;
|
||||
@ -198,9 +200,11 @@ TExpression::TExpression(const char* expression, TTypeexp type)
|
||||
}
|
||||
|
||||
|
||||
TExpression::TExpression(TTypeexp type)
|
||||
TExpression::TExpression(TTypeexp type, bool ignore_err)
|
||||
: _original("")
|
||||
{
|
||||
_ignore_error=ignore_err;
|
||||
_error=0;
|
||||
_val = real(0.0);
|
||||
_dirty = FALSE;
|
||||
_type = type;
|
||||
@ -211,7 +215,8 @@ TExpression::TExpression(const TExpression & expr)
|
||||
: _code(expr._code), _var(expr._var),
|
||||
_val(expr._val), _dirty(expr._dirty),
|
||||
_type(expr._type), _original(expr._original),
|
||||
_user_func_defined(expr._user_func_defined)
|
||||
_user_func_defined(expr._user_func_defined),
|
||||
_ignore_error(expr._ignore_error),_error(expr._error)
|
||||
{
|
||||
}
|
||||
|
||||
@ -379,7 +384,10 @@ void TExpression::eval()
|
||||
if (r.is_zero())
|
||||
{
|
||||
if (!evalstack.peek_real().is_zero())
|
||||
print_error("Divisione per zero!");
|
||||
if (_ignore_error)
|
||||
_error=1;
|
||||
else
|
||||
print_error("Divisione per zero!");
|
||||
} else
|
||||
evalstack.peek_real() /= r;
|
||||
}
|
||||
|
@ -394,6 +394,10 @@ class TExpression : public TObject
|
||||
TVararray _var;
|
||||
// @cmember:(INTERNAL) Valore dell'espressione
|
||||
TValue _val;
|
||||
// @cmember:(INTERNAL) Indica se segnalare o no errori di valutazione
|
||||
bool _ignore_error;
|
||||
// @cmember:(INTERNAL) Diverso da 0 se la valutazione dell'espressione ha dato errori (ZERO DIV)
|
||||
int _error;
|
||||
// @cmember:(INTERNAL) TRUE se l'espressione e' stata modificata
|
||||
bool _dirty;
|
||||
// @cmember:(INTERNAL) TRUE se l'espressione ha almeno una funzione utente
|
||||
@ -475,11 +479,13 @@ public:
|
||||
const char* last_token() const;
|
||||
// @cmember Ritorna l'espressione originale
|
||||
const char * string() const { return _original; }
|
||||
// @cmember Ritorna eventuali errori
|
||||
int error() {return _error;}
|
||||
|
||||
// @cmember Costruttore (assegna l'estressione e il suo tipo)
|
||||
TExpression(const char* expression, TTypeexp type = _numexpr);
|
||||
TExpression(const char* expression, TTypeexp type = _numexpr, bool ignore_err=FALSE);
|
||||
// @cmember Costruttore (assegna il tipo dell'istruzione)
|
||||
TExpression(TTypeexp type = _numexpr);
|
||||
TExpression(TTypeexp type = _numexpr, bool ignore_err=FALSE);
|
||||
// @cmember Costruttore di copia
|
||||
TExpression(const TExpression & expr);
|
||||
// @cmember Distruttore
|
||||
|
Loading…
x
Reference in New Issue
Block a user