Постоянно выскакивала проблема с делением на ноль. Как от этого избавиться красиво?
Что испробовано:
- Сначала в методе checkDivisionByZero была добавлена проверка на
textBuffer.find('/(((0)+(0))-((0)+(0)))'), но это оказалось как мертвому припарка, потому что тут де выскочило сообщение типа
"((a+b)/((a+b) - (a+b)) - деление на ноль.
- Тогда в метод calculateColumnCalcListColumn был добавлен код
X++:
ZeroDivider = false;
dividerpos = strscan(str2, '/',1,999);
divider = substr(str2,dividerpos+1,strlen(str2)-dividerpos-1);
if (dividerpos != 0 && divider != '')
{
bufdevider = strfmt(buf, divider);
if (compiler.compile(bufdevider) && (! this.checkDivisionByZero(bufdevider)))
{
//BP Deviation documented
tmpAmount = runbuf(bufdevider);
}
else
{
// info(strfmt("@SYS85024", str2, _ledgerBalColumnsDim.Column, idx_calc));
tmpAmount = 0;
}
if (tmpAmount == 0)
ZeroDivider = true;
}
//if (compiler.compile(buf2) && (! this.checkDivisionByZero(buf2)))
if (compiler.compile(buf2) && (! this.checkDivisionByZero(buf2)) && !ZeroDivider)
{
...
и далее по тексту, но ведь если разобраться, то может быть вложенное деление на ноль...
Как же это сделать красиво, может кто нибудь уже боролся с этим?