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:
parent
0a28e94038
commit
4ba2e58879
@ -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;
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user