Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

atcl:call [2018/01/21 17:33] (текущий)
nektomk создано
Строка 1: Строка 1:
 +====== Call ======
 +
 +Вызов команд tcl
 +
 +<code c>
 +int Call(Tcl_Obj &​objv[],​int objc=WHOLE_ARRAY,​int flags=0);
 +int Call(Tcl_Obj command,​Tcl_Obj arg1,...);
 +
 +Tcl_Obj ObjCall(Tcl_Obj &​objv[],​int objc=WHOLE_ARRAY,​int flags=0);
 +Tcl_Obj ObjCall(Tcl_Obj command,​Tcl_Obj arg1,...);
 +
 +string StringCall(Tcl_Obj &​objv[],​int objc=WHOLE_ARRAY,​int flags=0);
 +string StringCall(Tcl_Obj command,​Tcl_Obj arg1,...);
 +...
 +  ​
 +</​code>​
 +**Call** вызывает команду интерпретатора и передаёт ей аргументы в виде Tcl_Obj. Аргументы могут быть переданны в виде массива(без ограничений на количество) или непосредственно до 10 шт. Возвращаемые значения и их интерпретация аналогичны [[Eval]]
 +
 +Пример:​
 +
 +<code c>
 +ATcl *tcl=new ATcl;
 +...
 +Tcl_Obj cmd=tcl.Ref(tcl.Obj("​join"​));​ // создать постоянный объект ​
 +if (tcl.Call(cmd,​tcl.Obj("​one two three"​),​tcl.Obj(","​))!=TCL_OK) {
 + Print("​Error in command"​);​   ​
 +} else {
 +  PrintFormat("​joined:​ %s",​StringResult());​ // "​joined : one,​two,​three"​
 +}
 +PrintFormat("​Another:​ %s",​StringCall(cmd,​tcl.Obj("​1 2 3"​),​tcl.Obj(";"​)) ); // "​Another:​ 1;2;3"
 +</​code>​
 +