Patch level :10.0

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
aggiunta la funzione ZZEROFILL da usare nelle maschere (serve quando si ha un campo non zerofill e lo si deve confrontare con un altro che ivece lo è: vedi maschere di co0)


git-svn-id: svn://10.65.10.50/trunk@20664 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2010-07-14 14:25:51 +00:00
parent 0a28e94038
commit 4ba2e58879
2 changed files with 15 additions and 4 deletions

View File

@ -827,6 +827,13 @@ void TExpression::eval()
evalstack.push(d.year());
}
break;
case _zerofill:
{
const int len = evalstack.pop_real().integer();
TString& s = evalstack.peek_string();
s.right_just(len, '0');
}
break;
default:
NFCHECK("operazione non valida %d", (int) instr.getsym());
break;
@ -846,14 +853,14 @@ HIDDEN char _tok[81];
TCodesym TExpression::tok2fun(const char* tok) const
{
const int MAX_TOK = 32;
const int MAX_TOK = 33;
HIDDEN const char* fnstr[MAX_TOK] = { "ANSI", "BETWEEN","CEIL", "CF_CHECK","COS",
"EXP", "EXP10", "IF", "LEFT", "LEN",
"LOG", "LOG10", "MAX", "MID", "MIN",
"NUM", "PERC", "PI_CHECK","POW", "RIGHT",
"ROUND", "SCORP", "SIN", "SQR", "SQRT",
"STR", "SUBSTR", "TAN", "TRIM", "TRUNC",
"UPPER", "YEAR" };
"UPPER", "YEAR", "ZEROFILL" };
HIDDEN TCodesym fntok[MAX_TOK] = { _ansi, _between, _ceil, _cfcheck, _cos,
_exp, _exp10, _if, _left, _len,
@ -861,7 +868,7 @@ TCodesym TExpression::tok2fun(const char* tok) const
_num, _perc, _picheck, _pow, _right,
_round, _scorp, _sin, _sqr, _sqrt,
_str, _substr, _tan, _trim, _trunc,
_upper, _year };
_upper, _year, _zerofill };
int f = 0, l = MAX_TOK-1, i = MAX_TOK/2;
for (;;)
@ -1011,10 +1018,12 @@ TCodesym TExpression::__gettoken()
_tok[i] = '\0';
return _semicolon;
case '(' :
case '{' :
_tok[i++] = *(_s++);
_tok[i] = '\0';
return _lpar;
case ')' :
case '}' :
_tok[i++] = *(_s++);
_tok[i] = '\0';
return _rpar;
@ -1191,6 +1200,7 @@ TCodesym TExpression::__factor(TCodesym startsym)
case _scorp:
case _cfcheck:
case _picheck:
case _zerofill:
sym = __function(2);
_code.add(startsym);
break;

View File

@ -72,7 +72,8 @@ enum TCodesym {
_between, // @emem controlla se il primo argomento e' compreso tra gli altri due
_cfcheck, // @emem controlla il codice fiscale (+stato)
_picheck, // @emem controlla la partita IVA (+stato)
_year // @emem estrae l'anno da una data
_year, // @emem estrae l'anno da una data
_zerofill // @emem riepie di zeri l'inizio di una stringa
};
// @doc INTERNAL