public void evalFunction(cReportFormula formula) { String codeC = ""; m_objGlobals.setMode(eReportCompilerMode.C_EVAL); pEvalGroupFunctions(formula); cReportError.gDebugSection = formula.getSectionName(); cReportError.gDebugSectionLine = formula.getSectionLineIndex(); cReportError.gDebugControl = formula.getControlName(); m_formula = formula; pCompile(formula.getText(), false, codeC); if (formula.getFormulasInt().count() > 0) { if (G.isNumeric(codeC)) { pEvalSyntax("", codeC, false, formula); } else { if (cUtil.subString(codeC.Trim(), 0, 8).ToLower() == "function") { pEvalSyntax("", codeC, false, formula); } } } else { pEvalSyntax("", codeC, false, formula); } m_formula = null; }
// it compiles the code of every formula // first it replaces every internal function by // dummy return values (of the type of the internal function) // if after the replace there is code it call cReportScriptEngine.compileCode // if there are no errors it returns true // public bool checkSyntax(cReportFormula formula) { try { String code = ""; m_formula = formula; m_formula.getFormulasInt().clear(); // check syntax code = formula.getText(); m_formula.setTextC(code); pCheckSyntax(code); return true; } catch (Exception ex) { cError.mngError(ex, "checkSyntax", C_MODULE, ""); m_formula = null; m_fint = null; return false; } }