Bonjour,

Je travaille sur un projet en C++. Nous y avons intégré un interpreteur TCL.

Tous marche nickel ,mais nous souhaiterions améliorer un point, si c'est faisable.

nous souhaiterions récupérer des traces d'erreurs TCL via le catch TCL.

Exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
catch {open tototo w} result
puts ${result}
result a la valeur de "filec5b8e30"

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
catch {mafonction } result
si une erreur result reste vide. Ce qui doit être normal.

la commande mafonction est ajoutée via Tcl_CreateCommand.
Nous avons créer pour nous une fonction TclSetError qui nous permet d'afficher une erreur personnalisée

Exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
int call_unsetTimeOut (ClientData clientdata, Tcl_Interp *interp, int argc, char *argv[])
{
	if (argc == 1)
	{
		dosomething
	}
	else
	{
		theApp.m_pTclInterpreter->TclSetError("ERROR %s : does not take any argument.", argv[0]);
		return TCL_ERROR; 
	}
 
	return TCL_OK;
}
J'ai bien essayer Tcl_AddObjErrorInfo ou Tcl_AddErrorInfo mais c'est complétement déconnant.

Est ce qu'il serait possible d'utiliser notre fonction TCSetError pour mettre à jour la variable du catch ? Ou en tout cas comment on la met à jour si on créer notre propre commande TCL ?

Est ce que j'ai été clair ou pas ?

Merci beaucoup

Ambroise Petitgenêt