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);
}
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;

View File

@ -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