public ValueEval evaluate(int srcRowIndex, int srcColumnIndex, ValueEval arg0, ValueEval arg1,ValueEval arg2) {try {String needle = TextFunction.evaluateStringArg(arg0, srcRowIndex, srcColumnIndex);String haystack = TextFunction.evaluateStringArg(arg1, srcRowIndex, srcColumnIndex);int startpos = TextFunction.evaluateIntArg(arg2, srcRowIndex, srcColumnIndex) - 1;if (startpos < 0) {return ErrorEval.VALUE_INVALID;}return eval(haystack, needle, startpos);} catch (EvaluationException e) {return e.getErrorEval();}}

public override ValueEval Evaluate(int srcRowIndex, int srcColumnIndex, ValueEval arg0, ValueEval arg1,ValueEval arg2){try{String needle = TextFunction.EvaluateStringArg(arg0, srcRowIndex, srcColumnIndex);String haystack = TextFunction.EvaluateStringArg(arg1, srcRowIndex, srcColumnIndex);int startpos = TextFunction.EvaluateIntArg(arg2, srcRowIndex, srcColumnIndex) - 1;if (startpos < 0){return ErrorEval.VALUE_INVALID;}return Eval(haystack, needle, startpos);}catch (EvaluationException e){return e.GetErrorEval();}}
