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());
|
evalstack.push(d.year());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case _zerofill:
|
||||||
|
{
|
||||||
|
const int len = evalstack.pop_real().integer();
|
||||||
|
TString& s = evalstack.peek_string();
|
||||||
|
s.right_just(len, '0');
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
NFCHECK("operazione non valida %d", (int) instr.getsym());
|
NFCHECK("operazione non valida %d", (int) instr.getsym());
|
||||||
break;
|
break;
|
||||||
@ -846,14 +853,14 @@ HIDDEN char _tok[81];
|
|||||||
|
|
||||||
TCodesym TExpression::tok2fun(const char* tok) const
|
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",
|
HIDDEN const char* fnstr[MAX_TOK] = { "ANSI", "BETWEEN","CEIL", "CF_CHECK","COS",
|
||||||
"EXP", "EXP10", "IF", "LEFT", "LEN",
|
"EXP", "EXP10", "IF", "LEFT", "LEN",
|
||||||
"LOG", "LOG10", "MAX", "MID", "MIN",
|
"LOG", "LOG10", "MAX", "MID", "MIN",
|
||||||
"NUM", "PERC", "PI_CHECK","POW", "RIGHT",
|
"NUM", "PERC", "PI_CHECK","POW", "RIGHT",
|
||||||
"ROUND", "SCORP", "SIN", "SQR", "SQRT",
|
"ROUND", "SCORP", "SIN", "SQR", "SQRT",
|
||||||
"STR", "SUBSTR", "TAN", "TRIM", "TRUNC",
|
"STR", "SUBSTR", "TAN", "TRIM", "TRUNC",
|
||||||
"UPPER", "YEAR" };
|
"UPPER", "YEAR", "ZEROFILL" };
|
||||||
|
|
||||||
HIDDEN TCodesym fntok[MAX_TOK] = { _ansi, _between, _ceil, _cfcheck, _cos,
|
HIDDEN TCodesym fntok[MAX_TOK] = { _ansi, _between, _ceil, _cfcheck, _cos,
|
||||||
_exp, _exp10, _if, _left, _len,
|
_exp, _exp10, _if, _left, _len,
|
||||||
@ -861,7 +868,7 @@ TCodesym TExpression::tok2fun(const char* tok) const
|
|||||||
_num, _perc, _picheck, _pow, _right,
|
_num, _perc, _picheck, _pow, _right,
|
||||||
_round, _scorp, _sin, _sqr, _sqrt,
|
_round, _scorp, _sin, _sqr, _sqrt,
|
||||||
_str, _substr, _tan, _trim, _trunc,
|
_str, _substr, _tan, _trim, _trunc,
|
||||||
_upper, _year };
|
_upper, _year, _zerofill };
|
||||||
|
|
||||||
int f = 0, l = MAX_TOK-1, i = MAX_TOK/2;
|
int f = 0, l = MAX_TOK-1, i = MAX_TOK/2;
|
||||||
for (;;)
|
for (;;)
|
||||||
@ -1011,10 +1018,12 @@ TCodesym TExpression::__gettoken()
|
|||||||
_tok[i] = '\0';
|
_tok[i] = '\0';
|
||||||
return _semicolon;
|
return _semicolon;
|
||||||
case '(' :
|
case '(' :
|
||||||
|
case '{' :
|
||||||
_tok[i++] = *(_s++);
|
_tok[i++] = *(_s++);
|
||||||
_tok[i] = '\0';
|
_tok[i] = '\0';
|
||||||
return _lpar;
|
return _lpar;
|
||||||
case ')' :
|
case ')' :
|
||||||
|
case '}' :
|
||||||
_tok[i++] = *(_s++);
|
_tok[i++] = *(_s++);
|
||||||
_tok[i] = '\0';
|
_tok[i] = '\0';
|
||||||
return _rpar;
|
return _rpar;
|
||||||
@ -1191,6 +1200,7 @@ TCodesym TExpression::__factor(TCodesym startsym)
|
|||||||
case _scorp:
|
case _scorp:
|
||||||
case _cfcheck:
|
case _cfcheck:
|
||||||
case _picheck:
|
case _picheck:
|
||||||
|
case _zerofill:
|
||||||
sym = __function(2);
|
sym = __function(2);
|
||||||
_code.add(startsym);
|
_code.add(startsym);
|
||||||
break;
|
break;
|
||||||
|
@ -72,7 +72,8 @@ enum TCodesym {
|
|||||||
_between, // @emem controlla se il primo argomento e' compreso tra gli altri due
|
_between, // @emem controlla se il primo argomento e' compreso tra gli altri due
|
||||||
_cfcheck, // @emem controlla il codice fiscale (+stato)
|
_cfcheck, // @emem controlla il codice fiscale (+stato)
|
||||||
_picheck, // @emem controlla la partita IVA (+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
|
// @doc INTERNAL
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user