From 75d190f902ba107a6c79ba2a26ee9fb5a9b8bd9a Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 29 Oct 1997 12:03:28 +0000 Subject: [PATCH] Aggiunta funzione len (di una stringa) alle espressioni git-svn-id: svn://10.65.10.50/trunk@5481 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- include/expr.cpp | 30 +++++++++++++++++++----------- include/expr.h | 1 + 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/include/expr.cpp b/include/expr.cpp index 82ed674fb..078627a54 100755 --- a/include/expr.cpp +++ b/include/expr.cpp @@ -577,6 +577,13 @@ void TExpression::eval() s1 = s1.sub(from, to); } break; + case _len: + { + TString s1(evalstack.pop_string()); + + evalstack.push(real(s1.len())); + } + break; case _pow: { const real & r2 = evalstack.pop_real(); @@ -709,20 +716,20 @@ HIDDEN char _tok[81]; TCodesym TExpression::tok2fun(const char* tok) const { - const int MAX_TOK = 26; + const int MAX_TOK = 27; HIDDEN const char* fnstr[MAX_TOK] = { "ANSI", "CEIL", "COS", "EXP", "EXP10", - "IF", "LEFT", "LOG", "LOG10", "MAX", - "MID", "MIN", "NUM", "PERC", "POW", - "RIGHT", "ROUND", "SCORP", "SIN", "SQR", - "SQRT", "STR", "SUBSTR","TAN", "TRUNC", - "UPPER"}; + "IF", "LEFT", "LEN", "LOG", "LOG10", + "MAX", "MID", "MIN", "NUM", "PERC", + "POW", "RIGHT", "ROUND", "SCORP", "SIN", + "SQR", "SQRT", "STR", "SUBSTR","TAN", + "TRUNC", "UPPER"}; HIDDEN TCodesym fntok[MAX_TOK] = { _ansi, _ceil, _cos, _exp, _exp10, - _if, _left, _log, _log10, _max, - _mid, _min, _num, _perc, _pow, - _right, _round, _scorp, _sin, _sqr, - _sqrt, _str, _substr, _tan, _trunc, - _upper}; + _if, _left, _len, _log, _log10, + _max, _mid, _min, _num, _perc, + _pow, _right, _round, _scorp, _sin, + _sqr, _sqrt, _str, _substr, _tan, + _trunc, _upper}; int f = 0, l = MAX_TOK-1, i = MAX_TOK/2; while (TRUE) @@ -1019,6 +1026,7 @@ TCodesym TExpression::__factor(TCodesym startsym) case _tan: case _ansi: case _upper: + case _len: sym = __function(1); _code.add(startsym); break; diff --git a/include/expr.h b/include/expr.h index 87fdbf58e..e17f8f109 100755 --- a/include/expr.h +++ b/include/expr.h @@ -66,6 +66,7 @@ enum TCodesym { _perc, // @emem Calcola la percentuale _scorp, // @emem Scorpora una percentuale _substr, // @emem Estrae una sottostringa + _len, // @emem Lunghezza di una stringa } ; // @doc INTERNAL