Adeguata valutazione della funzione mid con TString::mid
git-svn-id: svn://10.65.10.50/trunk@305 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
832f08d056
commit
a20472dccc
@ -455,12 +455,13 @@ void TExpression::eval()
|
||||
evalstack.push(s1);
|
||||
break;
|
||||
case _mid:
|
||||
o2 = (real&) evalstack.pop();
|
||||
o1 = (real&) evalstack.pop();
|
||||
o1 -= 1.00;
|
||||
s2 = (TString&) evalstack.pop();
|
||||
s1 = s2.mid((int)o1.integer(), (int)o2.integer());
|
||||
evalstack.push(s1);
|
||||
{
|
||||
int count = (int)((const real&)evalstack.pop()).integer();
|
||||
if (count == 0) count--;
|
||||
const int from = (int)((const real&)evalstack.pop()).integer() - 1;
|
||||
const TString& s = ((const TString&)evalstack.pop()).mid(from, count);
|
||||
evalstack.push(s);
|
||||
}
|
||||
break;
|
||||
case _pow:
|
||||
o2 = (real&) evalstack.pop();
|
||||
@ -468,8 +469,8 @@ void TExpression::eval()
|
||||
evalstack.push(pow(o1, o2));
|
||||
break;
|
||||
case _min:
|
||||
o2 = (real&) evalstack.pop();
|
||||
o1 = (real&) evalstack.pop();
|
||||
o2 = (real&)evalstack.pop();
|
||||
o1 = (real&)evalstack.pop();
|
||||
evalstack.push(fnc_min(o1, o2));
|
||||
break;
|
||||
case _max:
|
||||
@ -837,7 +838,7 @@ bool TExpression::compile(const char* expression, TTypeexp type)
|
||||
else
|
||||
{
|
||||
const int n2 = atoi(s2);
|
||||
sc << format(" mid(%s,%d,%d)", _tok, n1, (n2 < n1) ? -1 : n2 - n1 + 1);
|
||||
sc << format(" mid(%s,%d,%d)", _tok, n1, (n2 < n1) ? 0 : n2 - n1 + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user