Eval

Методы для исполнения скриптов Tcl

int Eval(script,int flags=0); 
 
Tcl_Obj ObjEval(script,int flags=0);
string  StringEval(script,int flags=0);
long  LongEval(script,int flags=0);
double  DoubleEval(script,int flags=0);

Eval исполняет скрипт передаваемый в виде MQL string или Tcl_Obj, вернёт код резeльтата TCL_OK если выполнение завершено без ошибок или TCL_ERROR, TCL_BREAK, TCL_CONTINUE (или иной код) если возникла ошибка при исполнении или скрипт вызвал 'return -code SOME_CODE'. Допустимые флаги - комбинация из TCL_EVAL_DIRECT (исполнить команду без компиляции объектов) TCL_EVAL_GLOBAL (исполнять скрипт на глобальном уровне)

Сам по себе результат или описание ошибки можно получить через Result()

Методы ObjEval StringEval и подобные исполняют скрипт и сразу возвращают реузльтат. В случае неуспеха будет возвращено пустое значение («» для строк, 0 для чисел

Пример:

Tcl *tcl;
...
if (tcl.Eval("info tclversion")!=TCL_OK) {
  string errorText=tcl.StringResult();
  PrintFormat("Error %s",errorText);
} else {
  double tclVersion=tcl.DoubleResult();
  PrintFormat("Tcl version %f",tclVersion);
}

см. также Call Result