Aggiunta funzione len (di una stringa) alle espressioni

git-svn-id: svn://10.65.10.50/trunk@5481 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1997-10-29 12:03:28 +00:00
parent 7872861e54
commit 75d190f902
2 changed files with 20 additions and 11 deletions

View File

@ -577,6 +577,13 @@ void TExpression::eval()
s1 = s1.sub(from, to); s1 = s1.sub(from, to);
} }
break; break;
case _len:
{
TString s1(evalstack.pop_string());
evalstack.push(real(s1.len()));
}
break;
case _pow: case _pow:
{ {
const real & r2 = evalstack.pop_real(); const real & r2 = evalstack.pop_real();
@ -709,20 +716,20 @@ HIDDEN char _tok[81];
TCodesym TExpression::tok2fun(const char* tok) const 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", HIDDEN const char* fnstr[MAX_TOK] = { "ANSI", "CEIL", "COS", "EXP", "EXP10",
"IF", "LEFT", "LOG", "LOG10", "MAX", "IF", "LEFT", "LEN", "LOG", "LOG10",
"MID", "MIN", "NUM", "PERC", "POW", "MAX", "MID", "MIN", "NUM", "PERC",
"RIGHT", "ROUND", "SCORP", "SIN", "SQR", "POW", "RIGHT", "ROUND", "SCORP", "SIN",
"SQRT", "STR", "SUBSTR","TAN", "TRUNC", "SQR", "SQRT", "STR", "SUBSTR","TAN",
"UPPER"}; "TRUNC", "UPPER"};
HIDDEN TCodesym fntok[MAX_TOK] = { _ansi, _ceil, _cos, _exp, _exp10, HIDDEN TCodesym fntok[MAX_TOK] = { _ansi, _ceil, _cos, _exp, _exp10,
_if, _left, _log, _log10, _max, _if, _left, _len, _log, _log10,
_mid, _min, _num, _perc, _pow, _max, _mid, _min, _num, _perc,
_right, _round, _scorp, _sin, _sqr, _pow, _right, _round, _scorp, _sin,
_sqrt, _str, _substr, _tan, _trunc, _sqr, _sqrt, _str, _substr, _tan,
_upper}; _trunc, _upper};
int f = 0, l = MAX_TOK-1, i = MAX_TOK/2; int f = 0, l = MAX_TOK-1, i = MAX_TOK/2;
while (TRUE) while (TRUE)
@ -1019,6 +1026,7 @@ TCodesym TExpression::__factor(TCodesym startsym)
case _tan: case _tan:
case _ansi: case _ansi:
case _upper: case _upper:
case _len:
sym = __function(1); sym = __function(1);
_code.add(startsym); _code.add(startsym);
break; break;

View File

@ -66,6 +66,7 @@ enum TCodesym {
_perc, // @emem Calcola la percentuale _perc, // @emem Calcola la percentuale
_scorp, // @emem Scorpora una percentuale _scorp, // @emem Scorpora una percentuale
_substr, // @emem Estrae una sottostringa _substr, // @emem Estrae una sottostringa
_len, // @emem Lunghezza di una stringa
} ; } ;
// @doc INTERNAL // @doc INTERNAL