Initial release

This commit is contained in:
unknown
2015-10-19 14:27:31 +04:00
commit 32f28094bf
644 changed files with 94529 additions and 0 deletions

130
hlp/fr/tcl/SafeBase.htm Normal file
View File

@@ -0,0 +1,130 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>Safe Tcl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Safe Base - M<>canisme pour la cr<63>ation et la manipulation d'interpr<70>teurs s<>r.
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>::safe::interpCreate</b> ?<i>slave</i>? ?<i>options...</i>? <br>
<b>::safe::interpInit</b> <i>slave</i> ?<i>options...</i>? <br>
<b>::safe::interpConfigure</b> <i>slave</i> ?<i>options...</i>? <br>
<b>::safe::interpDelete</b> <i>slave</i> <br>
<b>::safe::interpAddToAccessPath</b> <i>slave</i> <i>directory</i> <br>
<b>::safe::interpFindInAccessPath</b> <i>slave</i> <i>directory</i> <br>
<b>::safe::setLogCmd</b> ?<i>cmd arg...</i>?
</div><br>
<div><b>OPTIONS</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">?<b>-accessPath</b> <i>pathList</i>? ?<b>-statics</b> <i>boolean</i>? ?<b>-noStatics</b>? ?<b>-nested</b> <i>boolean</i>? ?<b>-nestedLoadOk</b>? ?<b>-deleteHook</b> <i>script</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Safe Tcl est un m<>canisme pour ex<65>cuter des scripts Tcl <20>trangers sans risque et pour fournir un acc<63>s <20> de tels scripts potentiellement dangereux. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Safe Base s'assure que des scripts Tcl <20>trangers ne peuvent nuire <20> l'application h<>te. Safe Base pr<70>vient les attaques d'int<6E>grit<69> et de s<>curit<69>. Les scripts <20>trangers sont emp<6D>ch<63>s de corrompre l'<27>tat de l'application ou de l'ordinateur h<>te. Ces scripts sont <20>galement emp<6D>ch<63>s de r<>v<EFBFBD>ler l'information stock<63>e sur l'ordinateur principal ou dans l'application h<>te <20> n'importe quel espion. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Safe Base permet <20> un interpr<70>teur ma<6D>tre de cr<63>er des interpr<70>teurs s<>curis<69>s et restreints qui contiennent un ensemble d'alias pr<70>d<EFBFBD>finis pour les commandes <A HREF="163.htm"><b>source</b></A>, <A HREF="134.htm"><b>load</b></A>, <A HREF="111.htm"><b>file</b></A>, <A HREF="101.htm"><b>encoding</b></A>, et <A HREF="106.htm"><b>exit</b></A> et peuvent employer des m<>canismes d'auto-chargement et de paquet. </div>
<div ALIGN="LEFT" style="margin-left: 50px;">Aucune connaissance de la structure de syst<73>me de fichiers n'est n<>cessaire <20> l'interpr<70>teur s<>r, parce qu'il acc<63>de seulement <20> un chemin virtuel contenant des rep<65>res. Quand l'interpr<70>teur s<>r demande le source d'un fichier, il emploie les rep<65>res dans le chemin&nbsp; virtuel en tant qu'<27>l<EFBFBD>ment du nom du fichier; l'interpr<70>teur ma<6D>tre d'une mani<6E>re transparente traduit les rep<65>res en vrais noms de r<>pertoires et ex<65>cute l'op<6F>ration demand<6E>e (voir la section <b>SECURITE</b> ci-dessous pour les d<>tails). Diff<66>rents niveaux de s<>curit<69> peuvent <20>tre choisis en employant les flags optionnels des commandes d<>crites ci-dessous. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Toutes les commandes fournies dans l'interpr<70>teur ma<6D>tre par la commande Safe Base r<>sident dans le namespace <b>safe</b>: </div>
<br>
<div><b>COMMANDES</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les commandes suivantes sont fournies dans le ma<6D>tre interpr<70>teur:
<DL>
<DT><b>::safe::interpCreate</b> ?<i>slave</i>? ?<i>options...</i>?
</DT><DD>Cr<EFBFBD>e un interpr<70>teur s<>r, installe les alias d<>crits dans la section ALIAS et initialise le m<>canisme d'auto-chargement et de paquet comme indiqu<71> par les <A HREF="298.htm"><b>options</b></A> fournies. Voir la section <b>OPTIONS</b> ci-dessous pour un description de l optionnel arguments. ci-dessous pour une description des&nbsp; arguments facultatifs. Si l'argument <i>slave</i> est omis, un nom sera g<>n<EFBFBD>r<EFBFBD>.. <b>::safe::interpCreate</b> renvoie toujours le nom d'interpr<70>teur.
</DD>
<DT><br><b>::safe::interpInit</b> <i>slave</i> ?<i>options...</i>?
</DT><DD>Cette commande est identique <20> <b>interpCreate</b> except<70> qu'elle ne cr<63>e pas l'interpr<70>teur s<>r. <i>slave</i> doit avoir <20>t<EFBFBD> cr<63><72> par d'autres moyens, comme <b>interp </b><b>create-safe</b>.
</DD>
<DT><br><b>::safe::interpConfigure</b> <i>slave</i> ?<i>options...</i>?
</DT><DD>Si aucunes <i>options</i> ne sont donn<6E>es, renvoie les param<61>tres pour toutes les options de l'interpr<70>teur s<>r comme liste d'options et leurs valeurs courantes pour <i>slave</i>. Si un argument additionnel est fourni, renvoie une liste de 2 <20>l<EFBFBD>ments <i>name</i> et <i>value</i> o<> <i>name</i> est le nom complet de cette option et <i>value</i> la valeur courante pour cette option et <i>slave</i>. Si plus de deux arguments additionnels sont fournis, il modifiera l'interpr<70>teur s<>r et changera chacunes et seulement les option fournies. Voir la section <b>OPTIONS</b> ci-dessous pour la description d'options. Exemple d'utilisation:
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Cr<43>e un nouvel interp avec la m<>me configuration que &quot;&#36;i0&quot; :
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set i1 &#91;eval safe::interpCreate &#91;safe::interpConfigure &#36;i0]]
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Obtient le deleteHook courant<br>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set dh &#91;safe::interpConfigure &#36;i0&nbsp; -del]
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Change (seulement) l'attribut de chargement statics ok d'un interp
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# et son deleteHook (laissant le reste inchang<6E>) :<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;safe::interpConfigure &#36;i0&nbsp; -delete &#123;foo bar} -statics 0 ;<br>
</DD>
<DT><br><b>::safe::interpDelete</b> <i>slave</i>
</DT><DD>Efface l'interpr<70>teur s<>r et nettoie les structures de donn<6E>es&nbsp; principales correspondantes d'interpr<70>teur. Si un script <i>deleteHook</i> a <20>t<EFBFBD> sp<73>cifi<66> pour cet interpr<70>teur, il est <20>valu<6C> avant l'interpr<70>teur que soit effac<61>, avec le nom de l'interpr<70>teur comme argument additionnel.
</DD>
<DT><br><b>::safe::interpFindInAccessPath</b> <i>slave</i> <i>directory</i>
</DT><DD>Cette commande trouve et renvoie le jeton pour le vrai r<>pertoire <i>directory</i> de l'acc<63>s au chemin virtuel courant de l'interpr<70>teur s<>r. Elle g<>n<EFBFBD>re une erreur si le r<>pertoire n'est pas trouv<75>. Exemple d'utilisation:
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;slave eval &#91;list set tk_library &#91;::safe::interpFindInAccessPath &#36; name &#36;tk_library]]
</DD>
<DT><br><b>::safe::interpAddToAccessPath</b> <i>slave</i> <i>directory</i>
</DT><DD>Cette commande ajoute <i>directory</i> au chemin virtuel maintenu pour&nbsp; l'interpr<70>teur s<>r dans le ma<6D>tre, et retourne un jeton qui peut <20>tre utilis<69> dans l'interpr<70>teur s<>r pour obtenir acc<63>s aux fichiers dans ce r<>pertoire. Si le r<>pertoire est d<>j<EFBFBD> dans le chemin virtuel, elle renvoie seulement le jeton sans ajouter le r<>pertoire au chemin virtuel de nouveau. Exemple d'utilisation:
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp&#36;slave eval &#91;list set tk_library &#91;::safe::interpAddToAccessPath &#36;nom &#36; tk_library]]
</DD>
<DT><br><b>::safe::setLogCmd</b> ?<i>cmd arg...</i>?
</DT><DD>Cette commande installe un script qui sera appel<65> quand les&nbsp; <20>v<EFBFBD>nements int<6E>ressants du cycle de vie se produisent pour un&nbsp; interpr<70>teur s<>r. Une fois appel<65>e sans arguments, elle renvoie le script actuellement install<6C>. Si appel<65>e avec un&nbsp; argument, une cha<68>ne vide, le script actuellement install<6C> est&nbsp; enlev<65> et la journalisation est arr<72>t<EFBFBD>e. Le script sera appel<65> avec un argument suppl<70>mentaire, une cha<68>ne d<>crivant l'<27>v<EFBFBD>nement int<6E>ressant. Le but principal est d'aider le debugging des interpr<70>teur s<>rs. En utilisant ce service vous pouvez obtenir des message d'erreurs complets pendant que l'interpr<70>teur s<>r re<72>oit seulement des messages d'erreurs g<>n<EFBFBD>riques. Ceci emp<6D>che l'interpr<70>teur s<>r de voir des messages au sujet des <20>checs et d'autres <20>v<EFBFBD>nements qui pourraient contenir une information sensible telle que de vrais noms de r<>pertoire.
<br>Exemple d'utilisation:
<br>::safe::setLogCmd puts stderr
</DD>
</DL>
</div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Ci-dessous vous trouverez la sortie d'une session exemple dans laquelle un interpr<70>teur s<>r a essay<61> de &quot; sourcer &quot; un fichier non trouv<75> dans son chemin d'acc<63>s virtuel. Notez que l'interpr<70>teur s<>r a seulement re<72>u un message d'erreur disant que le fichier n'a pas <20>t<EFBFBD> trouv<75>: </div>
<div ALIGN="LEFT" style="margin-left: 153px;">NOTICE for slave interp10 : Created<br>
NOTICE for slave interp10 : Setting accessPath=(/foo/bar) staticsok=1 nestedok=0 deletehook=()<br>
NOTICE for slave interp10 : auto_path in interp10 has been set to &#123;&#36;p(:0:)}<br>
ERROR for slave interp10 : /foo/bar/init.tcl: no such file or directory</div>
</div><br>
<div><b>OPTIONS</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les options suivantes sont communes <20> <b>::safe::interpCreate</b>, <b>::safe::interpInit</b>, et <b>::safe::interpConfigure</b>. N'importe quel nom d'option peut <20>tre abr<62>g<EFBFBD> <20> son nom non-ambigu minimal. Les noms d'option ne sont ne sont pas sensibles <20> la casse.
<DL>
<DT><b>-accessPath</b> <i>directoryList</i></DT><DD>Cette option place la liste de r<>pertoires desquels l'interpr<70>teur s<>r peut <A HREF="163.htm"><b>source</b></A> et <A HREF="134.htm"><b>load</b></A> des fichiers. Si cette option n'est pas sp<73>cifi<66>e, ou si elle est donn<6E>e comme liste vide, l'interpr<70>teur s<>r emploiera les m<>me r<>pertoires que son ma<6D>tre pour auto-chargement. Voir la section <b>SECURITE</b> ci-dessous pour plus de d<>tail au sujet des chemins virtuels, des jetons et du contr<74>le d'acc<63>s.
</DD>
<DT><br><b>-statics</b> <i>boolean</i>
</DT><DD>Cette option indique si l'interpr<70>teur s<>r sera autoris<69> <20> charger les packages statiquement li<6C>s (comme <b>load &#123;} Tk</b>). La valeur par d<>faut est <b>true</b> : les interpr<70>teur s<>rs sont autoris<69> <20> charger les packages statiquement li<6C>s.
</DD>
<DT><br><b>-noStatics</b>
</DT><DD>Cette option est un raccourci de convenance pour <b>-statics false</b> et indique ainsi que l'interpr<70>teur s<>r ne sera pas autoris<69> <20> charger les packages statiquement li<6C>s.
</DD>
<DT><br><b>-nested</b> <i>boolean</i>
</DT><DD>Cette option sp<73>cifie si l'interpr<70>teur s<>r sera autoris<69> <20> charger des packages dans ses propre sous-interpr<70>teurs. La valeur par d<>faut est <b>false</b>: les interpr<70>teur s<>rs ne sont pas autoris<69> <20> charger de packages dans leurs propres interpr<70>teurs secondaires.
</DD>
<DT><br><b>-nestedLoadOk</b>
</DT><DD>Cette option est un raccourci de convenance pour <b>-nested true</b> et indique ainsi que l'interpr<70>teur s<>r sera autoris<69> <20> charger des packages dans ses propres interpr<70>teurs secondaires.
</DD>
<DT><br><b>-deleteHook</b> <i>script</i>
</DT><DD>Quand <20> cette option est donn<6E> un <i>script</i> non vide, elle est <20>valu<6C>e dans le ma<6D>tre avec le nom de l'interpr<70>teur s<>r comme argument additionnel juste avant supprimer r<>ellement l'interpr<70>teur s<>r. Donner une valeur vide enl<6E>ve n'importe quel script d'effacement actuellement install<6C> pour cet interpr<70>teur s<>r. La valeur par d<>faut (<b>&#123;}</b>) n'est n'avoir aucun appel de suppression.
</DD>
</DL>
</div><br>
<div><b>ALIAS</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les alias suivants sont fournis dans un interpr<70>teur s<>r:
<DL>
<DT><b>source</b> <i>fileName</i>
</DT><DD>Le fichier requis, un fichier source Tcl, est &quot;sourc<EFBFBD>&quot; dans interpr<70>teur s<>r s'il est trouv<75>. L'alias <A HREF="163.htm"><b>source</b></A> peut seulement &quot; <i>sourcer &quot; </i>les fichier des r<>pertoires qui se trouvent dans le chemin virtuel pour l'interpr<70>teur s<>r. L'alias <A HREF="163.htm"><b>source</b></A> exige de l'interpr<70>teur s<>r qu'il utilise un des noms de jeton dans son chemin virtuel pour d<>signer le r<>pertoire dans lequel le fichier a &quot;sourcer&quot; peut <20>tre trouv<75>. Voir la section sur la <b>SECURITE</b> pour une discussion plus approfondie des restrictions sur les noms de fichiers valides.
</DD>
<DT><br><b>load</b> <i>fileName</i>
</DT><DD>Le fichier requis, un fichier objet partag<61>, est charg<72> dynamiquement dans l'interpr<70>teur s<>r s'il est trouv<75>. Le nom de fichier doit contenir le nom d'un jeton mentionn<6E> dans le chemin virtuel de l'interpr<70>teur s<>r pour <20>tre trouv<75> avec succ<63>s. De plus, le fichier objet partag<61> doit contenir un point d'entr<74>e s<>r; voyez la page de manueluel de la commande <A HREF="134.htm"><b>load</b></A> pour plus de d<>tails.
</DD>
<DT><br><b>file</b> ?<i>subCmd args...</i>?
</DT><DD>L'alias <A HREF="111.htm"><b>file</b></A> donne acc<63>s <20> un sous ensemble s<>r des sous-commandes de&nbsp; <A HREF="111.htm"><b>file</b></A>; il permet seulement les sous-commandes <b>dirname</b>, <A HREF="127.htm"><b>join</b></A>, <b>extension</b>, <b>root</b>, <b>tail</b>, <b>pathname</b> et <A HREF="164.htm"><b>split</b></A>. Pour plus de d<>tails sur ces sous-commandes voyez la page de manueluel pour la commande<A HREF="111.htm"><b> file</b></A>.
</DD>
<DT><br><b>encoding</b> ?<i>subCmd args...</i>?
</DT><DD>L'alias <b>encoding</b> donne acc<63>s <20> un sous ensemble s<>r des sous-commandes de <A HREF="101.htm"><b>encoding</b></A> il interdit de fixer l'encodage syst<73>me, mais permet tout autre sous-commandes incluant <b>system</b> <20> v<>rifier l'encodage courant.
</DD>
<DT><br><b>exit</b>
</DT><DD>L'interpr<70>teur appelant est supprim<69> et son traitement est arr<72>t<EFBFBD>, mais le processus Tcl dans lequel cet interpr<70>teur existe n'est pas termin<69>.</DD>
</DL>
</div>
<br>
<div><b>SECURITE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La Safe Base n'essaye pas d'emp<6D>cher compl<70>tement les attaques d'ennui et de deni de service. Ces formes d'attaque emp<6D>chent temporairement l'application ou l'utilisateur d'utiliser l'ordinateur pour effectuer des t<>ches utiles, par exemple en consommant tout le temps CPU ou tout l'affichage disponible. Ces attaques, quoique graves, sont consid<69>r<EFBFBD>es comme moins importantes en g<>n<EFBFBD>ral que les attaques d'int<6E>grit<69> et d'intimit<69> que la Safe Base doit emp<6D>cher. </div>
<div ALIGN="LEFT" style="margin-left: 50px;">Les commandes disponibles dans un interpr<70>teur s<>r, en plus de&nbsp; l'ensemble s<>r comme d<>fini en page de manueluel d'<A HREF="126.htm"><b> interp</b></A>, sont des alias de <A HREF="163.htm"><b>source</b></A>, <A HREF="134.htm"><b>load</b></A>, <A HREF="106.htm"><b>exit</b></A>, et des sous-ensembles s<>rs de <A HREF="111.htm"><b>file</b></A> et <A HREF="101.htm"><b>encoding</b></A>. L'interpr<70>teur s<>r peut aussi auto-charger du code et il peut demander que des packages soient charg<72>s.. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Puisque certaines de ces commandes acc<63>dent au syst<73>me de fichiers local, il y a un danger potentiel de fuites d'information au sujet de la structure des r<>pertoires. Pour emp<6D>cher ceci, les commandes qui prennent des noms de fichier comme aguments dans un interpr<70>teur s<>r utilisent des jetons au lieu des noms r<>els de r<>pertoires. Ces jetons sont traduits en nom r<>el de r<>pertoire pendant qu'une requ<71>te pour, ex., sourcer un fichier est trait<69>e par le ma<6D>tre interpr<70>teur. Ce syst<73>me de chemin virtuel est maintenu dans l'interpr<70>teur principal pour chaque interpr<70>teur s<>r cr<63><72> par <b>::safe::interpCreate</b> ou initialis<69> par <b>::safe::interpInit</b> et le chemin pointe des jetons accessibles dans l'interpr<70>teur s<>r vers les noms de chemin r<>els sur le syst<73>me de fichier local emp<6D>chant de ce fait les interpr<70>teurs s<>rs de conna<6E>tre la structure du syst<73>me de fichiers de la machine sur lequel l'interpr<70>teur s'ex<65>cute. Les seuls arguments valides de noms de fichier pour les alias <A HREF="163.htm"><b>source</b></A> et <A HREF="134.htm"><b>load</b></A> fournis <20> l'esclave sont des chemin sous la forme de <b>&#91;file join</b><i>tokenfilename</i><b>]</b> (ie, en utilisant les formats natifs de chemin: <i>token</i><b>/</b><i>filename</i> sous Unix, <i>token</i><b>&#92;</b><i></i><A HREF="113.htm"><i>filename</i></A> sous Windows, et <i>token</i><b>:</b><i>filename</i> sur Mac), o<> <i>token </i>repr<EFBFBD>sente un des r<>pertoires de la liste <i>accessPath</i> et <i>filename</i> est un fichier dans ce r<>pertoire (on ne permet aucun acc<63>s aux sous-r<>pertoires). </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Quand un jeton est utilis<69> par un interpr<70>teur s<>r dans un requ<71>te pour &quot; sourcer &quot; ou charger un fichier, le jeton est v<>rifi<66> et traduit en un nom r<>el de chemin et le fichier a &quot;sourcer&quot; ou charg<72> est localis<69> sur le syst<73>me de fichier. L'interpr<70>teur s<>r n'a jamais connaissance du nom de chemin actuel sous lequel le fichier est stock<63> sur le syst<73>me de fichier. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Pour emp<6D>cher une fuite d'information potentielle <20> partir de fichiers sensibles accidentellement inclus dans l'ensemble de fichiers qui peut <20>tre &quot;sourc<EFBFBD>&quot; par un interpr<70>teur s<>r, l'alias <A HREF="163.htm"><b>source</b></A> restreint l'acc<63>s aux fichiers respectant les contraintes suivantes: le nom de chemin ne doit pas avoir plus de quatorze caract<63>res, ne doit pas contenir plus d'un point (&quot;<b>.</b>&quot;), doit finir avec l'extension <b>.tcl</b> ou <20>tre appel<65> <b>tclIndex</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Chaque <20>l<EFBFBD>ment de la liste initiale de chemin d'acc<63>s sera assign<67> <20> un jeton qui sera plac<61>e dans l'<b>auto_path </b>de l'esclave et le premier <20>l<EFBFBD>ment de cette liste sera fix<69> en tant que <b>tcl_library</b> pour cet esclave. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si l'argument de chemin d'acc<63>s n'est pas donn<6E> ou est une liste vide, le comportement par d<>faut est de laisser l'esclave acceder aux m<>mes packages que le ma<6D>tre (ou pour <20>tre plus pr<70>cis: seulement les packages <20>crits en Tcl (ne peuvent pas <20>tre dangereux tant qu'ils fonctionnent dans l'interpr<70>teur esclave) et les extensions C qui fournissent un point d'entr<74>e Safe_Init). Dans ce but, l'<b>auto_path</b> du ma<6D>tre sera employ<6F> pour construire le chemin d'acc<63>s de l'esclave. Pour que l'esclave charge avec succ<63>s la biblioth<74>que Tcl (qui inclut le m<>canisme d'auto-chargement) la <b>tcl_library</b> sera ajout<75>e ou d<>plac<61>e <20> la premi<6D>re position si n<>cessaire, dans le chemin d'acc<63>s de l'esclave, ainsi la <b>tcl_library</b> esclave sera la m<>me que celle du ma<6D>tre (son vrai chemin sera cependant toujours invisible <20> l'esclave). Pour que l'auto-chargement fonctionne de m<>me pour l'esclave et le ma<6D>tre dans ce cas par d<>faut, les sous r<>pertoires de premier-niveau de chaque r<>pertoire dans l'<b>auto_path</b> du ma<6D>tre sera aussi ajout<75> (si aucun n'est d<>j<EFBFBD> inclus) au chemin d'acc<63>s de l'esclave. Vous pouvez toujours indiquer un chemin plus restrictif pour lequel les sous r<>pertoires ne seront jamais recherch<63>s explicitement en sp<73>cifiant votre liste de r<>pertoires avec le flag <b>-accessPath</b> au lieu de compter sur ce m<>canisme par d<>faut. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Quand le <i>accessPath</i> est chang<6E> apr<70>s la premi<6D>re cr<63>ation ou l'initialisation (c.a.d au travers de <b>interpConfigure -accessPath</b><i>list</i>), un <A HREF="129.htm"><b>auto_reset</b></A> est automatiquement <20>valu<6C> dans l'interpr<70>teur s<>r pour synchroniser son <b>auto_index</b> avec la nouvelle liste de jetons <br>
</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><A HREF="126.htm">interp</A>(n), <A HREF="129.htm">library</A>(n), <A HREF="134.htm">load</A>(n), <A HREF="143.htm">package</A>(n), <A HREF="163.htm">source</A>(n), <A HREF="174.htm">unknown</A>(n)</div><br>
<div>Derni<EFBFBD>re r<>vision: 8.0</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="157.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="159.htm"><b>Suivant</b></A></div>
</BODY></HTML>

47
hlp/fr/tcl/Tcl.htm Normal file
View File

@@ -0,0 +1,47 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>Tcl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Tcl - Sommaire de la syntaxe du langage Tcl.</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les r<>gles suivantes definissent la syntaxe et la s<>mantique du langage Tcl:
<DL>
<DT>&#91;1]</DT><DD>Un script Tcl est une cha<68>ne contenant une ou plusieurs commandes. Les point-virgules et les sauts de lignes sont des s<>parateurs de commandes sauf plac<61>s entre guillemets comme d<>crit ci-dessous. Les crochets fermants sont des terminateurs de commande pendant la substitution de commande (voir ci-dessous) sauf plac<61>s entre guillemets.
</DD>
<DT><br>&#91;2]</DT><DD>Une commande est <20>valu<6C>e en deux <20>tapes. D'abord, l'interpr<70>teur Tcl divise la commande en <i>mots</i> et effectue les substitutions comme d<>crit ci-dessous. Ces substitutions sont effectu<74>es de la m<>me fa<66>on pour toutes les commandes. Le premier mot est utilis<69> pour localiser une commande <20> ex<65>cuter, ensuite tous les mots de la commande sont transmis <20> la fonction de la commande. La fonction de la commande est libre d'interpr<70>ter chacun des mots <20> sa guise, tel un entier, un nom de variable, une liste, ou un script Tcl. Diff<66>rentes commandes interpr<70>tent leurs mots diff<66>remment.</DD>
<DT><br>&#91;3]</DT><DD>Les mots d'une commande sont s<>par<61>s par un espace (except<70> les saut de lignes, qui sont des s<>parateurs de commandes). </DD>
<DT><br>&#91;4]</DT><DD>Si le premier caract<63>re d'un mot est un guillemet double(&quot;) alors le mot est termin<69> par le guillemet double suivant. Si des points-virgules, crochets fermants, ou un espace (incluant les sauts de lignes) apparaissent entre les guillemets alors ils sont trait<69>s comme des caract<63>res ordinaires et inclus dans le mot. Les substitution de commandes, substitution de variable , et la substitution backslash sont effectu<74>es sur les caract<63>res entre les guillemets comme d<>crit ci-dessous. Le double-guillemets ne sont pas retenus comme partie du mot.</DD>
<DT><br>&#91;5]</DT><DD>Si le premier caract<63>re d'un mot est une accolade ouvrante (&#123;) alors le mot est termin<69> par l'accolade fermante correspondante (}). Si les accolades sont imbriqu<71>es dans le mot: pour chaque accolade ouverte suppl<70>mentaire il doit y avoir une accolade fermante suppl<70>mentaire (n<>anmoins, si une accolade ouvrante ou fermante dans le mot est pr<70>c<EFBFBD>d<EFBFBD>e avec un antislash alors il n'est pas n<>cessaire de lui faire correspondre une accolade fermante). Aucune substitution n'est effectu<74>e sur les caract<63>res entre les accolades except<70> pour les substitutions backslash-newline d<>crites ci-dessous, et les points-virgules, saut de lignes, crochets fermants, ou l'espace ne font l'objet d'une quelconque interpr<70>tation sp<73>ciale. Le mot consistera en exactement les caract<63>res entre les accolades externes, non inclues les accolades elles-m<>me.</DD>
<DT><br>&#91;6]</DT><DD>Si un mot contient un crochet ouvert (&quot;&#91;&quot;) alors Tcl effectue une <i>substitution de </i><i>commande</i>. Pour ceci il appelle l'interpr<70>teur Tcl r<>cursivement pour traiter les caract<63>res suivants le crochet ouvert comme un script Tcl. Le script peut contiennent n'importe quel nombre de commandes et doit <20>tre termin<69> par un crochet ferm<72> (&quot;]&quot;). Le r<>sultat du script (i.e. le r<>sultat de sa derni<6E>re commande) est substitu<74> en un mot <20> la place des crochets et de tous les caract<63>res entre eux. Il peut y avoir quelconque nombre de substitution de commandess dans un seul mot. La substitution de commandes n'est pas effectu<74>e sur les mots entour<75>s d'accolades.</DD>
<DT><br>&#91;7]</DT><DD>Si un mot contient un signe dollar (&quot;&#36;&quot;) alors Tcl effectue une <i>substitution de </i><i>variable</i>:&nbsp; le signe dollar et les caract<63>res suivants sont remplac<61>s dans le mot par les valeur d'une variable. La substitution de variable peut prendre quelconque des formes suivantes:<DL>
<DT><b>&#36;</b><i>name</i><br></DT><DD><i>Name</i> est le nom d'une variable scalaire; le nom est termin<69> par tout caract<63>re qui n'est pas une lettre, un chiffre, ou un underscore.</DD>
<DT><b>&#36;</b><i>name</i><b>(</b><i>index</i><b>)</b><br></DT><DD><i>Name</i> donne le nom d'une variable tableau et <i>index</i> donne le nom d'un <20>l<EFBFBD>ment <20> l'int<6E>rieur du tableau. <i>Name</i> doit contenir seulement des lettres, chiffres, et underscores. La substitution de commandes, substitution de variables, et substitutions backslash sont effectu<74>es sur les caract<63>res de <i>index</i>.</DD>
<DT><b>&#36;&#123;</b><i>name</i><b>}</b><br></DT><DD><i>Name</i> est le nom d'une variable scalaire. Il peut contenir tous les caract<63>res except<70>s des accolades fermantes.</DD>
</DL>
Il peut y avoir n'importe quel nombre de substitution de variables dans un seul mot. La substitution de variables n'est pas effectu<74>e sur les mots entour<75>s d'accolades.</DD>
<DT><br>&#91;8]</DT><DD>Si un antislash (&quot;\&quot;) apparail <20> l'int<6E>rieur un mot alors une <i>substitution</i> <i>backslash </i>se produit. Dans tout les cas sauf ceux d<>crit ci-dessous le backslash est omis et le caract<63>re suivant est trait<69> comme un caract<63>re ordinaire et inclus dans le mot. Ceci permet aux caract<63>res tels que les double guillemets, crochets fermants, et signes dollar d'<27>tre inclus dans les mots sans d<>clencher de traitement sp<73>cial. La table suivante liste les sequences backslash qui sont g<>r<EFBFBD>es sp<73>cialement, avec la valeur qui remplace chaque s<>quence. <DL>
<DT>\<b>a</b><br></DT><DD>Bip (bell) (0x7). </DD>
<DT>\<b>b</b><br></DT><DD>Retour arri<72>re (0x8). </DD>
<DT>\<b>f</b><br></DT><DD>Saut de page (0xc). </DD>
<DT>\<b>n</b><br></DT><DD>Saut de ligne (0xa).</DD>
<DT>\<b>r</b><br></DT><DD>Retour chariot (0xd). </DD>
<DT>\<b>t</b><br></DT><DD>Tabulation (0x9).</DD>
<DT>\<b>v</b><br></DT><DD>Tabulation verticale (0xb).</DD>
<DT>\<b>&lt;newline&gt;</b><i>whiteSpace</i><br></DT><DD>Un espace remplace les backslash, newline, et tout les espaces et tabulationss apr<70>s le saut de ligne. Cette s<>quence backslash est unique dans le sens ou elle est remplac<61>e dans un pre-traitement s<>par<61> avant que la commande soit analys<79>e. Ceci signifie qu'elle sera remplac<61>e m<>me quand elle se produit entre accolades, et l'espace r<>sultant sera trait<69> comme un separateur de mot s'il n'est pas entre accolades ou guillemets.</DD>
<DT>\\<br></DT><DD>Backslash (&quot;\&quot;). </DD>
<DT>\<i>ooo</i> <br></DT><DD>Les chiffres <i>ooo</i> (un, deux, ou les trois ) donnent la valeur octale sur huit bits du caract<63>re Unicode qui sera ins<6E>r<EFBFBD>. Les bits forts du caract<63>re Unicode seront <20> 0. </DD>
<DT>\<b>x</b><i>hh</i> <br></DT><DD>Les chiffres hexad<61>cimaux <i>hh</i> donnent la valeur hexad<61>cimale sur huit bits du caract<63>re Unicode qui sera ins<6E>r<EFBFBD>. N'importe quel nombre de chiffres hexad<61>cimaux peuvent <20>tre pr<70>sents; n<>anmoins, tout sauf les deux derniers sont ignor<6F>s (le r<>sultat est toujours une quantit<69> sur un octet). Les bits forts du caract<63>re Unicode seront <20> 0.</DD>
<DT>\<b>u</b><i>hhhh</i> <br</DT><DD>Les chiffres hexad<61>cimaux <i>hhhh</i> (un, deux, trois, ou les quatre) donnent la valeur hexad<61>cimale sur seize bit du caract<63>re Unicode qui sera ins<6E>r<EFBFBD>.</DD>
</DL>
La substitution backslash n'est pas effectu<74>e sur les mots entour<75>s d'accolades, except<70> pour backslash-newline comme d<>crit plus haut.
</DD>
<DT><br>&#91;9]</DT><DD>Si un caract<63>re di<64>se (&quot;#&quot;) apparait <20> un point o<> Tcl attend le premier caract<63>re du premier mot d'une commande, alors le caract<63>re di<64>se et les caract<63>res qui suivent, jusqu'au saut de ligne suivant, sont consid<69>r<EFBFBD>s comme des commentaires et ignor<6F>s. Le caract<63>re commentaire a seulement une signification quand il apparait au d<>but d'une commande.</DD>
<DT><br>&#91;10]</DT><DD>Chaque caract<63>re est trait<69> exactement une fois par l'interpr<70>teur Tcl comme partie de la cr<63>ation des mots d'une commande. Par exemple, si une substitution de variable se produit alors aucune substitution suivante n'est effectu<74>e sur la valeur de la variable; la valeur est ins<6E>r<EFBFBD>e dans le mot texto. Si une substitution de commandes se produit alors la commande imbriqu<71>e est trait<69>e enti<74>rement par l'appel recursif de l'interpr<70>teur Tcl; aucune substitution n'est effectu<74>e avant l'appel recursif et aucune substitution suppl<70>mentaire n'est effectu<74>e dans le r<>sultat du script imbriqu<71>.</DD>
<DT><br>&#91;11]</DT><DD>Les substitutions n'affectent pas les limites des mots d'une commande. Par exemple, pendant une substitution de variable la valeur totale de la variable devient une partie d'un simple mot, m<>me si la valeur de la variable contient des espaces. </DD>
</DL>
</div>
<div>Derni<EFBFBD>re r<>vision: 8.1</div>
</BODY></HTML>

309
hlp/fr/tcl/Tcltest.htm Normal file
View File

@@ -0,0 +1,309 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>Tcltest&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Tcltest -&nbsp; Support du syst<73>me de test et utilitaires<br>
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>package require tcltest ?1.0?</b> <br>
<b>::tcltest::test </b><i>name desc ?constraint? script expectedAnswer</i> <br>
<b>::tcltest::cleanupTests </b><i>?runningMultipleTests?</i> <br>
<b>::tcltest::getMatchingTestFiles</b> <br>
<b>::tcltest::loadTestedCommands</b> <br>
<b>::tcltest::makeFile </b><i>contents name</i> <br>
<b>::tcltest::removeFile </b><i>name</i> <br>
<b>::tcltest::makeDirectory </b><i>name</i> <br>
<b>::tcltest::removeDirectory </b><i>name</i> <br>
<b>::tcltest::viewFile </b><i>name</i> <br>
<b>::tcltest::normalizeMsg </b><i>msg</i> <br>
<b>::tcltest::bytestring </b><i>string</i> <br>
<b>::tcltest::saveState</b> <br>
<b>::tcltest::restoreState</b> <br>
<b>::tcltest::threadReap</b> <br>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Le package <b>tcltest</b> fournit <20> l'utilisateur des utilitaires pour <20>crire et faire fonctionner des tests dans le syst<73>me de test Tcl. Il peut <20>galement <20>tre utilis<69> pour cr<63>er un syst<73>me de test personnalis<69> pour une extension.</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Le syst<73>me de test Tcl comporte de multiples fichiers .test, chacun d'entre eux comprenant plusieurs cas de test. Chaque test comporte un appel <20> la commande test, qui indique le nom du test, une description br<62>ve, les contraintes qui s'appliquent au cas test<73>, le script <20> ex<65>cuter, et les r<>sultats attendus. Voir les sections <i>&quot;Tests&quot;</i>, <i>&quot;Contraintes de test&quot;</i>, et <i>&quot; Faire </i><i>fonctionner les fichiers de test &quot;</i> pour plus d'informations.
<br>Il est <20>galement possible d'enrichir ce syst<73>me de test pour mettre en place votre propre syst<73>me de test sur mesure. Pour plus d'information, voir la section <i>&quot;Personnaliser le syst<73>me </i><i>de test&quot;</i>.
<br>Cette approche pour tester a <20>t<EFBFBD> con<6F>ue et initialement mise en place par Mary Ann May-Pumphrey de Sun Microsystems au d<>but des ann<6E>es 1990. Nous lui adressons de sinc<6E>res remerciements pour avoir fait don de son travail au profit de la version publique de Tcl.</div>
<br><div><b>COMMANDES</b></div>
<br><div ALIGN="LEFT" style="margin-left: 51px;">
<DL>
<DT> <b>::tcltest::test</b> <i>name desc ?constraints? script expectedAnswer</i></DT><DD>La commande <b>::tcltest::test</b> lance <i>script</i> et compare son r<>sultat <20> <i>expectedAnswer</i>. Elle imprime un message d'erreur si les deux ne correspondent pas. Si<b>::tcltest::verbose</b> contient &quot;p&quot; ou &quot;s&quot;, elle imprime aussi un message si le test r<>ussit (p: <i>passed</i>) ou a <20>t<EFBFBD> omis (s: <i>skipped</i>). Le test sera omis s'il ne correspond pas <20> la variable <b>::tcltest::match</b>, s'il correspond <20> l'un des <20>l<EFBFBD>ments de <b>::tcltest::skip</b>, ou si l'un des <20>l<EFBFBD>ments de <i>constraints</i> s'av<61>re ne pas <20>tre vrai. La commande <b>::tcltest::test</b> n'a pas de valeur de retour d<>finie. Voir la section <i>&quot;Ecrire un nouveau </i><i>test&quot;</i> pour plus d'informations sur cette commande.</DD>
<DT><b>::tcltest::cleanupTests</b> <i>?runningMultipleTests?</i></DT><DD>Cette commande doit normalement <20>tre appel<65>e <20> la fin d'un fichier de test. Elle imprime des statistiques au sujet des tests <20>x<EFBFBD>cut<75>s et supprime les fichiers cr<63><72>s par <b>::tcltest::makeDirectory</b> et <b>::tcltest::makeFile</b>. Les noms des fichiers et r<>pertoires cr<63><72>s en dehors de <b>::tcltest::makeFile</b> et <b>::tcltest::makeDirectory</b>, et qui n'ont jamais <20>t<EFBFBD> d<>truits, sont affich<63>s dans <b>::tcltest::outputChannel</b>. Cette commande restaure <20>galement l'environnement d'<27>x<EFBFBD>cution initial, tel que d<>crit par le tableau ::env.<i>calledFromAll</i> doit normalement <20>tre indiqu<71> quand <b>::tcltest::cleanupTests</b> est appel<65> depuis un fichier &quot;all.tcl&quot;. Des fichiers Tcl sont g<>n<EFBFBD>ralement utilis<69>s pour ex<65>cuter des tests multiples. Pour plus d'information sur comment ex<65>cuter des tests multiples, voir la section <i>&quot;Ex<EFBFBD>cuter des fichiers de test&quot;</i>. Cette proc<6F>dure n'a pas de valeur de retour d<>finie. </DD>
<DT><b>::tcltest::getMatchingTestFiles</b></DT><DD>Cette commande est utilis<69>e quand vous voulez ex<65>cuter plusieurs fichiers de test. Elle retourne la liste des tests qui doivent <20>tre sourc<72>s dans un fichier &quot;all.tcl&quot;. Voir la section <i>&quot;Ex<EFBFBD>cuter des fichiers de test&quot;</i> pour plus d'informations.</DD>
<DT><b>::tcltest::loadTestedCommands</b></DT><DD>Cette commande utilise le script indiqu<71> par l'option <i>-load</i> ou <i>-loadfile</i> pour charger les commandes test<73>es par le syst<73>me de test. Autoris<69>e <20> <20>tre vide, dans le cas o<>; les commandes test<73>es sont accumul<75>es dans&nbsp; l'interpr<70>teur qui <20>x<EFBFBD>cute le syst<73>me de test.</DD>
<DT><b>::tcltest::makeFile</b> <i>contents name</i><br></DT><DD>Cr<EFBFBD>e un fichier qui sera automatiquement supprim<69> par <b>::tcltest::cleanupTests </b><EFBFBD> la fin du fichier de test. Cette proc<6F>dure n'a pas de valeur de retour d<>finie.</DD>
<DT><b>::tcltest::removeFile</b> <i>name</i><br></DT><DD>Force la suppression du fichier r<>f<EFBFBD>renc<6E> par <i>name</i>. Ce nom de fichier doit <20>tre indiqu<71> en r<>f<EFBFBD>rence au <i>::tcltest::temporaryDirectory</i>. Cette proc<6F>dure n'a pas de valeur de retour d<>finie.</DD>
<DT><b>::tcltest::makeDirectory</b> <i>name</i></DT><DD>Cr<EFBFBD>e un r<>pertoire <i>name</i>, qui sera automatiquement supprim<69> par <b>::tcltest::cleanupTests </b><EFBFBD> la fin du fichier de test. Cette proc<6F>dure n'a pas de valeur de retour d<>finie.</DD>
<DT><b>::tcltest::removeDirectory</b> <i>name</i><br></DT><DD>Force la suppression du fichier r<>f<EFBFBD>renc<6E> par <i>name</i>. Cette proc<6F>dure n'a pas de valeur de retour d<>finie.</DD>
<DT><b>::tcltest::viewFile</b> <i>file</i><br></DT><DD>Renvoie le contenu de <i>file</i>.</DD>
<DT><b>::tcltest::normalizeMsg</b> <i>msg</i><br></DT><DD>Retire les fins de lignes superflues de <i>msg</i>. </DD>
<DT><b>::tcltest::bytestring</b> <i>string</i><br></DT><DD>Construit une cha<68>ne qui se compose de la suite des octets demand<6E>s, et non la cha<68>ne form<72>e de caract<63>res UTF-8 corrects, <20> partir de la valeur de <i>string</i>. Cela permet au testeur de cr<63>er des cha<68>nes d<>normalis<69>es ou impropement form<72>es, pour les passer <20> des proc<6F>dures C qui sont suppos<6F>es accepter des cha<68>nes comprenant des NULL, et confirmer que le r<>sultat sous forme de cha<68>ne correspond bien <20> la suite d'octets pr<70>vue.</DD>
<DT><b>::tcltest::saveState</b><br></DT><DD>et <b>::tcltest::restoreState</b> sauvent et restaurent les proc<6F>dures et les variables globales. Un fichier de test peut contenir des appels <20> <b>::tcltest::saveState</b> et <b>::tcltest:restoreState</b> s'il cr<63>e des variables globales ou des proc<6F>dures.</DD>
<DT><b>::tcltest::threadReap</b><br></DT><DD><b>::tcltest::threadReap</b> fonctionne seulement si <i>testthread</i> est d<>fini, g<>n<EFBFBD>ralement en compilant tcltest. Si <i>testthread</i> est d<>fini, <b>::tcltest::threadReap</b> tue tous les threads <20> l'exception du thread principal. Il r<>cup<75>re l'ID du thread principal en appelant <i>testthread names</i> pendant l'initialisation. Cette valeur est stock<63>e dans <i>::tcltest::mainThread</i>.&nbsp; <b>::tcltest::threadReap </b>retourne le nombre de threads existants en tout. (?)</DD>
</DL>
</div><br>
<div><b>TESTS</b></div><br>
<b></b><div ALIGN="LEFT" style="margin-left: 51px;">La proc<6F>dure <b>test </b><EFBFBD>x<EFBFBD>cute un script de test est affiche un message d'erreur si le r<>sultat du script ne correspond pas au r<>sultat attendu. Voici la sp<73>cification de la commande <b>test</b> : </div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 51px;">test &lt;name&gt; &lt;description&gt; ?&lt;constraint&gt;? &lt;script&gt; &lt;expectedAnswer&gt;<br>
</div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 51px;">L'argument &lt;name&gt; doit ob<6F>ir au motif:</div>
<div ALIGN="LEFT" style="margin-left: 51px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;target&gt;-&lt;majorNum&gt;.&lt;minorNum&gt;</div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 51px;">Pour les tests &quot;en bo<62>te blanche&quot; (tests de r<>gression), la cible &lt;target &gt; doit <20>tre le nom de la fonction C ou de la proc<6F>dure Tcl&nbsp; qui est test<73>e. Pour les tests &quot;en bo<62>te noire&quot;, la cible&nbsp; &lt;target&gt; doit <20>tre le nom de la fonctionnalit<69> test<73>e.&nbsp; Des tests apparent<6E>s doivent avoir le m<>me num<75>ro majeur &lt;majorNum&gt;.</div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 51px;">L'argument &lt;description&gt; est une courte description textuelle du test, pour aider les personnes <20> comprendre ce qui est test<73>. Le nom de la fonction Tcl ou C devrait y <20>tre inclus pour les tests de r<>gression. Si le cas de test est d<>fini pour reproduire un bug, inclure l'identifiant (bugID) dans la description. </div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 51px;">L'argument optionnel &lt;constraints&gt; peut <20>tre une liste d'un ou plusieurs mots-cl<63>s ou une expression. Si l'argument &lt;constraints&gt; se compose de mots-cl<63>s, chacun d'entre eux doit <20>tre le nom d'un <20>l<EFBFBD>ment du tableau <i>::tcltest::testConstraints</i>.&nbsp; Si l'un de ces <20>l<EFBFBD>ments est faux ou n'existe pas, le test est saut<75>. Si l'argument &lt;constraints&gt; est une expression, cette expression sera <20>valu<6C>e: si le r<>sultat est vrai, alors le test sera <20>x<EFBFBD>cut<75>.</div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 51px;">Ajoutez des contraintes appropri<72>es (par exemple, unixOnly) pour les tests qui ne doivent pas toujours <20>tre <20>x<EFBFBD>cut<75>s. Par exemple, un test qui ne doit <20>tre effectu<74> que sur Unix devrait ressembler <20>:</div>
<div ALIGN="LEFT" style="margin-left: 102px;">test getAttribute-1.1 &#123;testing file permissions} &#123;unixOnly} &#123;<br>
&nbsp;&nbsp;&nbsp; lindex &#91;file attributes foo.tcl] 5<br>
} &#123;00644}</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Exemple de test contenant une expression: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">test unixNotfy-1.1 &#123;Tcl_DeleteFileHandler} &#123;unixOnly &amp;&amp; !testthread} &#123;<br>
&nbsp;&nbsp;&nbsp; catch &#123;vwait x}<br>
&nbsp;&nbsp;&nbsp; set f &#91;open foo w]<br>
&nbsp;&nbsp;&nbsp; fileevent &#36;f writable &#123;set x 1}<br>
&nbsp;&nbsp;&nbsp; vwait x<br>
&nbsp;&nbsp;&nbsp; close &#36;f<br>
&nbsp;&nbsp;&nbsp; list &#91;catch &#123;vwait x} msg] &#36;msg<br>
} &#123;1 &#123;ne peut pas attendre la variable &quot;x&quot;:&nbsp; attendrait ind<6E>finiment }}<br>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Voir la section <i>&quot;Contraintes de Test&quot;</i> pour la liste des contraintes pr<70>d<EFBFBD>finies et pour savoir comment ajouter vos propres contraintes.</div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 51px;">L'argument &lt;script&gt; contient le script a ex<65>cuter pour effectuer le test. Il doit retourner un r<>sultat dont la validit<69> peut <20>tre v<>rifi<66>e. Si votre script demande qu'un fichier soit cr<63><72> <20> la vol<6F>e, utilisez svp la proc<6F>dure ::tcltest::makeFile. Si votre test demande qu'un petit fichier (moins de 50 lignes) soit contr&ocirc;l<EFBFBD> en lecture, svp pensez <20> cr<63>er le fichier <20> la vol<6F>e en utilisant la proc<6F>dure ::tcltest::makeFile. Les fichiers cr<63><72>s par la proc<6F>dure ::tcltest::makeFile seront automatiquement supprim<69>s par la proc<6F>dure ::tcltest::cleanupTests appel<65>e <20> la fin de chaque fichier de test.</div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 51px;">L'argument &lt;expectedAnswer&gt; sera compar<61> au r<>sultat de l'<27>valuation de l'argument &lt;script&gt;. S'ils correspondent, le test passe, sinon il <20>choue.</div>
<br>
<div><b>LES VARIABLES DU NAMESPACE TCLTEST</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les variables suivantes sont d<>finies dans le namespace tcltest et peuvent <20>tre utilis<69>es par des tests:
<DL>
<DT><b>::tcltest::outputChannel</b></DT><DD>outputfileID - par d<>faut stdout, peut <20>tre pr<70>cis<69> en indiquant -outfile sur la ligne de commande. Tout test qui imprime des r<>sultats devrait envoyer cette sortie <20> <i>::tcltest::outputChannel</i> plut&ocirc;t que de sortir par d<>faut sur stdout.</DD>
<DT><br><b>::tcltest::errorChannel</b></DT><DD>errorfileID - par d<>faut stderr, peut <20>tre pr<70>cis<69> en indiquant -errfile sur la ligne de commande. Tout test qui imprime des messages d'erreur devrait le faire vers <i>::tcltest::errorChannel </i>plut&ocirc;t que directement dans stderr.</DD>
<DT><br><b>::tcltest::mainThread</b></DT><DD>main thread ID - 1 par d<>faut. Ce sera le seul thread qui ne sera pas tu<74> par ::tcltest::threadReap et qui sera assign<67> conform<72>ment <20> la valeur de retour de <i>testthread names</i> <20> l'initialisation.</DD>
<DT><br><b>::tcltest::originalEnv</b></DT><DD>copie du tableau global &quot;env&quot; au d<>but de l'<27>x<EFBFBD>cution du test. Ce tableau est utilis<69> pour restaurer le tableau &quot;env&quot; <20> sa valeur initiale quand <i>::tcltest::cleanupTests</i>&nbsp; est appel<65>e.</DD>
<DT><br><b>::tcltest::workingDirectory</b></DT><DD>le r<>pertoire dans lequel le syst<73>me de test a <20>t<EFBFBD> lanc<6E>.</DD>
<DT><br><b>::tcltest::temporaryDirectory</b></DT><DD>le r<>pertoire de sortie - par d<>faut <i>::tcltest::workingDirectory</i> , peut <20>tre pr<70>cis<69> en indiquant&nbsp;&nbsp; -tmpdir en ligne de commande.</DD>
<DT><br><b>::tcltest::testsDirectory</b></DT><DD>l<EFBFBD> o<>; se trouvent les tests - par d<>faut&nbsp; <i>::tcltest::workingDirectory</i> , si le script ne peut pas d<>terminer o<>; le r<>pertoire de tests se trouve. Il est possible de changer cette valeur par d<>faut en pr<70>cisant -testdir en ligne de commande. Cette variable devrait toujours <20>tre pr<70>cis<69>e explicitement si les tests sont <20>x<EFBFBD>cut<75>s depuis un fichier all.tcl.</DD>
<DT><br><b>::tcltest::tcltest</b></DT><DD>le nom de l'<27>x<EFBFBD>cutable utilis<69> pour appeler le syst<73>me de test.</DD>
<DT><br><b>::tcltest::loadScript</b></DT><DD>Le script <20>x<EFBFBD>cut<75> en tant que <b>loadTestCommands</b>. Pr<50>cis<69> par -load ou -loadfile. </DD>
</DL>
</div>
<br>
<div><b>CONTRAINTES DE TEST</b></div>
<br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les contraintes sont utilis<69>es pour d<>terminer si un test doit <20>tre ignor<6F>.&nbsp; Chaque contrainte est stock<63>e comme un indice du tableau <i>::tcltest::testConstraints</i>. Par exemple, la contrainte unixOnly est d<>finie de la fa<66>on suivante: </div>
<div ALIGN="LEFT" style="margin-left: 101px;">set ::tcltest::testConstraints(unixOnly) \<br>
&nbsp;&nbsp;&nbsp; &#91;string equal &#36;tcl_platform(platform) &quot;unix&quot;]<br>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si un test est contraint par &quot;unixOnly&quot;, il ne s'ex<65>cutera que si la valeur de ::tcltest::testConstraints(unixOnly) est vraie. Plusieurs contraintes sont d<>finies dans le package <b>tcltest</b>.&nbsp; Pour ajouter des contraintes sp<73>cifiques <20> un fichier ou <20> un test, vous pouvez cr<63>er l'index correspondant du tableau ::tcltest::testsConstraints dans votre propre fichier de test.</div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 51px;">Voici la liste des contraintes d<>finies dans le package <b>tcltest</b> :
<DL>
<DT><i>unix</i></DT><DD>le test ne peut s'ex<65>cuter que sur les plateformes UNIX</DD>
<DT><i>pc</i></DT><DD>le test ne peut s'ex<65>cuter que sur les plateformes Windows</DD>
<DT><i>nt</i></DT><DD>le test ne peut s'ex<65>cuter que sur les plateformes Windows NT</DD>
<DT><i>95</i></DT><DD>le test ne peut s'ex<65>cuter que sur les plateformes Windows 95</DD>
<DT><i>98</i></DT><DD>le test ne peut s'ex<65>cuter que sur les plateformes Windows 98</DD>
<DT><i>mac</i></DT><DD>le test ne peut s'ex<65>cuter que sur les plateformes Mac</DD>
<DT><i>unixOrPc</i></DT><DD>le test ne peut s'ex<65>cuter que sur les plateformes UNIX ou PC</DD>
<DT><i>macOrPC</i></DT><DD>le test ne peut s'ex<65>cuter que sur les plateformes Mac ou PC</DD>
<DT><i>macOrUnix</i></DT><DD>le test ne peut s'ex<65>cuter que sur les plateformes Mac ou Unix</DD>
<DT><i>tempNotPc</i></DT><DD>le test ne peut <20>tre <20>x<EFBFBD>cut<75> sur Windows. C'est un flag pour d<>sactiver temporairement un test.</DD>
<DT><i>tempNotMac</i></DT><DD>le test ne peut <20>tre <20>x<EFBFBD>cut<75> sur un Mac. C'est un flag pour d<>sactiver temporairement un test.</DD>
<DT><i>unixCrash</i></DT><DD>le test se plante s'il est <20>x<EFBFBD>cut<75> sur UNIX. C'est un flag pour d<>sactiver temporairement un test.</DD>
<DT><i>pcCrash</i></DT><DD>le test se plante s'il est <20>x<EFBFBD>cut<75> sur PC. C'est un flag pour d<>sactiver temporairement un test.</DD>
<DT><i>macCrash</i></DT><DD>le test se plante s'il est <20>x<EFBFBD>cut<75> sur Mac. C'est un flag pour d<>sactiver temporairement un test.</DD>
<DT><i>emptyTest</i></DT><DD>le test est vide, et donc ne vaut pas la peine d'<27>tre <20>x<EFBFBD>cut<75>, mais il reste afin d'<27>tre <20>crit dans le futur. Cette contrainte provoque l'omission syst<73>matique du test.</DD>
<DT><i>knownBug</i></DT><DD>le test est connu pour se planter, et le bug n'est pas encore corrig<69>. Cette contrainte provoque l'omission du test., sauf si l'utilisateur demande le contraire. Voir la section &quot;Introduction&quot; pour plus d'informations.</DD>
<DT><i>nonPortable</i></DT><DD>ce test ne peut <20>tre effectu<74> que dans l'environnement de d<>veloppement Tcl/Tk ma<6D>tre. Certains tests sont par nature non portables, parce qu'ils d<>pendent de choses telles que la longueur de mot du processeur, la configuration du syst<73>me de fichiers, le gestionnaire de fen<65>tres, etc. Ces tests sont seulement <20>x<EFBFBD>cut<75>s dans l'environnement de d<>veloppement Tcl principal, o<>; la configuration est bien connue. Cette contrainte provoque l'omission du test, sauf si l'utilisateur demande le contraire.</DD>
<DT><i>userInteraction</i></DT><DD>ce test demande une interaction avec l'utilisateur. Cette contrainte provoque l'omission du test, sauf si l'utilisateur demande le contraire.</DD>
<DT><i>interactive</i></DT><DD>ce test ne peut <20>tre effectu<74> qu'en mode interactif, c'est <20> dire si la variable globale tcl_interactive est positionn<6E>e <20> 1.</DD>
<DT><i>nonBlockFiles</i></DT><DD>ce test ne peut s'ex<65>cuter que si la plateforme supporte de mettre les fichiers en mode non-bloqu<71>.</DD>
<DT><i>asyncPipeClose</i></DT><DD>ce test ne peut s'ex<65>cuter que si la plateforme supporte &quot;async flush&quot; et &quot;async close&quot; sur un pipe.</DD>
<DT><i>unixExecs</i></DT><DD>le test ne peut s'ex<65>cuter que si la machine dispose des commandes telles que 'cat', 'echo', etc.</DD>
<DT><i>hasIsoLocale</i></DT><DD>le test ne peut s'ex<65>cuter que s'il peut passer dans une locale ISO.</DD>
<DT><i>root</i></DT><DD>le test ne peut s'ex<65>cuter que si l'utilisateur Unix est root</DD>
<DT><i>notRoot</i></DT><DD>le test ne peut s'ex<65>cuter que si l'utilisateur Unix n'est pas root</DD>
<DT><i>eformat</i></DT><DD>le test ne peut s'ex<65>cuter que si l'application a une version fonctionnelle de sprintf respectant le format &quot;e&quot; des nombres flottants.</DD>
<DT><i>stdio</i></DT><DD>le test ne peut s'ex<65>cuter que si l'application courante peut fonctionner au travers d'un pipe</DD>
</DL>
</div><br>
<div><b>FAIRE FONCTIONNER LES FICHIERS DE TEST</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Utiliser la commande suivante pour ex<65>cuter un fichier de test qui utilise le package tcltest:</div>
<div ALIGN="LEFT" style="margin-left: 101px;">&lt;shell&gt; &lt;testFile&gt; ?&lt;option&gt; ?&lt;value&gt;?? ...</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les options de ligne de commande sont les suivantes (les variables du namespace tcltest qui correspondent <20> chacune des options sont indiqu<71>es entre parenth<74>ses <20> la fin de la description) :
<DL>
<DT><b>-help</b></DT><DD>affiche le mode d'utilisation</DD>
<DT><b>-verbose &lt;level&gt;</b></DT><DD>
d<EFBFBD>finit le niveau de verbosit<69> comme une sous-cha<68>ne de &quot;bps&quot;. Voir la section &quot;Informations issus des tests&quot; pour une explication de cette option.&nbsp; (::tcltest::verbose)</DD>
<DT><b>-match &lt;matchList&gt;</b></DT><DD>
effectue seulement les tests qui correspondent aux motifs de &quot;glob&quot; d<>finis dans &lt;matchList&gt;.&nbsp; (::tcltest::match)</DD>
<DT><b>-skip &lt;skipList&gt;</b></DT><DD>
n'effectue pas les tests qui correspondent <20> un ou plusieurs motifs de &quot;glob&quot; d<>finis dans &lt;skipList&gt;.&nbsp; (::tcltest::skip) </DD>
<DT><b>-file &lt;globPatternList&gt;</b></DT><DD>
source seulement les fichiers de test dont les noms r<>pondent <20> l'un des motifs de&nbsp; &lt;globPatternList&gt; d<>finis par rapport au r<>pertoire::tcltest::testsDirectory. Cette option n'a de sens qui si vous effectuez des tests utilisant &quot;all.tcl&quot; en tant que &lt;testFile&gt; au lieu d'effectuer directement des fichiers unitaires de test. (::tcltest::matchFiles) </DD>
<DT><b>-notfile &lt;globPatternList&gt;</b></DT><DD>
source tous les fichiers sauf ceux dont les noms r<>pondent <20> l'un des motifs de &lt;globPatternList&gt; d<>finis par rapport au r<>pertoire::tcltest::testsDirectory.&nbsp;&nbsp; Cette option n'a de sens qui si vous effectuez des tests utilisant &quot;all.tcl&quot; en tant que &lt;testFile&gt; au lieu d'effectuer directement des fichiers unitaires de test. (::tcltest::skipFiles) </DD>
<DT><b>-constraints &lt;list&gt;</b></DT><DD>
les tests contenant une contrainte parmi la liste &lt;list&gt; ne seront pas saut<75>s. Notez que les <20>l<EFBFBD>ments de &lt;list&gt; doivent correspondrent exactement aux contraintes existantes. Ceci est utile si vous voulez avoir la certitude que les tests ayant une contrainte particuli<6C>re sont effectu<74>s (par exemple, si le testeur souhaite que tous les tests contenant la contrainte knownBug soient effectu<74>s). (::tcltest::testConstraints(<i>constraintName</i>)) </DD>
<DT><b>-limitconstraints &lt;bool&gt;</b></DT><DD>Si l'argument de cette option est 1, les tests effectu<74>s seront ceux qui respectent les contraintes d<>finies par l'option -constraints. La valeur par d<>faut de cet indicateur est 0 (false). Ceci est utile si vous voulez ex<65>cuter <b>seulement</b> les tests qui r<>pondent aux contraintes list<73>es par l'option -constraints. Un testeur peut vouloir cela par exemple pour n'effectuer que les tests contraints par unixOnly et aucun autre. (::tcltest::limitConstraints)</DD>
<DT><b>-load &lt;script&gt;</b></DT><DD>utilisera le script indiqu<71> pour charger les commandes <20> tester (::tcltest::loadTestedCommands). La valeur par d<>faut est un script vide. Voir <20>galement -loadfile ci-dessous. (::tcltest::loadScript)</DD>
<DT><b>-loadfile &lt;scriptfile&gt;</b></DT><DD>utilisera le contenu du fichier indiqu<71> pour charger les commandes <20> tester (::tcltest::loadTestedCommands).Voir <20>galement -load ci-dessus. La valeur par d<>faut est un script vide. (::tcltest::loadScript)</DD>
<DT><b>-tmpdir &lt;directoryName&gt;</b></DT><DD>mettra tous les fichiers temporaires (cr<63><72>s avec ::tcltest::makeFile et ::tcltest::makeDirectory) dans le r<>pertoire indiqu<71>.&nbsp; L'emplacement par d<>faut est ::tcltest::workingDirectory.&nbsp; (::tcltest::temporaryDirectory) </DD>
<DT><b>-testdir &lt;directoryName&gt;</b></DT><DD>cherche les tests <20> ex<65>cuter dans le r<>pertoire indiqu<71>. L'emplacement par d<>faut est ::tcltest::workingDirectory. (::tcltest::testsDirectory)</DD>
<DT><b>-preservecore &lt;level&gt;</b></DT><DD>contr&ocirc;le pour les fichiers core.&nbsp; Cette option d<>termine quel niveau de contr&ocirc;le sera effectu<74> pour les fichiers &quot;core&quot;. La valeur par d<>faut pour &lt;level&gt; est 0. Les niveaux &lt;level&gt; sont d<>finis comme suit :<DL>
<DT>0</DT><DD>Pas de contr&ocirc;le - ne pas contr&ocirc;ler les fichiers core <20> la fin de chaque test, mais les contr&ocirc;ler <20> chaque fois que::tcltest::cleanupTests est appel<65> depuis un fichier all.tcl. </DD>
<DT>1</DT><DD>V<EFBFBD>rifier l'existence de fichiers core <20> la fin de chaque commande de test et <20> chaque fois que::tcltest::cleanupTests est appel<65> depuis un fichier all.tcl.</DD>
<DT>2</DT><DD>V<EFBFBD>rifier l'existence de fichiers core <20> la fin de chaque commande de test et <20> chaque fois que::tcltest::cleanupTests est appel<65> depuis un fichier all.tcl. Sauvegarder tout fichier core produit dans ::tcltest::temporaryDirectory. (::tcltest::preserveCore)</DD>
</DL>
</DD>
<DT><b>-debug &lt;debugLevel&gt;</b></DT><DD>afficher l'information de debug dans stdout. Ceci est utilis<69> pour d<>bugger le code du syst<73>me de test. Le niveau de debug par d<>faut est 0. Les niveaux sont d<>finis ainsi:<DL>
<DT>0</DT><DD>Ne pas afficher les informations de debug.</DD>
<DT>1</DT><DD>Afficher l'information indiquant si un test est saut<75> parce qu'il ne r<>pond <20> aucune des conditions indiqu<71>es dans -match ou ::tcltest::match (userSpecifiedNonMatch), ou parce qu'il r<>pond <20> une quelconque des conditions indiqu<71>es par -skip ou ::tcltest::skip ((userSpecifiedSkip).</DD>
<DT>2</DT><DD>Affiche le tableau des options interpr<70>t<EFBFBD> par le processeur de ligne de commande, le contenu du tableau ::env, et toutes les variables utilisateur d<>finies dans le namespace courant, quand elles sont utilis<69>es.</DD>
<DT>3</DT><DD>Affiche l'information concernant ce que font les proc<6F>dures individuelles de le syst<73>me de test.(::tcltest::debug)</DD>
</DL>
</DD>
<DT><b>-outfile &lt;filename&gt;</b></DT><DD>envoie la sortie g<>n<EFBFBD>r<EFBFBD>e par le package tcltest vers le fichier indiqu<71>. La valeur par d<>faut est stdout. Notez que la sortie de debug va syst<73>matiquement dans stdout, quelque soit la valeur de cette option. (::tcltest::outputChannel)</DD>
<DT><b>-errfile &lt;filename&gt;</b></DT><DD>envoie les erreurs g<>n<EFBFBD>r<EFBFBD>es par le package tcltest vers le fichier indiqu<71>. La valeur par d<>faut est stderr. (::tcltest::errorChannel)</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Une seconde fa<66>on d'ex<65>cuter les tests est de d<>marrer un shell, de charger le package <b>tcltest</b>, puis de sourcer un fichier de test appropri<72> ou d'utiliser la commande test. Pour utiliser les options en mode interactif, alimenter la variable qui leur correspond dans le namespace tcltest apr<70>s avoir charg<72> le package.</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Voir la section <i>&quot;Contraintes de Test&quot;</i> pour toutes les contraintes pr<70>-construites qui peuvent <20>tre utilis<69>es dans le tableau <b>::tcltest::testConstraints</b>. Voir la section <i>&quot;Les variables du </i><i>namespace Tcltest&quot;</i> pour des informations sur les autres variables d<>finies dans le namespace tcltest.</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Une derni<6E>re fa<66>on d'ex<65>cuter les tests est d'indiquer les fichiers de test <20> ex<65>cuter <20> l'int<6E>rieur d'un fichier <i>all.tcl</i> (qui peut <20>tre nomm<6D> diff<66>remment). C'est l'approche utilis<69>e par le syst<73>me de test de Tcl. Ce fichier charge le package tcltest, d<>finit l'emplacement du r<>pertoire de test (::tcltest::testsDirectory), d<>termine quels fichiers de test ex<65>cuter, source chacun de ces fichiers, appelle ::tcltest::cleanupTests et finit de s'ex<65>cuter.</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Un fichier <i>all.tcl</i> plus <20>labor<6F> peut faire du pr<70>- et du post-processing avant de sourcer chaque fichier .test, utiliser des interpr<70>teurs diff<66>rents pour chaque fichier, ou manipuler des structures de r<>pertoires complexes. Pour un exemple de fichier all.tcl, voir la section &quot;Exemples&quot; de ce document. </div>
<br><div><b>RESULTATS DES TESTS</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Apr<EFBFBD>s que tous les fichiers de test indiqu<71>s aient <20>t<EFBFBD> <20>x<EFBFBD>cut<75>s, le nombre de tests r<>ussis, saut<75>s ou <20>chou<6F>s est envoy<6F> dans<b>::tcltest::outputChannel</b>.&nbsp; A c&ocirc;t<EFBFBD> de cette information statistique, la sortie peut <20>tre pilot<6F>e pour chaque test par la variable <b>::tcltest::verbose</b>.</div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 51px;"><b>::tcltest::verbose </b>peut avoir pour valeur n'importe quelle sous-cha<68>ne ou permutation de &quot;bps&quot;.&nbsp;&nbsp; Dans la cha<68>ne &quot;bps&quot;, le 'b' se r<>f<EFBFBD>re au corps (body) du test, le 'p' se r<>f<EFBFBD>re aux tests r<>ussis&nbsp; (passed) et le 's' signifi<66> tests saut<75>s (skipped). La valeur par d<>faut de <b>::tcltest::verbose est &quot;b&quot;. </b>Si 'b' est pr<70>sent, alors le corps entier du test est imprim<69> pour chaque test <20>chou<6F>;&nbsp; sinon seulement le nom du test, la sortie souhait<69>e et la sortie obtenue sont imprim<69>s pour chaque test <20>chou<6F>. Si 'p' est pr<70>sent, alors une ligne est imprim<69>e pour chaque test r<>ussi, sinon aucune ligne n'est imprim<69>e pour les tests r<>ussis. Si 's' est pr<70>sent, alors une ligne (contenant les contraintes qui ont&nbsp; fait que le test a <20>t<EFBFBD> saut<75>) est imprim<69>e pour chaque test saut<75>, sinon aucune ligne n'est imprim<69>e dans ce cas.</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Vous pouvez positionner <b>::tcltest::verbose</b>, soit interactivement (une fois que le package <b>tcltest</b> a <20>t<EFBFBD> charg<72>) ou en utilisant l'argument de ligne de commande -verbose, par exemple:</div>
<div ALIGN="LEFT" style="margin-left: 51px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tclsh socket.test -verbose bps</div>
<br>
<div><b>CONTENUS D'UN FICHIER DE TEST</b></div>
<br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les fichiers de test doivent commencer par charger le package <b>tcltest</b>: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">if &#123;&#91;lsearch &#91;namespace children] ::tcltest] == -1} &#123;<br>
&nbsp;&nbsp;&nbsp; package require tcltest<br>
&nbsp;&nbsp;&nbsp; namespace import ::tcltest::*<br>
}<br>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les fichiers de tests doivent se terminer par l'appel de la fonction de nettoyage <b>::tcltest::cleanupTests</b>. La proc<6F>dure <b>::tcltest::cleanupTests </b>affiche des statistiques au sujet du nombre de tests r<>ussis, saut<75>s ou <20>chou<6F>s,&nbsp; et supprime tous les fichiers cr<63><72>s au moyen des proc<6F>dures<b> ::tcltest::makeFile</b> et <b>::tcltest::makeDirectory</b>.<b> </b></div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 102px;"># Supprime les fichiers cr<63><72>s par ces tests </div>
<div ALIGN="LEFT" style="margin-left: 102px;"># Retour au r<>pertoire de travail initial<br>
# Supprime les tableaux globaux<br>
::tcltest::cleanupTests<br>
return<br>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les fichiers de tests doivent se finir par une extension .test. Les noms des fichiers de tests qui contiennent des tests de r<>gression (dits de bo<62>te transparente) doivent <20>tre nomm<6D>s d'apr<70>s les fichiers de code Tcl ou C qu'ils testent. Par exemple, le fichier de test du programme C &quot;tclCmdAH.c&quot; doit <20>tre &quot;cmdAH.test&quot;. Les fichiers qui contiennent des tests &quot;bo<EFBFBD>te noire&quot; (black-box tests) devraient se conformer au motif &quot;*_bb.test&quot;.</div>
<div ALIGN="LEFT" style="margin-left: 51px;"> </div><br>
<div><b>SELECTIONNER DES TESTS A EXECUTER DANS UN FICHIER</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Normalement, quand un fichier est sourc<72>, tous les tests qu'il contient sont <20>x<EFBFBD>cut<75>s. Individuellement, un test sera saut<75> si l'une des conditions suivantes est vraie:
<DL>
<DT>&#91;1]</DT><DD>le <i>nom</i> du test ne correspond pas (en utilisant la correspondance de type &quot;glob&quot;) <20> un ou plusieurs <20>l<EFBFBD>ments de la variable <b>::tcltest::match</b>.</DD>
<DT>&#91;2]</DT><DD>le <i>nom</i> du test correspond (en utilisant la correspondance de type &quot;glob&quot;) <20> un ou plusieurs <20>l<EFBFBD>ments de la variable <b>::tcltest::skip</b>.</DD>
<DT>&#91;3]</DT><DD>l'argument <i>constraints</i> de l'appel <20> <b>::tcltest::call</b>, s'il existe, contient une ou plusieurs valeurs fausses.</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Vous pouvez d<>finir <b>::tcltest::match </b>et/ou<b> ::tcltest::skip, </b>soit interactivement (apr<70>s que le package<b> tcltest </b>a <20>t<EFBFBD> sourc<72>), ou en utilisant les arguments de ligne de commande<b> -match </b>et<b> </b><b>-skip</b>, par exemple <b>:&nbsp;&nbsp; </b> </div>
<div ALIGN="LEFT" style="margin-left: 102px;">tclsh info.test -match '*-5.* *-7.*' -skip '*-7.1*'</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Soyez s&ucirc;r de bien placer les quotes, de fa<66>on que votre shell ne fasse pas les substitutions de type glob sur les motifs que vous indiquez&nbsp; (que ce soit bien l'interpr<70>teur tcl qui fasse ces substitutions).&nbsp; </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les contraintes pr<70>d<EFBFBD>finies (par exemple <i>knownBug</i> et <i>nonPortable</i>) peuvent <20>tre chang<6E>es soit interactivement (apr<70>s que le package<b> tcltest </b>a <20>t<EFBFBD> sourc<72>), en d<>finissant la variable <b>::tcltest::testConstraints</b>(<i>constraint</i>), ou en utilisant l'option de ligne de commande <b>-constraints</b> avec le nom de la contrainte comme argument. L'exemple suivant montre comment faire fonctionner des tests contraints par les restrictsions <i>knownBug</i> et <i>nonPortable</i>: </div>
<div ALIGN="LEFT" style="margin-left: 51px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tclsh all.tcl -constraints &quot;knownBug nonPortable&quot;</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Voir la section <i>&quot;Contraintes de Test&quot;</i> pour plus d' information sur l'utilisation des contraintes pr<70>d<EFBFBD>finies et l'ajout de nouvelles contraintes. </div>
<br>
<div><b>PERSONNALISER LE SYSTEME DE TEST</b></div>
<br>
<div ALIGN="LEFT" style="margin-left: 51px;">Pour cr<63>er votre propre syst<73>me de test, cr<63>er un fichier .tcl qui contient votre namespace. Dans ce fichier, appeller le package <b>tcltest</b> <i>(package require tcltest)</i>. Les commandes qui peuvent <20>tre red<65>finies pour personnaliser le syst<73>me de test sont:
<DL>
<DT><b>::tcltest::PrintUsageInfoHook</b></DT><DD>afficher de l'information compl<70>mentaire, sp<73>cifique <20> votre situation.</DD>
<DT><b>::tcltest::processCmdLineArgsFlagHook</b></DT><DD>avertir le syst<73>me au sujet d'options additionnelles que vous voulez qu'il comprenne.</DD>
<DT><b>::tcltest::processCmdLineArgsHook</b> <i>flags</i></DT><DD>traiter les options additionnelles que vous avez communiqu<71>es au syst<73>me de test au travers de ::tcltest::processCmdLineArgsFlagHook.</DD>
<DT><b>::tcltest::initConstraintsHook</b></DT><DD>ajouter des contraintes additionnelles aux contraintes pr<70>d<EFBFBD>finies par <b>tcltest</b>.</DD>
<DT><b>::tcltest::cleanupTestsHook</b></DT><DD>faire du nettoyage additionnel</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Pour ajouter de nouvelles options <20> votre syst<73>me de test personnalis<69>, red<65>finissez <b>::tcltest::processCmdLineArgsAddFlagHook</b> pour la liste des options additionnelles <20> interpr<70>ter, et <b>::tcltest::processCmdLineArgsHook</b> pour les traiter effectivement . Par exemple: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">proc ::tcltest::processCmdLineArgsAddFlagHook &#123;} &#123;<br>
&nbsp;&nbsp;&nbsp; return &#91;list -flag1 -flag2]<br>
}<br>
<br>
proc ::tcltest::processCmdLineArgsHook &#123;flagArray} &#123;<br>
&nbsp;&nbsp;&nbsp; array set flag &#36;flagArray<br>
<br>
&nbsp;&nbsp;&nbsp; if &#123;&#91;info exists flag(-flag1)]} &#123;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Handle flag1<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; if &#123;&#91;info exists flag(-flag2)]} &#123;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Handle flag2<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; return<br>
}<br>
</div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 51px;">Vous pouvez aussi vouloir ajouter un mode d'emploi pour ces options.&nbsp; Ce mode d'emploi s'affichera quand l'utilisateur indiquera -help. Pour d<>finir le mode d'emploi additionnel, d<>finissez votre propre proc<6F>dure ::tcltest::PrintUsageInfoHook. A l'int<6E>rieur de cette proc<6F>dure, vous afficherez le mode d'emploi compl<70>mentaire pour chacune des options que vous avez ajout<75>es.</div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 51px;">Pour ajouter de nouvelles contraintes pr<70>d<EFBFBD>finies au syst<73>me de test, d<>finissez votre propre version de <b>::tcltest::initConstraintsHook</b>.&nbsp; A l'int<6E>rieur de cette proc<6F>dure, vous pouvez compl<70>ter le tableau <b>::tcltest::testConstraints</b>. Par exemple: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">proc ::tcltest::initConstraintsHook &#123;} &#123;<br>
&nbsp;&nbsp;&nbsp; set ::tcltest::testConstraints(win95Or98) \<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#91;expr &#123;&#36;::tcltest::testConstraints(95) || \<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#36;::tcltest::testConstraints(98)}]<br>
}<br>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Enfin, si vous voulez ajouter du code de nettoyage compl<70>mentaire, vous pouvez d<>finir votre propre <b>::tcltest::cleanupTestsHook</b>.&nbsp; Par exemple: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">proc ::tcltest::cleanupTestsHook &#123;} &#123;<br>
&nbsp;&nbsp;&nbsp; # Add your cleanup code here<br>
}<br>
</div>
<div><b>EXEMPLES</b></div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Un fichier de test simple (foo.test) </div>
<div ALIGN="LEFT" style="margin-left: 102px;">if &#123;&#91;lsearch &#91;namespace children] ::tcltest] == -1} &#123;<br>
&nbsp;&nbsp;&nbsp; package require tcltest<br>
&nbsp;&nbsp;&nbsp; namespace import ::tcltest::*<br>
}<br>
<br>
test foo-1.1 &#123;enregistrer 1 dans la variable foo} &#123;} &#123;<br>
&nbsp;&nbsp;&nbsp; set foo 1<br>
} &#123;1}<br>
<br>
::tcltest::cleanupTests<br>
return<br>
</div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;2]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Un fichier all.tcl simple </div>
<div ALIGN="LEFT" style="margin-left: 102px;">if &#123;&#91;lsearch &#91;namespace children] ::tcltest] == -1} &#123;<br>
&nbsp;&nbsp;&nbsp; package require tcltest<br>
&nbsp;&nbsp;&nbsp; namespace import ::tcltest::*<br>
}<br>
<br>
set ::tcltest::testSingleFile false<br>
set ::tcltest::testsDirectory &#91;file dir &#91;info script]]<br>
<br>
foreach file &#91;::tcltest::getMatchingTestFiles] &#123;<br>
&nbsp;&nbsp;&nbsp; if &#123;&#91;catch &#123;source &#36;file} msg]} &#123;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; puts stdout &#36;msg<br>
&nbsp;&nbsp;&nbsp; }<br>
}<br>
<br>
::tclttest::cleanupTests 1<br>
return<br>
</div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;3]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ex<EFBFBD>cuter un test simple </div>
<div ALIGN="LEFT" style="margin-left: 102px;">tclsh foo.test<br>
</div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;4]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ex<EFBFBD>cuter des tests multiples </div>
<div ALIGN="LEFT" style="margin-left: 102px;">tclsh all.tcl -file 'foo*.test' -notfile 'foo2.test'<br>
</div>
<div>&nbsp;
<div>Derni<EFBFBD>re r<>vision: 8.2</div>
</BODY></HTML>

53
hlp/fr/tcl/after.htm Normal file
View File

@@ -0,0 +1,53 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>after&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="88.htm"><b>Suivant</b></A></div>
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">after - Execute une commande apr<70>s un certain d<>lai
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>after </b><i>ms</i> <br>
<b>after </b><i>ms </i>?<i>script script script ...</i>? <br>
<b>after cancel </b><i>id</i> <br>
<b>after cancel </b><i>script script script ...</i> <br>
<b>after idle </b>?<i>script script script ...</i>? <br>
<b>after info </b>?<i>id</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande est utilis<69>e pour retarder l'ex<65>cution d'un programme ou ex<65>cuter une commande en arri<72>re-plan apr<70>s un certain d<>lai
. Elle a plusieurs formes, d<>pendantes du premier argument de la commande: </div>
<div ALIGN="LEFT" style="margin-left: 51px;">
<DL>
<DT><b>after </b><i>ms</i><br>
</DT><DD><i>Ms</i> doit <20>tre un entier donnant une dur<75>e en millisecondes. La commande dort pendant <i>ms</i> millisecondes et ensuite retourne. Tant que la commande dort l'application ne r<>pond pas aux <20>v<EFBFBD>nements.
</DD>
<DT><br>
<b>after </b><i>ms </i>?<i>script script script ...</i>?<br></DT><DD>Sous cette forme la commande retourne imm<6D>diatement, mais elle pr<70>pare une commande Tcl <20> <20>tre ex<65>cut<75>e <i>ms</i> millisecondes plus tard comme un gestionnaire d'<27>v<EFBFBD>nement. La commande sera ex<65>cut<75>e exactement une fois, <20> l'instant donn<6E>. La commande retard<72>e est form<72>e par concat<61>nation de tout les arguments de <i>script</i> de la m<>me fa<66>on que par la commande <A HREF="98.htm"><b>concat</b></A>. La commande sera ex<65>cut<75>e au niveau global (en dehors du contexte de toute fonction Tcl). Si une erreur se produit pendant l'ex<65>cution de la commande retard<72>e alors le m<>canisme <A HREF="90.htm"><b>bgerror</b></A> est utilis<69> pour rapporter l'erreur. La commande <b>after</b> renvoie un identificateur qui peut <20>tre utilis<69> pour annuler la commande retard<72>e en utilisant <b>after cancel</b>.
</DD>
<DT><br>
<b>after cancel </b><i>id</i><br></DT><DD>Annule l'ex<65>cution d'une commande retard<72>e qui a <20>t<EFBFBD> pr<70>cedemment programm<6D>e. <i>Id</i> indique quelle commande sera annul<75>e; il doit avoir <20>t<EFBFBD> la valeur de retour d'une pr<70>c<EFBFBD>dente commande<b> after</b>. Si la commande d<>sign<67>e par <i>id</i> a d<>j<EFBFBD> <20>t<EFBFBD> ex<65>cut<75>e alors la commande <b>after cancel</b> n'a pas d'effet.
</DD>
<DT><br>
<b>after cancel </b><i>script script ...</i><br>
</DT><DD>Cette commande annule aussi l'ex<65>cution d'une commande retard<72>e. Les arguments <i>script</i> sont concat<61>n<EFBFBD>s s<>par<61>s par des espaces (comme dans la commande <A HREF="98"><b>concat</b></A>). S'il y a une commande en attente qui correspond <20> la cha<68>ne, elle est annul<75>e et ne sera jamais ex<65>cut<75>e; si aucune commande n'est en attente alors la commande <b>after </b><b>cancel</b> n'a pas d'effet.
</DD>
<DT><br>
<b>after idle </b><i>script </i>?<i>script script ...</i>?<br>
</DT><DD>Concat<EFBFBD>ne les arguments <i>script</i> avec des s<>parateurs espace (comme dans la commande<A HREF="98"><b> concat</b></A>), et pr<70>pare le script r<>sultant <20> <20>tre <20>valu<6C> plus tard comme un callback inactif . Le script sera lanc<6E> exactement une fois, <20> l'instant de rentrer dans la boucle d'<27>v<EFBFBD>nement et qu'il n'y a pas d'<27>v<EFBFBD>nements <20> traiter. La commande renvoie un identificateur qui peut <20>tre utilis<69> pour annuler la commande retard<72>e en utilisant <b>after cancel</b>. Si une erreur se produit pendant l'ex<65>cution du script alors le m<>canisme <A HREF="90.html"><b>bgerror</b></A> est utilis<69> pour rapporter l'erreur.
</DD>
<DT><br>
<b>after info </b>?<i>id</i>?<br></DT><DD>Cette commande renvoie l'information au sujet des gestionnaires d'<27>v<EFBFBD>nement existants. Si aucun argument <i>id</i> est fourni, la commande renvoie une liste d'identificateurs de tous les gestionnaires d'<27>v<EFBFBD>nements existants cr<63><72>s par la commande <b>after</b> pour cet interpr<70>teur. Si <i>id</i> est fourni, il sp<73>cifie un gestionnaire existant; <i>id</i> doit avoir <20>t<EFBFBD> la valeur de retour d'un pr<70>cedent appel de <b>after</b> et il ne doit pas avoir <20>t<EFBFBD> d<>j<EFBFBD> d<>clench<63> ou <20>t<EFBFBD> annul<75>. Dans ce cas la commande renvoie une liste de deux <20>l<EFBFBD>ments. Le premier <20>l<EFBFBD>ment de la liste est le script associ<63> <20> <i>id</i>, et le second <20>l<EFBFBD>ment est soit <b>idle</b> soit <b>timer</b> pour indiquer de quelle sorte de gestionnaire d'<27>v<EFBFBD>nement il s'agit.</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les formes <b>after </b><i>ms</i> et <b>after idle</b> de la commande supposent que l'application est pilot<6F>e par <20>v<EFBFBD>nement: les commandes retard<72>es ne seront pas ex<65>cut<75>es tant que l'application ne rentrera pas dans la boucle d'<27>v<EFBFBD>nement. Dans les applications qui ne sont pas normalement pilot<6F>es par <20>v<EFBFBD>nement, telles que <A HREF="168.htm"><b>tclsh</b></A>, on peut activer la boucle d'<27>v<EFBFBD>nement avec les commandes <A HREF="180.htm"><b>vwait</b></A> et <A HREF="176.htm"><b>update</b></A>.
</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><A HREF="90.htm">bgerror</A>&nbsp; </div><br>
<div>Derni<EFBFBD>re r<>vision: 7.5</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="88.htm"><b>Suivant</b></A></div>
</BODY></HTML>

18
hlp/fr/tcl/append.htm Normal file
View File

@@ -0,0 +1,18 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>append&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">append - Ajoute <20> une variable
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>append </b><i>varName </i>?<i>value value value ...</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Ajoute tous les arguments <i>value</i> <20> la valeur courante de la variable <i>varName</i>.&nbsp; Si <i>varName</i> n'existe pas, il lui est donn<6E> une valeur <20>gale <20> la concat<61>nation de tous les arguments<i> value</i>. Cette commande fournit un moyen efficace de construire des variables longues par incr<63>mentation. Par exemple, &#147;<b>append a &#36;b</b>&#148; est beaucoup plus efficace que &#147;<b>set a &#36;a&#36;b</b>&#148; si <b>&#36;a</b> est long.</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="87.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="89.htm"><b>Suivant</b></A></div>
</BODY></HTML>

42
hlp/fr/tcl/array.htm Normal file
View File

@@ -0,0 +1,42 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>array&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">array - Manipule les variables tableau
</div> <br>
<div><b>SYNTAXE</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>array </b><i>option arrayName</i> ?<i>arg arg ...</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande effectue une des op<6F>rations sur la variable donn<6E>e par <i>arrayName</i>. Sauf sp<73>cification contraire pour certaines commandes individuelles ci-dessous, <i>arrayName</i> doit <20>tre le nom d'une variable tableau existante. L'argument <i>option</i> d<>termine l'action effectu<74>e par la commande. Les <i>options</i> l<>gales (qui peuvent <20>tre abr<62>g<EFBFBD>es) sont:
<DL>
<DT><b>array anymore </b><i>arrayName searchId</i><br></DT><DD>Renvoie 1 s'il reste au moins un <20>l<EFBFBD>ment <20> traiter pour une recherche dans le tableau, 0 si tous les <20>l<EFBFBD>ments ont d<>j<EFBFBD> <20>t<EFBFBD> renvoy<6F>s. <i>SearchId</i> indique la recherche <20> v<>rifier dans <i>arrayName</i>, et doit avoir <20>t<EFBFBD> la valeur de retour d'un pr<70>c<EFBFBD>dent appel de <b>array startsearch</b>. Cette option est particuli<6C>rement utile si un tableau contient un <20>l<EFBFBD>ment avec un nom vide, parce que la valeur de retour de <b>array nextelement</b> n'indiquera pas si la recherche est termin<69>e.
<br></DD>
<DT><br><b>array donesearch </b><i>arrayName searchId</i></DT><DD>Cette commande termine une recherche dans un tableau et d<>truit l'<27>tat associ<63> <20> cette recherche. <i>SearchId</i> indique quelle recherche d<>truire dans <i>arrayName</i>; et doit avoir <20>t<EFBFBD> la valeur de retour d'un pr<70>c<EFBFBD>dent appel de <b>array startsearch</b>. Renvoie une cha<68>ne vide.
</DD>
<DT><br><b>array exists </b><i>arrayName</i>
</DT><DD>Renvoie 1 si <i>arrayName</i> est une variable tableau, 0 s'il n'y a pas de variable de ce nom ou si c'est une variable scalaire. </DD>
<DT><br><b>array get </b><i>arrayName</i> ?<i>pattern</i>? </DT><DD>
Renvoie une liste contenant des paires d'<27>l<EFBFBD>ments. Le premier <20>l<EFBFBD>ment de chaque paire est le nom d'un <20>l<EFBFBD>ment de <i>arrayName</i> et le second <20>l<EFBFBD>ment de chaque paire est la valeur de l'<27>l<EFBFBD>ment de tableau. L'ordre des paires est ind<6E>fini. Si <i>pattern</i> n'est pas sp<73>cifi<66>, alors tous les <20>l<EFBFBD>ments du tableau sont inclus dans le r<>sultat. Si <i>pattern</i> est sp<73>cifi<66>, alors seuls les <20>l<EFBFBD>ments dont les noms correspondent <20> <i>pattern</i> (en utilisant les r<>gles de correspondances de <b>string match</b>) sont inclus. Si <i>arrayName</i> n'est pas le nom d'une variable tableau, ou si le tableau ne contient pas d'<27>l<EFBFBD>ments, alors une liste vide est renvoy<6F>e.
</DD>
<DT><br><b>array names </b><i>arrayName</i> ?<i>pattern</i>?<br></DT><DD>Renvoie une liste contenant le noms de tous les <20>l<EFBFBD>ments dans le tableau qui correspondent <20> <i>pattern</i> (en utilisant les r<>gles de correspondance de <b>string match</b>). Si <i>pattern</i> est omis alors la commande renvoie tous les noms des <20>l<EFBFBD>ments dans le tableau. S'il n'y a pas d '<27>l<EFBFBD>ments (correspondants) dans le tableau, ou si <i>arrayName</i> n'est pas le nom d'une variable tableau, alors une cha<68>ne vide est renvoy<6F>e.
</DD>
<DT><br><b>array nextelement </b><i>arrayName searchId</i><br></DT><DD>Renvoie le nom de l'<27>l<EFBFBD>ment suivant dans <i>arrayName</i>, ou une cha<68>ne vide si tous les <20>l<EFBFBD>ments de <i>arrayName</i> ont d<>j<EFBFBD> <20>t<EFBFBD>s renvoy<6F> dans cette recherche. L'argument <i>searchId</i> identifie la recherche, et doit avoir <20>t<EFBFBD> la valeur de retour d'une commande<b> array startsearch</b>. Attention: si des <20>l<EFBFBD>ments sont ajout<75>s <20> ou effac<61>s de ce tableau, alors toutes les recherches sont automatiquement termin<69>es exactement comme si <b>array donesearch</b> avait <20>t<EFBFBD> appel<65>e; ceci causerait l'echec des op<6F>rations <b>array </b><b>nextelement</b> pour ces recherches.
</DD>
<DT><br><b>array set </b><i>arrayName list</i><br></DT><DD>Fixe les valeurs d'un ou plusieurs <20>l<EFBFBD>ments de <i>arrayName</i>. <i>list</i> doit avoir une forme identique <20> celle renvoy<6F>e par <b>array get</b>, consistant d'un m<>me nombre d'<27>l<EFBFBD>ments. Chaque <20>l<EFBFBD>ment impair dans <i>list</i> est trait<69> comme un nom d'<27>l<EFBFBD>ment dans <i>arrayName</i>, et les <20>l<EFBFBD>ments suivants de <i>list</i> sont utilis<69>s comme une nouvelle valeur pour cet <20>l<EFBFBD>ment de tableau. Si la variable <i>arrayName</i> n'existe pas d<>j<EFBFBD> et que <i>list</i> est vide, <i>arrayName</i> est cr<63><72>e avec une valeur tableau vide.
</DD>
<DT><br><b>array size </b><i>arrayName</i><br></DT><DD>Renvoie une cha<68>ne d<>cimale donnant le nombre d'<27>l<EFBFBD>ments dans le tableau. Si <i>arrayName</i> n'est pas le nom d'un tableau alors 0 est renvoy<6F>.
</DD>
<DT><br><b>array startsearch </b><i>arrayName</i><br></DT><DD>Cette commande initialise une recherche <20>l<EFBFBD>ment-par-<2D>l<EFBFBD>ment dans le tableau d<>sign<67> par <i>arrayName</i>, dont les appels de la commande <b>array </b><b>nextelement</b> renverront les noms des <20>l<EFBFBD>ments individuels dans le tableau. Quand la recherche est termin<69>e, la commande tableau<b> donesearch</b> sera appel<65>e. La valeur de retour est un identificateur de recherche qui doit <20>tre utilis<69> dans les commandes<b> array nextelement</b> et <b>array </b><b>donesearch</b>; il permet <20> de multiples recherches d'<27>tre men<65>es simultan<61>ment sur le m<>me tableau.
</DD>
<DT><br><b>array unset </b><i>arrayName</i> ?<i>pattern</i>?
</DT><DD>Efface tous les <20>l<EFBFBD>ments du tableau qui correspondent <20> <i>pattern</i> (en utilisant les r<>gles correspondantes de <b>string match</b>). Si <i>arrayName</i> n'est pas le nom d'une variable tableau ou qu'il n'y a pas d'<27>l<EFBFBD>ments correspondant dans le tableau, alors une cha<68>ne vide est renvoy<6F>e. Si <i>pattern</i> est omis et que c'est une variable tableau, alors la commande efface le tableau entier.</DD>
</DL></div><br>
<div>Derni<EFBFBD>re r<>vision: 8.3</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="88.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="90.htm"><b>Suivant</b></A>
</div>
</BODY></HTML>

25
hlp/fr/tcl/bgerror.htm Normal file
View File

@@ -0,0 +1,25 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>bgerror&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">bgerror - Commande appel<65>e pour traiter les erreurs d'arri<72>re-plan
</div> <br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>bgerror </b><i>message</i>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>bgerror</b> n'existe pas en tant que partie de Tcl. Par contre, les applications individuelles ou les utilisateurs peuvent definir une commande <b>bgerror</b> (ex. comme une fonction Tcl) s'ils souhaitent g<>rer les erreurs d'arri<72>re-plan. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Une erreur d'arri<72>re-plan est une erreur qui se produit dans un gestionnaire d'<27>v<EFBFBD>nement ou une autre commande qui n'est pas produite par l'application. Par exemple, si une erreur se produit pendant l'ex<65>cution d'une commande sp<73>cifi<66>e avec la commande<A HREF=87.htm><b> after</b></A>, alors c'est une erreur d'arri<72>re-plan. Pour une erreur qui n'est pas d'arri<72>re-plan, l'erreur peut simplement <20>tre remont<6E>e par les <20>valuations de commandes imbriqu<71>es Tcl jusqu'a ce qu'elle atteigne le code de premier plan dans l'application; alors l'application peut rapporter l'erreur de la mani<6E>re souhait<69>e. Quand une erreur d'arri<72>re-plan se produit, le d<>roulement s'ach<63>ve dans la biblioth<74>que Tcl et il n'y a pas de moyen precis pour Tcl de rapporter l'erreur. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Quand Tcl detecte une erreur d'arri<72>re-plan, il sauvegarde l'information relative <20> l'erreur et appelle la commande <b>bgerror</b> plus tard comme un gestionnaire d'<27>v<EFBFBD>nement inactif. Avant d'appeler <b>bgerror</b>, Tcl restaure les variables <b>errorInfo</b> et <b>errorCode</b> aux valeurs en cours <20> l'instant ou l'erreur s'est produite, et appelle <b>bgerror</b> avec le message d'erreur comme seul argument. Tcl suppose que l'application a impl<70>ment<6E> la commande<b> bgerror</b>, et que la commande rapporte l'erreur d'une mani<6E>re sens<6E>e pour l'application.&nbsp; Tcl ignore tout r<>sultat renvoy<6F> par le commande <b>bgerror</b> tant qu'aucune erreur n'est g<>n<EFBFBD>r<EFBFBD>e. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si une autre erreur Tcl se produit <20> l'int<6E>rieur de la commande <b>bgerror</b> (par exemple, parcequ'aucune commande <b>bgerror</b> n'a <20>t<EFBFBD> d<>finie) alors Tcl rapporte l'erreur lui-m<>me en <20>crivant un message sur la sortie standard. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si plusieurs erreurs d'arri<72>re-plan s'accumulent avant que <b>bgerror</b> soit appel<65>e pour les traiter, <b>bgerror</b> sera appel<65>e une fois pour chaque erreur, dans l'ordre ou elles se sont produites. N<>anmoins, si <b>bgerror</b> retourne avec une exception break, alors toute les erreurs restantes seront ignor<6F>es sans appeller <b>bgerror</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Tcl n'a pas d'impl<70>mentation par d<>faut de <b>bgerror</b>. N<>anmoins, dans une application utilisant Tk il y a une fonction <b>bgerror</b> par d<>faut qui affiche une boite de dialogue contenant le message d'erreur et offre <20> l'utilisateur la possibilit<69> de visualiser la trace de la pile montrant o<> l'erreur s'est produite.&nbsp; </div><br>
<div>Derni<EFBFBD>re r<>vision: 7.5</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="89.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="91.htm"><b>Suivant</b></A>
</div>
</BODY></HTML>

178
hlp/fr/tcl/binary.htm Normal file
View File

@@ -0,0 +1,178 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>binary&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">binary - Ins<6E>re et extrait des champs <20> partir de cha<68>nes binaires
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>binary format </b><i>formatString </i>?<i>arg arg ...</i>? <br>
<b>binary scan </b><i>string formatString </i>?<i>varName varName ...</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande fournit des facilit<69>s pour la manipulation de donn<6E>es binaires. La premi<6D>re forme, <b>binary format</b>, cr<63>e une cha<68>ne binaire <20> partir de valeurs Tcl standards. Par exemple, en partant des valeurs 16 et 22, elle produira une cha<68>ne binaire de 8 octets constitu<74>e de deux entiers de 4 octets, un pour chacun des nombres. La seconde forme de la commande, <b>binary scan</b>, fait le contraire: elle extrait les donn<6E>es <20> partir d'une cha<68>ne binaire et les renvoie comme des valeur cha<68>nes Tcl ordinaire.
</div><br>
<div><b>BINARY FORMAT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>binary format</b> g<>n<EFBFBD>re une cha<68>ne binaire dont le format est sp<73>cifi<66> par le <i>formatString</i> et dont le contenu provient des arguments suppl<70>mentaires.&nbsp; La valeur binaire r<>sultante est renvoy<6F>e. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Le <i>formatString</i> est constitu<74> d'une s<>quence de z<>ro ou plus de sp<73>cificateurs de champs s<>par<61>s par z<>ro ou plusieurs espaces. Chaque sp<73>cificateur de champ est un simple caract<63>re suivi par un nombre optionnel <i>compte</i>. La plupart des sp<73>cificateurs de champs attendent un argument pour formater la valeur. Le caract<63>re sp<73>cifie comment la valeur est format<61>e. Le nombre <i>compte</i> indique combien d'items du type sp<73>cifi<66> sont pr<70>sents dans la valeur. Si pr<70>sent, <i>compte</i> est un entier d<>cimal non-n<>gatif ou <A HREF="24.htm"><b>*</b></A>, qui indique normalement que tous les <20>l<EFBFBD>ments de la valeur doivent <20>tre utilis<69>s. Si le nombre d'arguments ne correspond&nbsp; pas au nombre de champs dans le format cha<68>ne qui attend les arguments, alors une erreur est g<>n<EFBFBD>r<EFBFBD>e. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Chaque paire type-compte d<>place un curseur imaginaire au travers des donn<6E>es binaires, en stockant les octets <20> la position courante et avancant le curseur juste apr<70>s le dernier octet stock<63>.&nbsp; Le curseur est initialement <20> la position 0 au d<>but des donn<6E>es. Le type peut <20>tre l'un des caract<63>res suivants: </div>
<div ALIGN="LEFT" style="margin-left: 51px;">
<DL>
<DT><b>a</b></DT><DD>Stocke une cha<68>ne de caract<63>res de longueur <i>compte</i> dans la cha<68>ne de sortie. Si <i>arg</i> a moins d'octets que <i>compte</i>, alors des octets suppl<70>mentaire nuls sont utilis<69>s pour remplir le champ. Si <i>arg</i> est plus long que la longueur sp<73>cifi<66>e, les caract<63>res suppl<70>mentaires sont ignor<6F>s. Si <i>compte</i> est <b>*</b></A>, alors tous les octets de <i>arg</i> sont format<61>s. Si <i>compte</i> est omis, alors un caract<63>re est format<61>. Par exemple,
<b>binary format a7a* alpha bravo charlie</b>
renverra une cha<68>ne <20>quivalente <20> <b>alpha&#92;000&#92;000bravoc</b>.
</DD>
<DT><b>A</b></DT><DD>Cette forme est la m<>me que <b>a</b> except<70> que des espaces sont utilis<69>s pour le remplissage au lieu de nuls. Par exemple,
<b>binary format A6A*A alpha bravo charlie</b>
renverra <b>alpha bravoc</b>.
</DD>
<DT><b>b</b></DT><DD>Stocke une cha<68>ne de <i>compte</i> chiffres binaires en ordre croissant dans chaque octet de la cha<68>ne de sortie. <i>Arg</i> doit contenir une s<>quence de <b>1</b> et de <b>0</b>. Les octets r<>sultants sont emis du premier au dernier&nbsp; avec les bits format<61>s de bas en haut dans chaque octet. Si <i>arg</i> a moins de chiffres que <i>compte</i>, alors des z<>ros seront utilis<69>s pour les bits restant. Si <i>arg</i> a plus de chiffres que le nombre sp<73>cifi<66>s, les chiffres suppl<70>mentaires sont ignor<6F>s.&nbsp; Si <i>compte</i> est <b>*</b></A>, alors tous les chiffres de <i>arg</i> sont format<61>s. Si <i>compte</i> est omis, alors un digit est format<61>. Si le nombre de bits format<61>s ne finit pas <20> un&nbsp; une limite d'octet, les bits restants du dernier octet seront des z<>ros. Par exemple,
<b>binary format b5b* 11100 111000011010</b>
renverra une cha<68>ne <20>quivalentee <20> <b>&#92;x07&#92;x87&#92;x05</b>.</DD>
<DT><b>B</b></DT><DD>Cette forme est la m<>me que <b>b</b> except<70> que le bits sont stock<63>s dans l'ordre descendant dans chaque octet. Par exemple,
<b>binary format B5B* 11100 111000011010</b>
renverra une cha<68>ne <20>quivalentee <20> <b>&#92;xe0&#92;xe1&#92;xa0</b>.
</DD>
<DT><b>h</b></DT><DD>Stocke une cha<68>ne de <i>compte</i> chiffres hexad<61>cimaux de bas en haut dans chaque octet de la cha<68>ne de sortie.&nbsp; <i>Arg</i> doit contenir une s<>quence de caract<63>res comprise dans ``0123456789abcdefABCDEF''. Les octets r<>sultants sont <20>mis du premier au dernier avec les chiffres hexa format<61>s de bas en haut dans chaque octet.&nbsp; Si <i>arg</i> a moins de chiffres que <i>compte</i>, alors des z<>ros sont utilis<69>s pour les chiffres restants. Si <i>arg</i> a plus de chiffres que le nombre sp<73>cifi<66>s, les chiffres suppl<70>mentaires seront ignor<6F>s.&nbsp; Si <i>compte</i> est <b>*</b>, alors tous les chiffres de <i>arg</i> seront format<61>s.&nbsp; Si <i>compte</i> est omis, alors un digit est format<61>.&nbsp; Si le nombre de chiffres format<61>e ne finit pas <20> une limite d'octet, les bits restants du dernier octet seront des z<>ros. Par exemple,
<b>binary format h3h* AB def</b>
renverra une cha<68>ne <20>quivalente <20> <b>&#92;xba&#92;x00&#92;xed&#92;x0f</b>.
</DD>
<DT><b>H</b></DT><DD>Cette forme est la m<>me que <b>h</b> except<70> que le chiffres sont stock<63>s de&nbsp; haut en bas dans chaque octet.&nbsp; Par exemple,
<b>binary format H3H* ab DEF</b>
renverra une cha<68>ne <20>quivalente <20> <b>&#92;xab&#92;x00&#92;xde&#92;xf0</b>.
</DD>
<DT><b>c</b></DT><DD>Stocke une ou plusieurs valeur enti<74>res 8-bit dans la cha<68>ne de sortie.&nbsp; Si aucun <i>compte</i> n'est sp<73>cifi<66>, alors <i>arg</i> doit <20>tre une valeur enti<74>re; autrement <i>arg</i> doit <20>tre une liste contenant au moins <i>compte</i> <20>l<EFBFBD>ments entiers.&nbsp; Les 8 bits de poids faible de chaque entier sont stock<63>s comme une valeur d'un octet <20> la position du curseur.&nbsp; Si <i>compte</i> est <b>*</b>, alors tous les entiers de la liste sont format<61>s.&nbsp; Si le nombre d'<27>l<EFBFBD>ments dans la liste est inf<6E>rieur <20> <i>compte</i>, alors une erreur est g<>n<EFBFBD>r<EFBFBD>e.&nbsp; Si le nombre d'<27>l<EFBFBD>ments dans la liste est sup<75>rieur <20> <i>compte</i>, alors les <20>l<EFBFBD>ments suppl<70>mentaires sont ignor<6F>s.&nbsp; Par exemple,
<b>binary format c3cc* &#123;3 -3 128 1} 260 &#123;2 5}</b>
renverra une cha<68>ne <20>quivalente <20> <b>&#92;x03&#92;xfd&#92;x80&#92;x04&#92;x02&#92;x05</b>, alors que
<b>binary format c &#123;2 5}</b>
g<EFBFBD>n<EFBFBD>rera une erreur.
</DD>
<DT><b>s</b></DT><DD>Cette forme est la m<>me que <b>c</b> except<70> qu'elle stocke un ou plusieurs entiers 16-bit en ordre little-endian dans la cha<68>ne de sortie. Les 16 bits de poids faible de chaque entier sont stock<63>s comme une valeur de deux-octet <20> la position du curseur avec l'octet de poids faible stock<63> en premier.&nbsp; Par exemple,
<b>binary format s3 &#123;3 -3 258 1}</b>
renverra une cha<68>ne <20>quivalente <20>&nbsp; <b>&#92;x03&#92;x00&#92;xfd&#92;xff&#92;x02&#92;x01</b>.
</DD>
<DT><b>S</b></DT><DD>Cette forme est la m<>me que <b>s</b> except<70> qu'elle stocke un ou plusieurs entiers 16-bit en ordre big-endianx dans la cha<68>ne de sortie.&nbsp; Par exemple,
<b>binary format S3 &#123;3 -3 258 1}</b>
renverra une cha<68>ne <20>quivalente <20>&nbsp; <b>&#92;x00&#92;x03&#92;xff&#92;xfd&#92;x01&#92;x02</b>.
</DD>
<DT><b>i</b></DT><DD>Cette forme est la m<>me que <b>c</b> except<70> qu'elle stocke un ou plusieurs entiers 32-bit en ordre little-endian dans la cha<68>ne de sortie. Les 32 bits de poids faible de chaque entier sont stock<63>s comme une valeur de quatre-octet <20> la position du curseur avec l'octet de poids faible stock<63> en premier.Par exemple,
<b>binary format i3 &#123;3 -3 65536 1}</b>
renverra une cha<68>ne <20>quivalente <20> <b>&#92;x03&#92;x00&#92;x00&#92;x00&#92;xfd&#92;xff&#92;xff&#92;xff&#92;x00&#92;x00&#92;x01&#92;x00</b>
</DD>
<DT><b>I</b></DT><DD>Cette forme est la m<>me que <b>i</b> except<70> qu'elle stocke un ou plusieurs 32-bit entiers en ordre big-endian dans la cha<68>ne de sortie. Par exemple,
<b>binary format I3 &#123;3 -3 65536 1}</b>
renverra une cha<68>ne <20>quivalente <20> <b>&#92;x00&#92;x00&#92;x00&#92;x03&#92;xff&#92;xff&#92;xff&#92;xfd&#92;x00&#92;x01&#92;x00&#92;x00</b>
</DD>
<DT><b>f</b></DT><DD>Cette forme est la m<>me que <b>c</b> except<70> qu'elle stocke un ou plusieurs flottants simple precision dans la repr<70>sentation native de la machine dans la cha<68>ne de sortie. Cette repr<70>sentation n'est pas portable, donc elle ne doit pas <20>tre utilis<69>e pour communiquer des nombres flottants sur le r<>seau. La taille d'un nombre flottant peut varier selon les architectures, donc le nombre d'octets g<>n<EFBFBD>r<EFBFBD>s peut varier.Si la valeur deborde de la repr<70>sentation native de la machine, alors la valeur de FLT_MAX d<>finie par le syst<73>me sera utilis<69>e.Parce que Tcl utilise des nombres flottants double-precision en interne, il peut y avoir une certaine perte de precision dans la conversion en simple-precision. Par exemple, sur un syst<73>me Windows s'ex<65>cutant sur un processeur Pentium Intel,
<b>binary format f2 &#123;1.6 3.4}</b>
renverra une cha<68>ne <20>quivalente <20><b>&#92;xcd&#92;xcc&#92;xcc&#92;x3f&#92;x9a&#92;x99&#92;x59&#92;x40</b>.
</DD>
<DT><b>d</b></DT><DD>Cette forme est la m<>me que <b>f</b> except<70> qu'elle stocke un ou plusieurs flottants double-precision dans la repr<70>sentation native de la machine dans la cha<68>ne de sortie.&nbsp; Par exemple, sur un syst<73>me Windows s'ex<65>cutant sur un processeur Pentium Intel,
<b>binary format d1 &#123;1.6}</b>
renverra une cha<68>ne <20>quivalente <20> <b>&#92;x9a&#92;x99&#92;x99&#92;x99&#92;x99&#92;x99&#92;xf9&#92;x3f</b>.
</DD>
<DT><b>x</b></DT><DD>Stocke <i>compte</i> octet nuls dans la cha<68>ne de sortie. Si <i>compte</i> n'est pas sp<73>cifi<66>, elle stocke un octet null.&nbsp; Si <i>compte</i> est <b>*</b>, elle g<>n<EFBFBD>re une erreur. Ce type n'attend pas d'argument.Par exemple,
<b>binary format a3xa3x2a3 abc def ghi</b>
renverra une cha<68>ne <20>quivalente <20> <b>abc&#92;000def&#92;000&#92;000ghi</b>.
</DD>
<DT><b>X</b></DT><DD>D<EFBFBD>place le curseur en arri<72>re de <i>compte</i> octets dans la cha<68>ne de sortie.&nbsp; Si <i>compte</i> est <b>*</b>ou est sup<75>rieur <20> la position courante du curseur, alors le curseur est positionn<6E> <20> l'emplacement 0 ainsi l'octet suivant stock<63> sera le premier octet dans la cha<68>ne r<>sultat. Si <i>compte</i> est omis alors le curseur est d<>plac<61> d'un octet vers l'arri<72>re. Ce type n'attend pas d'argument.Par exemple,
<b>binary format a3X*a3X2a3 abc def ghi</b>
renverra <b>dghi</b>.
</DD>
<DT><b>@</b></DT><DD>D<EFBFBD>place le curseur <20> l'emplacement absolu sp<73>cifi<66> par <i>compte</i> dans la cha<68>ne de sortie.&nbsp; La position 0 correspond au premier octet dans la cha<68>ne de sortie.&nbsp; Si <i>compte</i> correspond <20>&nbsp; une position au-dela du dernier octet stock<63>, alors des octet nuls seront&nbsp; plac<61>s aux emplacements non initalis<69>s et le curseur sera plac<61> <20> l'emplacement sp<73>cifi<66>.&nbsp; Si <i>compte</i> est <b>*</b>, alors le curseur est d<>plac<61> <20> la fin de la cha<68>ne de sortie actuelle.&nbsp; Si <i>compte</i> est omis, alors une erreur est g<>n<EFBFBD>r<EFBFBD>e. Ce type n'attend pas d'argument. Par exemple,
<b>binary format a5@2a1@*a3@10a1 abcde f ghi j</b>
renverra <b>abfdeghi&#92;000&#92;000j</b>. <br>
</DD>
</DL>
</div>
<div><b>BINARY SCAN</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>binary scan</b> analyse les champs d'une cha<68>ne binaire, retournant le nombre de conversions effectu<74>es.&nbsp; <i>String</i> donne l'entr<74>e <20> analyser et <i>formatString</i> indique comment l'analyser. Chaque <i>varName</i> donne le nom d'une variable; quand un champ de <i>string</i> est analys<79> le r<>sultat est assign<67> <20> la variable correspondante. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Comme avec <b>binary format</b>, le <i>formatString</i> est constitu<74> d'une s<>quence de z<>ro ou plusieurs sp<73>cificateurs de champs s<>par<61>es par z<>ro ou plusieurs espaces.&nbsp; Chaque sp<73>cificateur de champ est un simple caract<63>re suivi par un nombre optionnel <i>compte</i>.&nbsp; La plupart des sp<73>cificateurs de champs utilisent un argument pour obtenir la variable dans laquelle les valeurs seront plac<61>es.&nbsp; Le caract<63>re sp<73>cifie comment les donn<6E>es binaires sont interpr<70>t<EFBFBD>es.&nbsp; Le <i>compte</i> indique typiquement combien d'examplaires du type sp<73>cifi<66> sont extraits des donn<6E>es.&nbsp; Si pr<70>sent, <i>compte</i> est un entier d<>cimal non-n<>gatif ou <b>*</b>, qui indique normalement que tous les items restant dans les donn<6E>es doivent <20>tre utilis<69>s. S'il n'y a pas assez d'octets apr<70>s la position courante du curseur pour satisfaire le sp<73>cificateur de champ courant, alors la variable correspondante est inchang<6E>e et <b>binary scan</b> retourne imm<6D>diatement avec le nombre de variables qui ont <20>t<EFBFBD> de'finies. S'il n'y a pas assez d'arguments pour tous les champs de la cha<68>ne format n<>cessitant des arguments, alors une erreur est g<>n<EFBFBD>r<EFBFBD>e. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Il est <b>important</b> de noter que les <b>c</b>, <b>s</b>, et <b>S</b> (et <b>i</b> et <b>I</b> sur les syst<73>mes 64bit) extraient les donn<6E>es dans des entiers de type long.&nbsp; Ce faisant, les entiers qui ont leurs bit haut&nbsp; positionn<6E> (0x80 pour chars, 0x8000 pour shorts, 0x80000000 pour ints), seront sign<67>es.Ainsi : </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>set signShort &#91;binary format s1 0x8000]</b><br>
<b>binary scan &#36;signShort s1 val;</b><i># val == 0xFFFF8000</i></div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si vous voulez produire une valeur non sign<67>e, vous pouvez masquer la valeur de retour <20> la taille d<>sir<69>e.&nbsp; Par exemple, pour produire un entier court non sign<67>e: </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>set val &#91;expr &#123;&#36;val &amp; 0xFFFF}];</b><i># val == 0x8000</i></div>
<div ALIGN="LEFT" style="margin-left: 51px;">Chaque paire type-compte d<>place un curseur imaginaire le long des donn<6E>es binaires, en lisant les octets <20> la position courante.&nbsp; Initialement le curseur est <20> la position 0 au d<>but des donn<6E>es. Le type peut <20>tre l'un des caract<63>res suivants:
<DL>
<DT><b>a</b></DT><DD>Les donn<6E>es sont une cha<68>ne de caract<63>res de longueur <i>compte</i>.&nbsp; Si <i>compte</i> est <b>*</b>, alors tous les octets restants dans <i>string</i> seront scann<6E>s dans la variable.&nbsp; Si <i>compte</i> est omis, alors un caract<63>re sera scann<6E>. Par exemple,
<b>binary scan abcde&#92;000fghi a6a10 var1 var2</b>
retournera <b>1</b> avec la cha<68>ne <20>quivalente <20> <b>abcde&#92;000</b> stock<63>e dans <b>var1</b> et <b>var2</b> inchang<6E>e.
</DD>
<DT><b>A</b></DT><DD>Cette forme est la m<>me que <b>a</b>, except<70> que les espaces et les nulls sont enlev<65>s de la valeur scann<6E>e avant d'<27>tre stock<63> dans la variable.&nbsp; Par exemple,
<b>binary scan &quot;abc efghi &#92;000&quot; A* var1</b>
renverra <b>1</b> avec <b>abc efghi</b> stock<63> dans&nbsp; <b>var1</b>.
</DD>
<DT><b>b</b></DT><DD>Les donn<6E>es sont transform<72>es en une cha<68>ne de <i>compte</i> chiffres binaires de bas en haut represent<6E>s comme une s<>quence de caract<63>res &quot;1&quot; et &quot;0&quot;. Les octets de donn<6E>es sont scann<6E>es du premier au dernier avec les bits rang<6E>s de bas en haut pour chaque octet. Les bits suppl<70>mentaires dans le dernier octet sont ignor&eacutes;. Si <i>compte</i> est <b>*</b>, alors tous les bits restant dans <A HREF="165.htm"><b>string</b></A> seront scann<6E>s. Si <i>compte</i> est omis, alors un bit sera scann<6E>.Par exemple,
<b>binary scan&#92;x07&#92;x87&#92;x05 b5b* var1 var2</b>
renverra <b>2</b> avec <b>11100</b> stock<63> dans <b>var1</b> et <b>1110000110100000</b> stock<63> dans <b>var2</b>.
</DD>
<DT><b>B</b></DT><DD>Cette forme est la m<>me que <b>b</b>, except<70> que les bits sont stock<63>s dans l'ordre descendant dans chaque octet. Par exemple,
<b>binary scan&#92;x70&#92;x87&#92;x05 B5B* var1 var2</b>
renverra <b>2</b> avec <b>01110</b> stock<63> dans&nbsp; <b>var1</b> et <b>1000011100000101</b> stock<63> dans <b>var2</b>.
</DD>
<DT><b>h</b></DT><DD>Les donn<6E>es sont transform<72>es en une cha<68>ne de <i>compte</i> chiffres hexad<61>cimaux dans l'ordre de bas en haut represent<6E>s par une s<>quence de caract<63>res de &quot;0123456789abcdef&quot;. Les octets de donn<6E>es sont scann<6E>s du premier au dernier avec les chiffres hexa extraits de bas en haut dans chaque octet. Les bits suppl<70>mentaires dans le dernier octet sont ignor<6F>s. Si <i>compte</i> est <b>*</b>, alors tous les chiffres hexa restant dans <A HREF="165.htm"><b>string</b></A> sont scann<6E>s. Si <i>compte</i> est omis, alors un digit hexa sera scann<6E>. Par exemple,
<b>binary scan&#92;x07&#92;x86&#92;x05 h3h* var1 var2</b>
renverra <b>2</b> avec <b>706</b> stock<63> dans <b>var1</b> et <b>50</b> stock<63> dans <b>var2</b>.
</DD>
<DT><b>H</b></DT><DD>Cette forme est la m<>me que <b>h</b>, except<70> que les chiffres sont extraits de haut en bas dans chaque octet. Par exemple,
<b>binary scan&#92;x07&#92;x86&#92;x05 H3H* var1 var2</b>
renverra <b>2</b> avec <b>078</b> stock<63> dans <b>var1</b> et <b>05</b> stock<63> dans <b>var2</b>.
</DD>
<DT><b>c</b></DT><DD>Les donn<6E>es sont transform<72>es en <i>compte</i> entiers sign<67>s 8-bit et stock<63>es dans la variable correspondante sous forme de liste. Si <i>compte</i> est <b>*</b>, alors tous les octets restant de <A HREF="165.htm"><b>string</b></A> seront scann<6E>s. Si <i>compte</i> est omis, alors un entier 8-bit sera scann<6E>. Par exemple,
<b>binary scan&#92;x07&#92;x86&#92;x05 c2c* var1 var2</b>
renverra <b>2</b> avec <b>7 -122</b> stock<63> dans <b>var1</b> et <b>5</b> stock<63> dans <b>var2</b>. Notez que les entiers renvoy<6F>s sont sign<67>s, mais ils peuvent <20>tre convertis en entiers 8-bit non sign<67>es en utilisant une expression telle que:
<b>expr ( &#36;num + 0x100 ) % 0x100</b>
</DD>
<DT><b>s</b></DT><DD>Les donn<6E>es sont interpr<70>t<EFBFBD>es comme <i>compte</i> entiers sign<67>s 16-bit represent<6E> en little-endian.&nbsp; Les entiers sont stock<63>s dans la variable correspondante sous forme de liste. Si <i>compte</i> est <b>*</b>, alors tous les octets restants de <A HREF="165.htm"><b>string</b></A> seront scann<6E>s. Si <i>compte</i> est omis, alors un entier 16-bit sera scann<6E>. Par exemple,
<b>binary scan&#92;x05&#92;x00&#92;x07&#92;x00&#92;xf0&#92;xff s2s* var1 var2</b>
renverra <b>2</b> avec <b>5 7</b> stock<63> dans <b>var1</b> et <b>-16</b> stock<63> dans <b>var2</b>.Notez que les entiers renvoy<6F>s sont sign<67>s, mais ils peuvent <20>tre convertis en entiers 16-bit non sign<67>es en utilisant une expression telle que:
<b>expr ( &#36;num + 0x10000 ) % 0x10000</b>
</DD>
<DT><b>S</b></DT><DD>Cette forme est la m<>me que <b>s</b> except<70> que les donn<6E>es sont interpr<70>t<EFBFBD>es comme <i>compte</i> entiers 16-bit sign<67>s represent<6E> en big-endian.&nbsp; Par exemple,
<b>binary scan&#92;x00&#92;x05&#92;x00&#92;x07&#92;xff&#92;xf0 S2S* var1 var2</b>
renverra <b>2</b> avec <b>5 7</b> stock<63> dans <b>var1</b> et <b>-16</b> stock<63> dans <b>var2</b>.
</DD>
<DT><b>i</b></DT><DD>Les donn<6E>es sont interpr<70>t<EFBFBD>es comme <i>compte</i> entiers 32-bit sign<67>s represent<6E>s en little-endian. Les entiers sont stock<63>s dans la variable correspondante sous forme de liste. Si <i>compte</i> est <b>*</b>, alors tous octets restants de <A HREF="165.htm"><b>string</b></A> seront scann<6E>s. Si <i>compte</i> est omis, alors un entier 32-bit sera scann<6E>. Par exemple,
<b>binary scan&#92;x05&#92;x00&#92;x00&#92;x00&#92;x07&#92;x00&#92;x00&#92;x00&#92;xf0&#92;xff&#92;xff&#92;xff </b><b>i2i* var1 var2</b>
renverra <b>2</b> avec <b>5 7</b> stock<63> dans <b>var1</b> et <b>-16</b> stock<63> dans <b>var2</b>. Notez que les entiers renvoy<6F>s sont sign<67>s et ne peuvent pas <20>tre represent<6E>s par Tcl comme valeurs non sign<67>es.
</DD>
<DT><b>I</b></DT><DD>Cette forme est la m<>me que <b>i</b> except<70> que les donn<6E>es sont&nbsp; interpr<70>t<EFBFBD>es comme <i>compte</i> entiers 32-bit sign<67>s represent<6E> en big-endian.&nbsp; Par exemple,
<b>binary&#92;x00&#92;x00&#92;x00&#92;x05&#92;x00&#92;x00&#92;x00&#92;x07&#92;xff&#92;xff&#92;xff&#92;xf0 I2I* </b><b>var1 var2</b>
renverra <b>2</b> avec <b>5 7</b> stock<63> dans <b>var1</b> et <b>-16</b> stock<63> dans <b>var2</b>.
</DD>
<DT><b>f</b></DT><DD>Les donn<6E>es sont interpr<70>t<EFBFBD>es comme <i>compte</i> nombre flottants simple-pr<70>cision dans la repr<70>sentation native de la machine.&nbsp; Les nombres flottants sont stock<63>s dans la variable correspondante sous forme de liste.&nbsp; Si <i>compte</i> est <b>*</b>, alors tous les octets restants de <A HREF="165.htm"><b>string</b></A> seront scann<6E>s. Si <i>compte</i> est omis, alors un nombre flottant simple-pr<70>cision sera scann<6E>. La taille d'un nombre flottant peut varier selon les architectures, donc le nombre d'octets scann<6E>s peut varier. Si les donn<6E>es ne repr<70>sentent pas un nombre flottant valide, la valeur r<>sultante est ind<6E>finie et d<>pend du compilateur. Par exemple, sur un syst<73>me Windows s'ex<65>cutant sur un processeur Pentium Intel,
<b>binary scan&#92;x3f&#92;xcc&#92;xcc&#92;xcd f var1</b>
>renverra <b>1</b> avec <b>1.6000000238418579</b> stock<63> dans <b>var1</b>.
</DD>
<DT><b>d</b></DT><DD>Cette forme est la m<>me que <b>f</b> except<70> que les donn<6E>es sont interpr<70>t<EFBFBD>es comme <i>compte</i> nombre flottants double-precision dans la repr<70>sentation native de la machine. Par exemple, , sur un syst<73>me Windows s'ex<65>cutant sur un processeur Pentium Intel,
<b>binary scan&#92;x9a&#92;x99&#92;x99&#92;x99&#92;x99&#92;x99&#92;xf9&#92;x3f d var1</b>
renverra <b>1</b> avec <b>1.6000000000000001</b> stock<63> dans <b>var1</b>.
</DD>
<DT><b>x</b></DT><DD>D<EFBFBD>place le curseur en avant de <i>compte</i> octets dans <i>string</i>. Si <i>compte</i> est <b>*</b> ou est sup<75>rieur au nombre d'octets apr<70>s la position courante du curseur, alors le curseur est positionn<6E> apr<70>s le dernier octet de <i>string</i>.&nbsp; Si <i>compte</i> est omis, alors le curseur est d<>plac<61> en avant d'un octet. Notez que ce type n'attend pas d'argument. Par exemple,
<b>binary scan&#92;x01&#92;x02&#92;x03&#92;x04 x2H* var1</b>
renverra <b>1</b> avec <b>0304</b> stock<63> dans <b>var1</b>.
</DD>
<DT><b>X</b></DT><DD>D<EFBFBD>place le curseur en arri<72>re de&nbsp; <i>compte</i> octets dans <i>string</i>. Si <i>compte</i> est <b>*</b> ou est sup<75>rieur <20> la position courante du curseur, alors le curseur est positionn<6E> <20> la position 0 de telle sorte que le prochain octet scann<6E> sera le premier octet de <i>string</i>. Si <i>compte</i> est omis alors le curseur est d<>plac<61> en arri<72>re d'un octet.&nbsp; Notez que ce type n'attend pas d'argument.&nbsp; Par exemple,
<b>binary scan&#92;x01&#92;x02&#92;x03&#92;x04 c2XH* var1 var2</b>
renverra <b>2</b> avec <b>1 2</b> stock<63> dans <b>var1</b> et <b>020304</b> stock<63> dans <b>var2</b>.
</DD>
<DT><b>@</b></DT><DD>D<EFBFBD>place le curseur <20> la position absolu de la cha<68>ne sp<73>cifi<66>e par <i>compte</i>. Notez que la position 0 correspondante au premier octet de <i>string</i>. Si <i>compte</i> correspond <20> une position au-dela de la fin de <i>string</i>, alors le curseur est positionn<6E> apr<70>s le dernier octet. Si <i>compte</i> est omis, alors une erreur est g<>n<EFBFBD>r<EFBFBD>e. Par exemple,
<b>binary scan&#92;x01&#92;x02&#92;x03&#92;x04 c2@1H* var1 var2</b>
renverra <b>2</b> avec <b>1 2</b> stock<63> dans <b>var1</b> et <b>020304</b> stock<63> dans <b>var2</b>.<br>
</DD>
</DL>
</div>
<div><b>PLATFORM ISSUES</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Il est parfois souhaitable de formater ou scanner des valeur enti<74>res dans l'ordre natif des octets de la machine. R<>f<EFBFBD>rez vous <20> l'<27>l<EFBFBD>ment <b>byteOrder</b> du tableau <b>tcl_platform</b> pour conna<6E>tre le caract<63>re <20> utiliser pour formater ou scanner des entiers.
</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><A HREF="117.htm">format</A>, <A HREF="159.htm">scan</A>, <A HREF="170.htm">tclvars</A> </div>
<div>Derni<EFBFBD>re r<>vision: 8.0</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="90.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="92.htm"><b>Suivant</b></A>
</div>
</BODY></HTML>

18
hlp/fr/tcl/break.htm Normal file
View File

@@ -0,0 +1,18 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>break&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">break <20> Sort d'une commande de boucle
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>break</b>
</div> <br>
<div><b>DESCRIPTION</b></div><br>
<div>Cette commande est habituellement appel<65>e dans le corps d'une commande de boucle tel que <A HREF="115.htm"><b>for</b></A> ou <A HREF="116.htm"><b>foreach</b></A> ou <A HREF="181.htm"><b>while</b></A>. Elle renvoie un code TCL_BREAK, qui cause une exception break. L'exception cause l'arr<72>t du script courant <20> l'int<6E>rieur de la commande de boucle, qui cesse alors son ex<65>cution et retourne normalement. Les exceptions break sont aussi g<>r<EFBFBD>es dans quelques autres cas, tels que la commande <A HREF="94.htm"><b>catch</b></A>, les <i>bindings</i> d'<27>v<EFBFBD>nement Tk, et les scripts externes des corps de fonction.</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="91.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="93.htm"><b>Suivant</b></A>
</div>
</BODY></HTML>

21
hlp/fr/tcl/case.htm Normal file
View File

@@ -0,0 +1,21 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>case&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">case - Evalue un parmi plusieurs scripts, d<>pendant d'une valeur donn<6E>e
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>case</b><i> string </i>?<b>in</b>? <i>patList body </i>?<i>patList body </i>...? <br>
<b>case</b><i> string </i>?<b>in</b>? &#123;<i>patList body </i>?<i>patList body </i>...?}
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51.htmpx;"><i>Note: la commande </i><b>case </b><i>est obsol<6F>te et est support<72>e uniquement pour </i><i>compatibilit<EFBFBD> ascendante.&nbsp; Elle sera supprim<69>e un jour ou l'autre. Utilisez la </i><i>plutot la commande </i><A HREF="167.htm"><b>switch </b></A><i>.</i> </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>case</b> compare <i>string</i> <20> chacun des arguments <i>patList</i> dans l'ordre. Chaque argument <i>patList</i> est une liste d'un ou plusieurs mod<6F>les. Si un de ces mod<6F>les correspond <20> <i>string</i> alors <b>case</b> <20>value l'argument <i>body</i> suivant en le transmettant r<>cursivement <20> l'interpr<70>teur Tcl et renvoie le r<>sultat de cette evaluation. Chaque argument <i>patList</i> est constitu<74> d'un simple mod<6F>le ou d'une liste de mod<6F>les.&nbsp; Chaque mod<6F>le peut contenir un des jokers d<>crits dans <b>string </b><b>match</b>.&nbsp; Si un argument <i>patList</i> est <b>default</b>, le <i>body</i> correspondant sera <20>valu<6C> si aucun <i>patList</i> ne correspond <20> <i>string</i>.&nbsp; Si aucun argument <i>patList</i> ne correspond <20> <i>string</i> et default n'est pas d<>fini, alors la commande<b> case</b> renvoie une cha<68>ne vide. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Deux syntaxes sont fournies pour les arguments<i> patList</i> et <i>body</i>. La premi<6D>re utilise un argument s<>par<61> pour chacun des mod<6F>les et commandes; cette forme convient si les substitutions sont d<>sir<69>es dans un des mod<6F>les ou des commandes. La seconde forme regroupe tous les mod<6F>les et commandes dans un simple argument; l'argument doit avoir une structure de liste correcte, les <20>l<EFBFBD>ments de la liste etant les mod<6F>les et commandes. La seconde forme facilite la construction de commandes case multi-ligne, car les accolades englobant la liste rendent inutile l'inclusion d'un antislash <20> la fin de chaque ligne. Comme les arguments <i>patList</i> sont entre accolades dans la seconde forme, aucune substitution de commande ou de variable ne leur sont appliqu<71>es; ceci rend le comportement de la seconde forme diff<66>rent de la premi<6D>re dans quelque cas.</div><br>
<div>Derni<EFBFBD>re r<>vision: 7.0</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="92.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="94.htm"><b>Suivant</b></A></div>
</BODY></HTML>

34
hlp/fr/tcl/catch.htm Normal file
View File

@@ -0,0 +1,34 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>catch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">catch - Evalue un script et intercepte les renvois d'exceptions
</div><br>
<div><b>SYNTHESE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>catch</b><i> script </i>?<i>varName</i>?
</div> <br>
<div><b>DESCRIPTION</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>catch</b> peut <20>tre employ<6F>e pour empecher les erreurs de faire <20>chouer l'<27>valuation d'une commande. <b>Catch</b> appelle l'interpr<70>teur Tcl r<>cursivement pour ex<65>cuter <i>script</i>, et retourne toujours sans lever une erreur, ind<6E>pendemment de toute erreur produite pendant l'ex<65>cution de <i>script</i>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si <i>script</i> l<>ve une erreur, <b>catch</b> renverra une valeur enti<74>re diff<66>rente de z<>ro correspondant <20> un des code de retours d'exceptions (voir tcl.h pour la d<>finitions des codes). Si l'argument <i>varName</i> est fourni, alors le message d'erreur de l'<27>valuation de <i>script</i> est affect<63> <20> la variable d<>signe par <i>varName</i>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si <i>script</i> ne l<>ve pas d'erreur, <b>catch</b> renverra 0 (TCL_OK) et la valeur renvoy<6F>e par <i>script</i> est affect<63>e <20> la variable. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Notez que <b>catch</b> intercepte toutes exceptions, incluant celles g<>n<EFBFBD>r<EFBFBD>es par <A HREF="92.htm"><b>break</b></A> et <A HREF="99.htm"><b>continue</b></A> aussi bien que les erreurs. Les seules erreurs qui ne sont pas intercept<70>es sont les erreurs de syntaxe trouv<75>es quand le script est compil<69>. Ceci est du <20> ce que la commande catch n'intercepte les erreurs qu'<27> l'ex<65>cution. Quand l'instruction catch est compil<69>e, le script est aussi compil<69> et toutes les erreurs de syntaxe g<>n<EFBFBD>rent une erreur Tcl. <br>
</div><br>
<div><b>EXEMPLES</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"> La commande <b>catch</b> peut <20>tre employ<6F>e dans un <A HREF="123.htm"><b>if</b></A> pour des choix bas<61>s sur le succ<63>s d'un script. </div>
<CODE><div ALIGN="LEFT" style="margin-left: 102px;">if &#123; &#91;catch &#123;open &#36;someFile w} fid] } &#123;<br>
puts stderr &quot;Ne peut ouvrir &#36;someFile en <20>criture&#92;n&#36;fid&quot;<br>
exit 1<br>
}</div>
</CODE>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>catch</b> n'interceptera pas les erreurs de syntaxe compil<69>es. La premi<6D>re fois que la proc <b>foo</b> sera appel<65>e, le corps sera compil<69> et une erreur Tcl sera g<>n<EFBFBD>r<EFBFBD>e. </div>
<CODE><div ALIGN="LEFT" style="margin-left: 102px;">proc foo &#123;} &#123;<br>
catch &#123;expr &#123;1 +- }}<br>
}</div>
</CODE><div ALIGN="LEFT" style="margin-left: 51px;"> </div><br>
<div>Derni<EFBFBD>re r<>vision: 8.0</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="93.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="95.htm"><b>Suivant</b></A></div>
</BODY></HTML>

20
hlp/fr/tcl/cd.htm Normal file
View File

@@ -0,0 +1,20 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>
cd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl
</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">cd - Change le r<>pertoire de travail
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>cd </b>?<i>dirName</i>? <br>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div>Change le r<>pertoire de travail courant en <i>dirName</i>, ou en
r<EFBFBD>pertoire home (d<>fini par la variable d'environnement HOME) si <i>dirName</i> n'est pas donn<6E>. Retoune une cha<68>ne vide. </div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="94.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="96.htm"><b>Suivant</b></A></div>
</BODY></HTML>

90
hlp/fr/tcl/clock.htm Normal file
View File

@@ -0,0 +1,90 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD<BODY>
<div><H3><b>clock&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">clock- Obtient et manipule l'heure
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>clock </b><i>option</i> ?<i>arg arg ...</i> <br>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande effectue l'une des op<6F>rations qui permettent d'obtenir ou de manipuler des cha<68>nes ou des valeurs qui repr<70>sentent une notion de temps. L'argument <i>option</i> d<>termine l'action effectu<74>e par la commande. Les <i>options</i> l<>gales (qui peuvent <20>tre abr<62>g<EFBFBD>es) sont:
<DL>
<DT><b>clock clicks</b> ?<b>-milliseconds</b>?<br></DT><DD>Retourne une valeur haute-r<>solution de l'heure en tant que valeur enti<74>re dependante du syst<73>me. L'unit<69> de valeur d<>pend du syst<73>me mais est la plus haute r<>solution d'horloge disponible sur le syst<73>me tel un cycle CPU. Si <b>-milliseconds</b> est sp<73>cifi<66>, alors on a la garantie que la valeur a une granularit<69> de la milliseconde. Cette valeur ne doit <20>tre utilis<69>e que pour la mesure relative du temps <20>coul<75>.
</DD>
<DT><br>
<b>clock format </b><i>clockValue</i> ?<b>-format </b><i>string</i>? ?<b>-gmt </b><i>boolean</i>?</DT><DD>Convertit un entier repr<70>sentant un temps, typiquement renvoy<6F> par <b>clock </b><b>seconds</b>, <b>clock scan</b>, ou les options <b>atime</b>, <b>mtime</b>, ou <b>ctime</b> de la commande<A HREF="111.htm"><b> file</b></A>, en une forme compr<70>hensible. Si l'argument <b>-</b><A HREF="117.htm"><b>format</b></A> est pr<70>sent l'argument suivant est une cha<68>ne qui d<>crit comment date et l'heure doivent <20>tre format<61>s. Les descripteurs de champs sont constitu<74>s d'un <b>%</b> suivi par un caract<63>re descripteur de champ. Tous les autre caract<63>res sont copi<70>s dans r<>sultat. Les descripteurs de champs valides sont:
<UL>
<LI><b>%%</b> Ins<6E>re un %. </LI>
<LI><b>%a</b> Nom abr<62>g<EFBFBD> d'un jour de la semaine (Mon, Tue, etc.).
</LI>
<LI><b>%A</b> Nom complet d'un jour de la semaine (Monday, Tuesday, etc.).
</LI>
<LI><b>%b</b> Nom abr<62>g<EFBFBD> d'un mois (Jan, Feb, etc.). </LI>
<LI><b>%B</b> Nom complet d'un mois</LI>
<LI><b>%c</b> Date et heure Locale sp<73>cifique. </LI>
<LI><b>%d</b> Jour du mois (01 - 31). </LI>
<LI><b>%H</b> Heure en format 24-heure (00 - 23). </LI>
<LI><b>%I</b> Heure en format 12-heure (00 - 12). </LI>
<LI><b>%j</b> Jour de l'ann<6E>e (001 - 366). </LI>
<LI><b>%m</b> Numero du mois (01 - 12). </LI>
<LI><b>%M</b> Minute (00 - 59).</LI>
<LI><b>%p</b> indicateur AM/PM. </LI>
<LI><b>%S</b> Secondes (00 - 59).</LI>
<LI><b>%U</b> Semaine de l 'ann<6E>e (00 - 52), Dimanche est le premier jour de la semaine.
</LI>
<LI><b>%w</b> Numero du jour de la semaine. (Dimanche = 0). </LI>
<LI><b>%W</b> Semaine de l 'ann<6E>e (00 - 52), Lundi est le premier jour de la semaine
</LI>
<LI><b>%x</b> Format de Date Locale. </LI>
<LI><b>%X</b> Format d'Heure Locale. </LI>
<LI><b>%y</b> Ann<6E>e sans si<73>cle (00 - 99). </LI>
<LI><b>%Y</b> Ann<6E>e avec si<73>cle (ex. 1990) </LI>
<LI><b>%Z</b> Nom de Time zone. <br></LI>
De plus, les descripteurs de champs suivants peuvent <20>tre support<72>s sur quelque syst<73>mes (ex. Unix mais pas Windows):
<LI><b>%D</b> Date comme %m/%d/%y. </LI>
<LI><b>%e</b> Jour du mois (1 - 31), sans le z<>ro compl<70>mentaire. </LI>
<LI><b>%h</b> Nom abr<62>g<EFBFBD> d'un mois. </LI>
<LI><b>%n</b> Ins<6E>re un saut de ligne. </LI>
<LI><b>%r</b> Heure comme %I:%M:%S %p. </LI>
<LI><b>%R</b> Heure comme %H:%M. </LI>
<LI><b>%t</b> Ins<6E>re une tabulation.</LI>
<LI><b>%T</b> Heure comme %H:%M:%S. <br></LI>
</UL>
Si l'argument <b>-</b> <A HREF="117.htm"><b>format</b></A> n'est pas sp<73>cifi<66>, la cha<68>ne de formatage "<b>%a %b %d </b><b>%H:%M:%S %Z %Y</b>" est utilis<69>e. Si l'argument <b>-gmt</b> est pr<70>sent il doit <20>tre suivi d'un bool<6F>en qui s'il est vrai sp<73>cifie que l'heure doit <20>tre format<61>e comme une heure Greenwich Mean Time. S'il est faux, la timezone locale d<>finie par l'environnement d'exploitation est utilis<69>e.
</DD>
<DT><br><b>clock scan </b><i>dateString</i> ?<b>-base </b><i>clockVal</i>? ?<b>-gmt </b><i>boolean</i>?
</DT><DD>Convertit <i>dateString</i> en une valeur d'horloge enti<74>re (voir <b>clock seconds</b>). Cette commande peut virtuellement analyser et convertir toute cha<68>ne de date et/ou d'heure standard, qui peut inclure des mn<6D>moniques timezone standards. Si une heure est sp<73>cifi<66>e seule, la date courante est suppos<6F>e. Si la cha<68>ne ne contient pas de mn<6D>moniques timezone, la timezone locale est suppos<6F>e, <20> moins que l'argument <b>-gmt</b> soit vrai, auquel cas la valeur horloge est calcul<75>e en pr<70>sumant que l'heure sp<73>cifi<66>e est relative <20> Greenwich Mean Time. <b>-gmt</b>, si sp<73>cifi<66>, affecte seulement la valeur de l'heure calcul<75>e; elle n'influe pas sur l'interpr<70>tation de <b>-base</b>. <br>
Si le flag <b>-base</b> est sp<73>cifi<66>, l'argument suivant doit contenir une valeur horloge enti<74>re. Seule la date de cette valeur est utilis<69>e, pas l'heure. Ceci est utile pour d<>terminer l'heure d'un jour sp<73>cifique ou faire d'autres conversions relatives <20> la date. <br>
La <i>dateString</i> est constitu<74> de z<>ro ou plus <20>l<EFBFBD>ments de la forme suivante:
<br><br><UL>
<LI><i>time</i> L'heure du jour, qui est de la forme: <i>hh</i>?<i>:mm</i>?<i>:ss</i>?? ?<i>meridian</i>? ?<i>zone</i>? ou <i>hhmm </i>?<i>meridian</i>? ?<i>zone</i>?. Si m<>ridien n'est sp<73>cifi<66>, <i>hh</i> est interpr<70>t<EFBFBD> sur une horloge 24-heures.
</LI>
<LI><i>date</i> Une date mois et jour sp<73>cifique avec l'ann<6E>e optionnelle. Les formats acceptables sont <i>mm/dd</i>?<i>/yy</i>?, <i>monthname dd</i> ?, <i>yy</i>?, <i>dd </i><i>monthname </i>?<i>yy</i>?, <i>day, dd monthname yy</i>, <i>?CC?yymmdd</i>, <i>?CC?yy-mm-dd</i>, <i>dd-monthname-?CC?yy</i>. L'ann<6E>e par d<>faut est l'ann<6E>e courante. Si l'ann<6E>e est inf<6E>rieure <20> 100, les ann<6E>es 00-68 seront interpr<70>t<EFBFBD>es 2000-2068 et les ann<6E>es 69-99 comme 1969-1999. Toutes les plateformes ne savent pas repr<70>senter les ann<6E>es 38-70, aussi l'utilisation de ces ann<6E>es peut entrainer une erreur.
</LI>
<LI><i>ISO 8601 point-in-time</i>
Une sp<73>cification ISO 8601, telle que <i>CCyymmddThhmmss</i>, ou T est le literal T, <i>CCyymmdd hhmmss</i>, ou <i>CCyymmddThh:mm:ss</i>.
</LI>
<LI><i>relative time</i>
Une sp<73>cification relative <20> l'heure courante. Le format est <i>number unit</i> , les unit<69>s acceptables sont <b>year</b>, <b>fortnight</b>, <b>month</b>, <b>week</b>, <b>day</b>, <b>hour</b>, <b>minute</b> (ou <b>min</b>), et <b>second</b> (ou <b>sec</b>). L'unit<69> peut <20>tre donn<6E>e au singulier ou au pluriel, comme dans <b>3 weeks</b>. Ces modificateurs peuvent aussi <20>tre: <b>tomorrow</b>, <b>yesterday</b>, <b>today</b>, <b>now</b>, <b>last</b>, <b>this</b>, <b>next</b>, <b>ago</b>. <br>
</LI>
</UL><br>
La date actuelle est calcul<75>e selon les <20>tapes suivantes. D'abord, toute date et/ou temps absolu est trait<69>e et convertie. Partant de cet instant comme base, les sp<73>cifications du jour de la semaine sont ajout<75>es. Ensuite, des sp<73>cifications relatives sont utilis<69>es. Si une date ou un jour est sp<73>cifi<66>, et qu'aucune heure absolue ou relative n'est donn<6E>e, minuit est utilis<69>. Finalement, une correction est appliqu<71>e ainsi l'heure du jour correcte est produite apr<70>s les rectifications pour l'heure d'<27>t<EFBFBD> et la date correcte est donn<6E>e au passage de la fin d'un mois long <20> un mois court. <br>
La correction d'heure d'<27>t<EFBFBD> est appliqu<71>e seulement quand l'heure relative est sp<73>cifi<66>e dans les unit<69>s de jour ou plus, c.a.d., jours, semaines, quinzaines, mois ou ann<6E>es. Ceci signifie que quand on change d'heure, des r<>sultats diff<66>rents seront donn<6E>s pour <b>clock scan &quot;1 day&quot;</b> et <b>clock </b><b>scan &quot;24 hours&quot;</b>:
<b>% clock scan &quot;1 day&quot; -base &#91;clock scan 1999-10-31]<br>
</b><b>941443200<br>
</b><b>% clock scan &quot;24 hours&quot; -base &#91;clock scan 1999-10-31]<br>
</b><b>941439600</b>
</DD>
<DT><br><b>clock seconds</b><br></DT><DD>Retourne l'heure et la date courante comme valeur enti<74>re d<>pendante du syst<73>me . L'unit<69> de valeur est la seconde, lui permettant d'<27>tre utilis<69>e pour les calculs de temps relatif. La valeur est usuellement d<>finie comme le temps total <20>coul<75> depuis un &#147;epoch&#148;. Vous ne pouvez pr<70>sumer la valeur de l'epoch.
</DD>
</DL>
</div>
<div>Derni<EFBFBD>re r<>vision: 8.3</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="95.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="97.htm"><b>Suivant</b></A></div>
</BODY></HTML>

24
hlp/fr/tcl/close.htm Normal file
View File

@@ -0,0 +1,24 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>close&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">close - Ferme un canal ouvert.
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>close </b><i>channelId</i>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51.px;">Ferme le canal donn<6E> par <i>channelId</i>.&nbsp; <i>ChannelId</i> doit <20>tre un identificateur de canal tel que la valeur de retour d'une pr<70>c<EFBFBD>dente commande<A HREF="142.htm"><b> open</b></A> ou <A HREF="162.htm"><b>socket</b></A>. Tout le tampon de sortie est vid<69> dans le p<>riph<70>rique de sortie du canal, Tout ce qu'il y a dans le tampon d'entr<74>e est <20>limin<69>, le fichier ou p<>riph<70>rique sous-jacent est ferm<72>, et <i>channelId</i> devient inutilisable. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si le canal est bloquant, la commande ne retourne pas jusqu'<27>vce que toute sortie soit vid<69>e. Si le canal est non bloquant et qu'il reste des donn<6E>es <20> emettre, le canal reste ouvert et la commande retourne imm<6D>diatement; la sortie sera vid<69>e en arri<72>re-plan et le canal sera ferm<72> quand toutes les donn<6E>es auront <20>t<EFBFBD> <i>flush<EFBFBD>es</i>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si <i>channelId</i> est un canal bloquant pour une commande pipeline alors <b>close</b> attend que les processus enfants soient termin<69>s. </div>
<div ALIGN="LEFT" style="margin-left: 51.px;">Si le canal est partag<61> entre des interpr<70>teurs, alors <b>close</b> rend <i>channelId</i> indisponible pour l'interpr<70>teur appelant mais n'a pas autre effet jusqu'a ce que tous les interpr<70>teurs aient ferm<72> le canal. Quand le dernier interpr<70>teur dans lequel le canal est declar<61> appelle <b>close</b>, les actions de nettoyage d<>crites plus haut se d<>clenchent. Voir la commande <A HREF="126.htm"><b>interp</b></A> pour une description du partage de canal. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les canaux sont automatiquement ferm<72>s quand un interpr<70>teur est d<>truit et quand le processus se termine. Les canaux sont passent en mode bloquant, pour s'assurer que toute sortie est correctement vid<69>e avant que le processus se termine. </div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande renvoie une cha<68>ne vide, et peut g<>n<EFBFBD>rer une erreur si une erreur se produit pendant le <i>flushing</i> de sortie. </div><br>
<div>Derni<EFBFBD>re r<>vision: 7.5</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="96.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="98.htm"><b>Suivant</b></A></div>
</BODY></HTML>

23
hlp/fr/tcl/concat.htm Normal file
View File

@@ -0,0 +1,23 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>concat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">concat <20> concat<61>ne des listes
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>concat</b><i> </i>?<i>arg arg ...</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande traite chaque argument comme une liste et les concat<61>ne dans une simple liste. Elle <20>limine aussi les espaces de d<>but et de fin dans les <i>arg</i>'s et ajoute un simple separateur espace entre les <i>arg</i>'s. Elle permet quelconque nombre d'arguments. Par exemple, la commande </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>concat a b &#123;c d e} &#123;f &#123;g h}}</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">renverra </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>a b c d e f &#123;g h}</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">comme r<>sultat. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si aucun <i>arg</i>s n'est fourni, le r<>sultat est une cha<68>ne vide. </div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="97.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="99.htm"><b>Suivant</b></A></div>
</BODY></HTML>

19
hlp/fr/tcl/continue.htm Normal file
View File

@@ -0,0 +1,19 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>continue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">continue - Passe <20> l'it<69>ration suivante d'une boucle
</div> <br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>continue</b>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande est typiquement appel<65>e dans le corps d'une commande de boucle telle que <A HREF="115.htm"><b>for</b></A> ou <A HREF="116.htm"><b>foreach</b></A> ou <A HREF="181.htm"><b>while</b></A>. Elle renvoie un code TCL_CONTINUE, qui provoque une exception <i>continue</i>. L'exception provoque l'arr<72>t du script courant, et la boucle continue avec l'it<69>ration suivante. Les exceptions sont aussi g<>r<EFBFBD>es dans d'autres situations, telles que la commande <A HREF="94.htm"><b>catch</b></A> et les scripts les plus externes des corps de fonction.</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="98.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="100.htm"><b>Suivant</b></A></div>
</BODY></HTML>

58
hlp/fr/tcl/dde.htm Normal file
View File

@@ -0,0 +1,58 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>dde&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">dde - Ex<45>cute une commande Dynamic Data Exchange
</div><br>
<div><b>SYNTAXE</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;"><br>
<b>package require dde 1.1</b> <br>
<b>dde </b><i>servername </i>?<i>topic</i>? <br>
<b>dde ?-async?</b> <i>command service topic </i>?<i>data</i>?&nbsp; <br>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande permet <20> une application d'envoyer une commande Dynamic Data Exchange (DDE) sous Microsoft Windows. Dynamic Data Exchange est un m<>canisme qui permet aux applications d'<27>changer des donn<6E>es . Chaque transaction DDE a besoin d'un <i>service name</i> et d'un <i>topic</i>. L'ensemble de <i>service name</i> et <i>topic</i> sont d<>finis par l'application; Tcl utilise le nom de service <b>TclEval</b>, et le nom du topic est le nom de l'interpr<70>teur donn<6E> par <b>dde servername</b>. D'autres applications ont leurs propres <i>service names</i> et <i>topics</i>. Par exemple, Microsoft Excel a le nom de service <b>Excel</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La seule option de la commande <b>dde</b> est:
<DL>
<DT><b>-async</b><br></DT><DD>Demande un appel asynchrone. Ceci est valide seulement pour la sous-commande<b> execute</b>. Normalement, la sous-commande<b> dde execute</b> attend jusqu'<27> ce que la commande se termine, en retournant un message d'erreur appropri<72>. Quand l'option <b>-</b> <b>async</b> est utilis<69>e, la commande retourne imm<6D>diatement, et aucune information d'erreur n'est disponible. <br>
</DD>
</DL>
</div>
<div><b>COMMANDES DDE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les commandes suivantes sont un sous ensemble des commandes Dynamic Data Exchange.
<DL>
<DT><b>dde servername </b>?<i>topic</i>?</DT><DD><b>dde servername</b> d<>clare l'interpr<70>teur comme serveur DDE avec le nom de service <b>TclEval</b> et le nom de topic sp<73>cifi<66> par <i>topic</i>. Si aucun <i>topic</i> n'est donn<6E>, <b>dde servername</b> retourne le nom du topic courant ou une cha<68>ne vide s'il n'est pas declar<61> comme un service.
</DD>
<DT><br>
<b>dde execute </b><i>service topic data</i><br></DT><DD><b>dde execute</b> prends <i>data</i> et l'envoie au serveur indiqu<71> par <i>service</i> avec le topic indiqu<71> par <i>topic</i>. Typiquement, <i>service</i> est le nom d'une application, et <i>topic</i> est un fichier <20> traiter. Le champ <i>data</i> est donn<6E> <20> l'application distante. Typiquement, l'application traite le champ <i>data</i> comme un script, et le script est lanc<6E> dans l'application. La commande retourne une erreur si le script n'est pas ex<65>cut<75>. Si le flag <b>-async</b> a <20>t<EFBFBD> utilis<69>, la commande retourne imm<6D>diatement sans erreur.
</DD>
<DT><br>
<b>dde poke </b><i>service topic item data</i><br></DT><DD><b>dde poke</b> passes les <i>data</i> au serveur indiqu<71> par <i>service</i> en utilisant les <i>topic</i> et <i>item</i> sp<73>cifi<66>. Typiquement, <i>service</i> est le nom d'un application. <i>topic</i> est sp<73>cifique <20> l'application mais peut <20>tre une commande au serveur ou le nom d'un fichier <20> traiter. L' <i>item</i> est aussi sp<73>cifique <20> l'application et est souvent non utilis<69>, mais il doit toujours <20>tre non-null. Le champ <i>data</i> est transmis <20> l'application distante.
</DD>
<DT><br>
<b>dde request </b><i>service topic item</i><br></DT><DD><b>dde request</b> est typiquement utilis<69> pour r<>cup<75>rer une valeur; la valeur d'une cellule dans Microsoft Excel ou le texte d'une selection dans Microsoft Word. <i>service</i> est typiquement le nom de l'application, <i>topic</i> est typiquement le nom du fichier, et <i>item</i> est sp<73>cifique <20> l'application. La commande retourne la valeur de <i>item</i> comme d<>fini dans l'application.
</DD>
<DT><br>
<b>dde services </b><i>service topic</i><br></DT><DD><b>dde services</b> retourne une liste de service-topic pairs qui existe actuellement sur la machine. Si <i>service</i> et <i>topic</i> sont tous deux des null cha<68>nes (&#123;}), alors toute les paires service-topic disponibles sur le syst<73>me sont renvoy<6F>es. Si <i>service</i> est null et <i>topic</i> non, alors tout les services avec le topic sp<73>cifi<66> sont renvoy<6F>s. Si <i>service</i> n'est pas null et que <i>topic</i> est null, tout les topics pour un service donn<6E> sont renvoy<6F>s. Si les deux ne sont pas null, si cette paire service-topic existe actuellement, elle est renvoy<6F>e; autrement, null est renvoy<6F>.
</DD>
<DT><br>
<b>dde eval </b><i>topic cmd </i>?<i>arg arg ...</i>?<br></DT><DD><b>dde eval</b> <20>value une commande et ses arguments en utilisant l'interpr<70>teur sp<73>cifi<66> par <i>topic</i>. Le service DDE doit <20>tre le service<b> TclEval</b>. Cette commande peut <20>tre utilis<69>e pour remplacer <i>send</i> sous Windows. <br>
</DD>
</DL>
</div>
<div><b><FONT FACE="Times New Roman" SIZE=2>DDE ET TCL</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Un Interpr<70>teur Tcl a toujours pour nom de service <b>TclEval</b>. A chaque interpr<70>teur diff<66>rent parmi toutes les applications Tcl en cours doit <20>tre donn<6E> un nom unique sp<73>cifi<66> par <b>dde servername</b>. Chaque interp est disponible comme topic DDE seulement si la commande <b>dde servername</b> a <20>t<EFBFBD> utilis<69>e pour fixer le nom du topic pour chaque interp. Donc une commande <b>dde services TclEval &#123;}</b> renverra une liste de paires service-topic, o<> chacun des interpr<70>teurs qui s'ex<65>cutent actuellement seront un topic. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Quand Tcl traite une commande<b> dde execute</b>, les donn<6E>es de <b>execute</b> sont ex<65>cut<75>es comme script dans l'interpr<70>teur design<67> par les topic de la commande<b> </b><b>dde execute</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Quand Tcl traite une commande<b> dde request</b>, il retourne la valeur de la variable donn<6E>e dans la commande dde dans le contexte de l'interpr<70>teur design<67> par le topic dde. Tcl reserve la variable <b>&#36;TCLEVAL&#36;EXECUTE&#36;RESULT</b> pour usage interne, et une commande <b>dde request</b> pour cette variable donnera un r<>sultat impr<70>visible. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Une application externe qui souhaite ex<65>cuter un script Tcl aura besoin que le script stocke son r<>sultat dans une variable, devra ex<65>cuter la commande<b> dde execute</b>, puis <b>dde request</b> pour obtenir la valeur de la variable. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">En utilisant DDE, assurez vous soigneusement que la file d'<27>v<EFBFBD>nements est vid<69>e en utilisant soit <A HREF="176.htm"><b>update</b></A> ou <A HREF="180.htm"><b>vwait</b></A>. Ceci se produit par d<>faut en utilisant <A HREF="318.htm"><b>wish</b></A> <20> moins qu'une commande bloquante soit appel<65>e (telle que <A HREF="105.htm"><b>exec</b></A> sans ajouter le <b>&amp;</b> pour envoyer le processus en arri<72>re-plan). Si pour une raison quelconque la file d'<27>v<EFBFBD>nements n'est pas vid<69>e, les commandes DDE peuvent se figer jusqu'a ce que la file d'<27>v<EFBFBD>nements soit vid<69>e. Ceci peut cr<63>er une situation d'impasse (&quot; deadlock &quot; N.D.T.).
</div><br>
<div><b>VOIR EGALEMENT</b></div>
<br><div ALIGN="LEFT" style="margin-left: 51px;">tk, winfo, send </div>
<br><div>Derni<EFBFBD>re r<>vision: 8.1</div>
<br>
<div ALIGN="CENTER"><br><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="99.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="101.htm"><b>Suivant</b></A></div>
</BODY></HTML>

41
hlp/fr/tcl/encoding.htm Normal file
View File

@@ -0,0 +1,41 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>encoding&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">encoding<b> </b>- Manipule les encodages
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>encoding </b><i>option</i> ?<i>arg arg ...</i>?
</div><br>
<div><b>INTRODUCTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les cha<68>nes en Tcl sont encod<6F>es en utilisant les caract<63>res Unicode 16-bit. Diff<66>rentes interfaces au syst<73>me d'exploitation ou applications peuvent g<>n<EFBFBD>rer des cha<68>nes dans d'autres encodages tel que Shift-JIS. La commande <b>encoding</b> lance un pont entre Unicode et ces autres formats.
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Ex<EFBFBD>cute une parmi plusieurs op<6F>rations relatives <20> l'encodage, d<>pendantes de <i>option</i>. Les <i>option</i>s l<>gales sont:
<DL>
<DT><b>encoding convertfrom ?</b><i>encoding</i>? <i>data</i><br></DT><DD>Convertit <i>data</i> en Unicode <20> partir de l'<i>encoding</i> sp<73>cifi<66>. Les caract<63>res dans <i>data</i> sont trait<69>s comme des donn<6E>es binaires o<> les 8-bits inf<6E>rieurs de chaque caract<63>re sont trait<69>s comme un seul octet. La s<>quence d'octets r<>sultante est trait<69>e comme une cha<68>ne dans l'<i>encoding</i> sp<73>cifi<66>. Si <i>encoding</i> n'est pas sp<73>cifi<66>, l'encodage syst<73>me courant est utilis<69>.
</DD>
<DT><br><b>encoding convertto ?</b><i>encoding</i>? <i>string</i><br></DT><DD>Convertit <i>string</i> d'Unicode en <i>encoding</i> sp<73>cifi<66>. Le r<>sultat est une s<>quence d'octets qui repr<70>sente la cha<68>ne convertie. Chaque octet est stock<63> dans les 8-bits inf<6E>rieurs d'un caract<63>re Unicode. Si <i>encoding</i> n'est pas sp<73>cifi<66>, l'encodage syst<73>me courant est utilis<69>.
</DD>
<DT><br><b>encoding names</b><br></DT><DD>Renvoie une liste contenant les noms de tous les encodages qui sont actuellement disponibles.
</DD>
<DT><br><b>encoding system</b> ?<i>encoding</i>?<br>
</DT><DD>Fixe l'encodage syst<73>me <20> <i>encoding</i>. Si <i>encoding</i> est omis alors la commande retourne l'encodage syst<73>me courant. L'encodage syst<73>me est utilis<69> chaque fois que Tcl transmet des cha<68>nes aux appels syst<73>mes.
</DD>
</DL>
</div>
<div><b>EXEMPLE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Il est courant d'<27>crire des scripts en utilisant un editeur de texte qui produit une sortie dans l'encodage euc-jp, qui repr<70>sente les caract<63>res ASCII avec un octet et les caract<63>res Japonais avec deux octets. Ceci facilite l'incorporation de cha<68>nes litterales qui correspondent <20> des caract<63>res non-ASCII en tapant simplement la cha<68>ne dans le script. N<>anmoins, parce que la commande <A HREF="163.htm"><b>source</b></A> lit toujours les fichiers en utilisant l'encodage ISO8859-1, Tcl traitera chaque octet dans le fichier comme un caract<63>re s<>par<61> qui pointe sur la page Unicode 00. Les cha<68>nes Tcl r<>sultantes ne contiendront pas les caract<63>res Japonais attendus. A la place, elles contiendront une s<>quence de caract<63>res Latin-1 qui correspondront aux octets de la cha<68>ne originale. La commande <b>encoding</b> peut <20>tre utilis<69>e pour convertir cette cha<68>ne en caract<63>res Unicodes Japonais attendus. Par exemple, </div>
<div ALIGN="LEFT" style="margin-left: 102px;">set s &#91;encoding convertfrom euc-jp &quot;&#92;xA4&#92;xCF&quot;]</div>
<div ALIGN="LEFT" style="margin-left: 51px;">retournera la cha<68>ne Unicode &quot;&#92;u306F&quot;, qui est la lettre Hiragana HA. <br>
</div>
<br>
<div><b>VOIR EGALEMENT</b></div>
<br><div ALIGN="LEFT" style="margin-left: 51px;">Tcl_GetEncoding </div><br>
<div>Derni<EFBFBD>re r<>vision: 8.1</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="100.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="102.htm"><b>Suivant</b></A></div>
</BODY></HTML>

19
hlp/fr/tcl/eof.htm Normal file
View File

@@ -0,0 +1,19 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>eof&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">eof - V<>rifie la condition fin de fichier d'un canal
</div> <br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>eof </b><i>channelId</i>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Renvoie 1 si la condition fin de fichier s'est produite pendant l'op<6F>ration d'entr<74>e la plus r<>cente de <i>channelId</i> (tel que <A HREF="118.htm"><b>gets</b></A>), 0 autrement. </div><br>
<div>Derni<EFBFBD>re r<>vision: 7.5</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="101.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="103.htm"><b>Suivant</b></A>
</div>
</BODY></HTML>

23
hlp/fr/tcl/error.htm Normal file
View File

@@ -0,0 +1,23 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>error&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">error - Gen<65>re une erreur
</div><br>
<div><b>SYNTHESE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>error </b><i>message</i> ?<i>info</i>? ?<i>code</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Renvoie un code TCL_ERROR, qui provoque l'interruption de l'interpr<70>tation de la commande. <i>Message</i> est une cha<68>ne qui est renvoy<6F>e <20> l'application pour indiquer ce qui s'est mal pass<73>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si l'argument <i>info</i> est fourni et est non-vide, il est utilis<69> pour initialiser la variable globale <b>errorInfo</b>. <b>errorInfo</b> est utilis<69>e pour accumuler une trace de la pile de ce qui <20>tait en cours quand l 'erreur s'est produite; quand des commandes imbriqu<71>es se d<>roulent, l'interpr<70>teur Tcl ajoute l'information <20> <b>errorInfo</b>. Si l'argument <i>info</i> est pr<70>sent, il est utilis<69> pour initialiser <b>errorInfo</b> et le premier increment d'information ne sera pas ajout<75> par l'interpr<70>teur Tcl. En d'autre mots, la commande contenant la commande <b>error</b> n'apparaitra pas dans <b>errorInfo</b>; <20> sa place il y aura <i>info</i>. Cette fonctionnalit<69> est plus utile en conjonction avec la commande <A HREF="94.htm"><b>catch</b></A>: si une erreur intercept<70>e ne peut <20>tre g<>r<EFBFBD>e avec succ<63>s, <i>info</i> peut <20>tre utilis<69>e pour renvoyer une trace de la pile refl<66>tant le point original o<> l'erreur s'est produite: </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>catch &#123;...} errMsg<br>
</b><b>set savedInfo &#36;errorInfo<br>
</b><b>...<br>
</b><b>error &#36;errMsg &#36;savedInfo</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si l'argument <i>code</i> est pr<70>sent, alors sa valeur est stock<63>e dans la variable globale<b> </b><b>errorCode</b>. Cette variable est con<6F>ue pour recevoir une description machine-lisible de l'erreur dans le cas o<> cette information est disponible; voyez la page de manuel de <A HREF="170.htm"><b>tclvars</b></A> pour des informations sur le format correct de la variable. Si l'argument <i>code</i> n'est pas pr<70>sent, alors <b>errorCode</b> est automatiquement r<>initialis<69> <20> &quot;NONE&quot; par l'interpr<70>teur Tcl comme partie du traitement de l'erreur g<>n<EFBFBD>r<EFBFBD>e par la commande.</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="102.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="104.htm"><b>Suivant</b></A></div>
</BODY></HTML>

18
hlp/fr/tcl/eval.htm Normal file
View File

@@ -0,0 +1,18 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>eval&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">eval - Evalue un script Tcl <br>
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>eval </b><i>arg </i>?<i>arg ...</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div><b>Eval</b> attend un ou plusieurs arguments, qui ensemble constituent un script Tcl contenant une ou plusieurs commandes. <b>Eval</b> concat<61>ne tout ses arguments de la m<>me fa<66>on que la commande <A HREF="98.htm"><b>concat</b></A>, puis transmet la cha<68>ne concat<61>n<EFBFBD>e <20> l'interpr<70>teur Tcl r<>cursivement, et retourne le r<>sultat de cette <20>valuation (ou l'erreur g<>n<EFBFBD>r<EFBFBD>e). </div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="103.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="105.htm"><b>Suivant</b></A>
</div>
</BODY></HTML>

101
hlp/fr/tcl/exec.htm Normal file
View File

@@ -0,0 +1,101 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>exec&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="left">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">exec - Appelle un ou des sous-processus
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>exec </b>?<i>switches</i>? <i>arg </i>?<i>arg ...</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande traite ses arguments comme la sp<73>cification d'ex<65>cution d'un ou plusieurs sous-processus. Les arguments prennent la forme d'un pipeline shell standard o<> chaque <i>arg</i> devient un mot d'une commande, et chaque commande distincte devient un sous-processus. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si les arguments initiaux <20> <b>exec</b> commencent avec un tiret<b> </b>alors ils sont trait<69>s comme des commutateurs de ligne de commande et ne font pas partie du pipeline. Les commutateurs suivants sont couramment support<72>s:
<DL>
<DT><b>-keepnewline</b><br></DT><DD>Ins<EFBFBD>re un saut de ligne dans la sortie de pipeline. Normalement le saut de ligne sera effac<61>.
</DD>
<DT><b>--</b><br></DT><DD>Marque la fin des commutateurs. L'argument suivant sera trait<69> comme le premier <i>arg</i> m<>me s'il commence avec un tiret.
</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si un <i>arg</i> (ou paire d'<i>args</i>) a une des formes d<>crites ci-dessous alors il est utilis<69> par <b>exec</b> pour contr<74>ler les flux d'entr<74>e et de sortie dans le(s) sous-processus. Ces arguments ne seront pas transmis au(x) sous-processus. Sous les formes telles que &quot;&lt; <i>fileName</i>&quot;, <i>fileName</i> peut soit <20>tre dans un argument s<>par<61> de &quot;&lt;&quot; ou dans le m<>me argument sans espace (ex. &quot;&lt;<i>fileName</i>&quot;).
<DL>
<DT>|</DT><DD>S<EFBFBD>pare des commandes distinctes dans le pipeline. La sortie standard de la commande pr<70>c<EFBFBD>dente sera inject<63>e dans l'entr<74>e standard de la commande suivante.
</DD>
<DT><br>|&amp;</DT><DD>S<EFBFBD>pare des commandes distinctes dans le pipeline. L'ensemble sortie standard et erreur standard de la pr<70>c<EFBFBD>dante commande sera inject<63>e dans l'entr<74>e standard de la commande suivante. Cette forme de redirection surcharge les formes telles que 2&gt; et &gt;&amp;.
</DD>
<DT><br>&lt; <i>fileName</i></DT><DD>Le fichier design<67> par <i>fileName</i> est ouvert et utilis<69> comme l'entr<74>e standard pour le premi<6D>re commande dans le pipeline.
</DD>
<DT><br>&lt;@ <i>fileId</i></DT><DD><i>FileId</i> doit <20>tre l'identificateur pour un fichier ouvert, tel que la valeur de retour d'un pr<70>c<EFBFBD>dent appel de <A HREF="142.htm"><b>open</b></A>. Il est utilis<69> comme l'entr<74>e standard de la premi<6D>re commande dans le pipeline. <i>FileId</i> doit avoir <20>t<EFBFBD> ouvert en lecture.
</DD>
<DT><br>&lt;&lt; <i>value</i><br></DT><DD><i>Value</i> est transmise <20> la premi<6D>re commande comme son entr<74>e standard.
</DD>
<DT><br>&gt; <i>fileName</i></DT><DD>La sortie standard de la derni<6E>re commande est redirig<69>e sur un fichier nomm<6D> <i>fileName</i>, en <20>crasant son pr<70>cedent contenu.
</DD>
<DT><br>2&gt; <i>fileName</i></DT><DD>L'erreur standard de toute commande dans le pipeline est redirig<69>e sur un fichier nomm<6D> <i>fileName</i>, en <20>crasant son pr<70>cedent contenu.
</DD>
<DT><br>&gt;&amp; <i>fileName</i></DT><DD>L'ensemble sortie standard de la derni<6E>re commande et erreur standard de toute commande sont redirig<69>e sur un fichier nomm<6D> <i>fileName</i>, en <20>crasant son contenu pr<70>c<EFBFBD>dent .
</DD>
<DT><br>&gt;&gt; <i>fileName</i></DT><DD>La sortie standard de la derni<6E>re commande est redirig<69>e et ajout<75>e <20> la fin d'un fichier nomm<6D> <i>fileName</i>.
</DD>
<DT><br>2&gt;&gt; <i>fileName</i></DT><DD>L'erreur standard de toute commande dans le pipeline est redirig<69>e et ajout<75>e <20> la fin d'un fichier nomm<6D> <i>fileName</i>.
</DD>
<DT><br>&gt;&gt;&amp; <i>fileName</i></DT><DD>L'ensemble sortie standard de la derni<6E>re commande et erreur standard de toute commande sont redirig<69>es et ajout<75>es <20> la fin d'un fichier nomm<6D> <i>fileName</i>.
</DD>
<DT><br>&gt;@ <i>fileId</i></DT><DD><i>FileId</i> doit <20>tre l'identificateur d'un fichier ouvert, tel que la valeur de retour d'un pr<70>c<EFBFBD>dent appel de <A HREF="142.htm"><b>open</b></A>. La sortie standard de la derni<6E>re commande est redirig<69>e vers le fichier<i> </i><i>fileId</i>'s, qui doit avoir <20>t<EFBFBD> ouvert en <20>criture.
</DD>
<DT><br>2&gt;@ <i>fileId</i></DT><DD><i>FileId</i> doit <20>tre l'identificateur d'un fichier ouvert, tel que la valeur de retour d'un pr<70>c<EFBFBD>dent appel de <A HREF="142.htm"><b>open</b></A>. L'erreur standard de toute commande dans le pipeline est redirig<69>e vers le fichier<i> fileId</i>. Le fichier doit avoir <20>t<EFBFBD> ouvert en <20>criture.
</DD>
<DT><br>&gt;&amp;@ <i>fileId</i></DT><DD><i>FileId</i> doit <20>tre l'identificateur pour un fichier ouvert, tel que la valeur de retour d'un pr<70>c<EFBFBD>dent appel de <A HREF="142.htm"><b>open</b></A>. L'ensemble sortie standard de la derni<6E>re commande et erreur standard from toute commande sont redirig<69>e vers le fichier<i> fileId</i>. Le fichier doit avoir <20>t<EFBFBD> ouvert en <20>criture.
</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si la sortie standard n'a pas <20>t<EFBFBD> redirig<69>e alors la commande <b>exec</b> retourne la sortie standard de la derni<6E>re commande dans le pipeline. Si une des commandes dans le pipeline finit anormalement ou est <i>killed</i> ou suspendue, alors <b>exec</b> renverra une erreur et le message d'erreur inclura la sortie du pipeline suivi par le message d'erreur d<>crivant la terminaison anormale; la variable <b>errorCode</b> contiendra des informations suppl<70>mentaires concernant la derni<6E>re terminaison anormale rencontr<74>e. Si une des commandes ecrit vers son fichier standard d'erreur et que cette erreur standard n'est pas redirig<69>e, alors <b>exec</b> renverra une erreur; le message d'erreur inclura la sortie standard du pipeline, suivi par les messages au sujet de la terminaison anormale (si elle existe), suivi par la sortie d'erreur standard . </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si le dernier caract<63>re du r<>sultat ou du message d'erreur est un saut de ligne alors ce caract<63>re est normalement effac<61> du r<>sultat ou du message d'erreur. Ceci est coh<6F>rent par rapport aux autres valeurs de retour Tcl, qui ne finisssent normalement pas avec des sauts de ligne. N<>anmoins, si <b>-keepnewline</b> est sp<73>cifi<66> alors le saut de ligne est ajout<75>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si l'entr<74>e standard n'est pas redirig<69>e avec &quot;&lt;&quot; ou &quot;&lt;&lt;&quot; ou &quot;&lt;@&quot; alors l'entr<74>e standard pour la premi<6D>re commande dans le pipeline est prise de l'entr<74>e standard de l'application courante. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si le dernier <i>arg</i> est &quot;&amp;&quot; alors le pipeline sera ex<65>cut<75> en arri<72>re-plan. Dans ce cas la commande <b>exec</b> renverra une liste dont les <20>l<EFBFBD>ments sont les identificateurs de processus pour tous les sous-processus dans le pipeline. La sortie standard de la derni<6E>re commande dans le pipeline ira dans la sortie standard de l'application si elle n'a pas <20>t<EFBFBD> redirig<69>e, et la sortie d'erreur de toutes les commandes dans le pipeline ira vers le fichier standard d'erreur de l'application sauf si elle est redirig<69>e. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Le premier mot de chaque commande est interpr<70>t<EFBFBD> comme le nom de la commande; la substitution tilde est effectu<74>e, et si le r<>sultat ne contient pas de slashes alors les r<>pertoires dans la variable d'environnement PATH sont recherch<63>s pour un ex<65>cutable donn<6E>s. Si le nom contient un slash alors il doit se r<>f<EFBFBD>rer <20> un ex<65>cutable accessible du r<>pertoire courant. Aucune expansion &quot;glob&quot; ou autre substitutions shell-like ne sont effectu<74>es sur les arguments des commandes. <br>
</div><br>
<div><b>NOTES DE PORTABILITE </b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">
<DL>
<DT><b>Windows</b> (toutes versions)</DT><DD>Lire ou <20>crire une socket, en
utilisant la notation &quot;<b>@ </b><i>fileId</i>&quot;, ne fonctionne pas. En essayant de lire une socket, une application DOS 16-bit se plantera et une application 32-bit retournera imm<6D>diatement avec fin-de-fichier. Quand ces deux types d'application ecrivent une socket, l'information est en fait envoy<6F>e <20> la console, si une est pr<70>sente, ou est <20>limin<69>e. <br>
La console texte Tk ne fournit pas de possibilit<69>s IO standard. Sous Tk, quand on redirige depuis l'entr<74>e standard, toutes les applications verront une fin-de-fichier imm<6D>diate; l'information redirig<69>e vers la sortie standard ou l'erreur standard sera <20>limin<69>e. <br>
Les slashes ou anti slashes sont accept<70>s comme s<>parateurs de chemin pour les arguments des commandes Tcl. A l'ex<65>cution d'une application, le nom de chemin sp<73>cifi<66> pour l'application peut aussi contenir des slashes ou des anti slashes comme s<>parateurs de chemin. Ayez <20> l'esprit, n<>anmoins, que la plupart des applications Windows acceptent des arguments avec seulement des slashes comme d<>limiteurs d'option et seulement des backslashes dans les chemins. N'importe quels arguments <20> une application qui sp<73>cifie un nom de chemin avec des slashes ne seront pas automatiquement convertis en caract<63>res backslash. Si un argument contient des slashes comme s<>parateur de chemin, il peut ou ne peut pas <20>tre reconnu comme un nom de chemin, d<>pendant du programme. <br>
De plus, <20> l'appel d'une application 16-bit DOS ou Windows 3.X, tout les noms de chemin doivent utiliser le format de chemin court(ex, en utilisant &quot;applba~1.def&quot; au lieu de of &quot;applbakery.default&quot;). <br>
Deux slashes ou backslashes ou plus dans un chemin se ref<65>rent <20> un chemin r<>seau. Par exemple, une simple concatenation du r<>pertoire racine <b>c:/</b> avec un sous r<>pertoire <b>/windows/system</b> donnera <b>c://windows/system</b> (deux slashes ensemble), qui se r<>f<EFBFBD>re <20> un point de montage appel<65> <b>system</b> sur la machine appel<65> <b>windows</b> (et le <b>c:/</b> est ignor<6F>), et n'est pas <20>quivalent <20> <b>c:/windows/system</b>, qui d<>crit un r<>pertoire sur l'ordinateur courant . La commande <b>file join</b> sera utilis<69>e pour concat<61>ner les composants de chemin.</DD>
<DT><br><b>Windows NT</b></DT><DD>Quand il tente d'ex<65>cuter une application, <b>exec</b> recherche en premier le nom comme il a <20>t<EFBFBD> sp<73>cifi<66>. Ensuite, dans l'ordre, <b>.com</b>, <b>.exe</b>, et <b>.bat</b> sont ajout<75>s <20> la fin du nom sp<73>cifi<66> et il recherche le nom plus l'extension. Si un nom de r<>pertoire n'a pas <20>t<EFBFBD> sp<73>cifi<66> comme partie du nom de l'application, les r<>pertoires suivants sont automatiquement recherch<63>s dans l'ordre pour tenter de localiser l'application: <br>
<div ALIGN="LEFT" style="margin-left: 110px;">Le r<>pertoire duquel l'ex<65>cutable Tcl a <20>t<EFBFBD> charg<72>. <br>
Le r<>pertoire courant. <br>
Le r<>pertoire syst<73>me Windows NT 32-bit. <br>
Le r<>pertoire syst<73>me Windows NT 16-bit. <br>
Le r<>pertoire home Windows NT. <br>
Les r<>pertoires list<73>s dans le chemin.</div> <br>
De mani<6E>re <20> ex<65>cuter les commandes shell internes comme <b>dir</b> et <b>copy</b>, l'appelant doit ajouter en t<>te de la commande &quot;<b>cmd.exe /c </b>&quot;.
</DD>
<DT><br><b>Windows 95</b></DT><DD>Quand il tente d'ex<65>cuter une application, <b>exec</b> recherche en premier le nom comme il a <20>t<EFBFBD> sp<73>cifi<66>. Ensuite, dans l'ordre, <b>.com</b>, <b>.exe</b>, et <b>.bat</b> sont ajout<75> <20> la fin du nom sp<73>cifi<66> et il recherche le nom plus l'extension. Si un nom de r<>pertoire n'a pas <20>t<EFBFBD> sp<73>cifi<66> comme partie du nom de l'application, les r<>pertoires suivants sont automatiquement recherch<63>s dans l'ordre pour tenter de localiser l'application: <br>
<div ALIGN="LEFT" style="margin-left: 110px;">Le r<>pertoire duquel l'ex<65>cutable Tcl a <20>t<EFBFBD> charg<72>. <br>
Le r<>pertoire courant. <br>
Le r<>pertoire syst<73>me Windows 95. <br>
Le r<>pertoire home Windows 95. <br>
Les r<>pertoires list<73>s dans le chemin. </div><br>
De mani<6E>re <20> ex<65>cuter les commandes shell internes comme <b>dir</b> et <b>copy</b>, l'appelant doit ajouter en t<>te de la commande &quot;<b>command.com /c </b>&quot;<br>
Une fois qu'une application DOS 16-bit a lu l'entr<74>e standard d'une console et quitt<74>, toutes les applications DOS 16-bit ex<65>cut<75>es ensuite verront l'entr<74>e standard comme d<>j<EFBFBD> ferm<72>e. Les applications 32-bit n'ont pas ce probl<62>me et s'ex<65>cuteront correctement, m<>me apr<70>s une application DOS 16-bit qui pense que l'entr<74>e standard est ferm<72>e. Il n'y a pas de correction connue de ce bug <20> ce jour . La redirection entre le p<>riph<70>rique <b>NUL:</b> et une application 16-bit ne fonctionne pas toujours. Quand on redirige de <b>NUL:</b>, certaines applications se planteront, d'autres emmetront un flux infini d'octets &quot;0x01&quot;, et d'autres obtiendront correctement une fin-de-fichier imm<6D>diate; ce comportement semble d<>pendre de quelque chose compil<69> dans l'application elle-m<>me. Quand la redirection vers <b>NUL:</b> est sup<75>rieure <20> 4K , quelques applications se planteront. Les probl<62>mes pr<70>c<EFBFBD>dents ne se produisent pas avec les applications 32-bit. <br>
Toutes les applications DOS 16-bit sont ex<65>cut<75>es de mani<6E>re synchrone. Toute entr<74>e standard d'un pipe vers une application DOS 16-bit est collect<63> dans un fichier temporaire; l'autre extr<74>mit<69> du pipe doit <20>tre ferm<72>e avant que l'application DOS 16-bit commence l'ex<65>cution. Toute sortie ou erreur standard d'une application DOS 16-bit vers un pipe est collect<63>e dans des fichiers temporaires; l'application doit se terminer avant que les fichiers temporaires soient redirig<69>s <20> l'<27>tape suivante du pipeline. Ceci est du <20> une correction d'un bug de Windows 95 dans l'impl<70>mentation des pipes, et est la mani<6E>re standard du shell DOS sous Windows 95 de g<>rer les pipes. <br>
Certaines applications, tel que <b>command.com</b>, ne seront pas ex<65>cut<75>es interactivement. Les applications qui acc<63>dent directement <20> la fen<65>tre Dos, au lieu de lire depuis leur entr<74>e standard et d'<27>crire sur leur sortie standard peut <20>chouer, planter Tcl, ou m<>me planter le syst<73>me si leur propre console ne leur est pas disponible.
</DD>
<DT><br><b>Macintosh</b></DT><DD>La commande <b>exec</b> n'est pas impl<70>ment<6E>e et n'existe pas sous Macintosh. </DD>
<DT><br><b>Unix</b></DT><DD>La commande <b>exec</b> est pleinement fonctionnelle et fonctionne comme d<>crit.
</DD>
</DL>
</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><A HREF="142.htm">open</A>(n) </div>
<div>Derni<EFBFBD>re r<>vision: 7.6</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="104.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="106.htm"><b>Suivant</b></A>
</div>
</BODY></HTML>

18
hlp/fr/tcl/exit.htm Normal file
View File

@@ -0,0 +1,18 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>exit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">exit - Termine l'application <br>
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>exit </b>?<i>returnCode</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Termine le processus, retournant <i>returnCode</i> au syst<73>me comme statut de fin. Si <i>returnCode</i> n'est pas sp<73>cifi<66> alors sa valeur par d<>faut est de 0. </div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="105.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="107.htm"><b>Suivant</b></A>
</div>
</BODY></HTML>

256
hlp/fr/tcl/expr.htm Normal file
View File

@@ -0,0 +1,256 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>expr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">expr - Evalue une expression
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>expr </b><i>arg </i>?<i>arg arg ...</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Concat<EFBFBD>ne <i>arg</i>'s (en y ajoutant des s<>parateurs espaces), <20>value le r<>sultat comme expression Tcl, et retourne la valeur. Les op<6F>rateurs autoris<69>s dans les expressions Tcl sont un sous ensemble des op<6F>rateurs autoris<69>s dans les expressions C, et ils ont les m<>me sens et pr<70>c<EFBFBD>dence que les op<6F>rateurs C correspondants. Les expressions donnent presque toujours des r<>sultats num<75>riques (entier ou valeurs flottantes). Par exemple, l'expression </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>expr 8.2 + 6</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">est <20>valu<6C>e <20> 14.2. Les expressions Tcl diff<66>rent des expressions C dans le sens ou les op<6F>randes sont sp<73>cifi<66>s. De plus, les expressions Tcl supportent les op<6F>randes non-num<75>riques et les comparaisons de cha<68>nes.
</div><br>
<div><b>OPERANDES</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Une expression Tcl consiste en une combinaison d'op<6F>randes, d'op<6F>rateurs, et de parenth<74>ses. L'espace peut <20>tre employ<6F> entre les op<6F>randes, op<6F>rateurs et parenth<74>ses; il est ignor<6F> par les instructions d'expression. Si possible, les op<6F>randes sont interpr<70>t<EFBFBD>s comme des valeurs enti<74>res. Les valeurs enti<74>res peuvent <20>tre sp<73>cifi<66>es en d<>cimal (le cas normal), en octal (si le premier caract<63>re de l'op<6F>rande est <b>0</b>), ou en hexad<61>cimal (si les deux premiers caract<63>res de l'op<6F>rande sont <b>0x</b>). Si un op<6F>rande n'est pas un des formats entiers donn<6E>s plus haut, alors il est trait<69> comme un nombre flottant si c'est possible. Les nombres flottants peuvent <20>tre sp<73>cifi<66>s de toutes les mani<6E>res accept<70>es par un compilateur compatible ANSI-C (except<70> que les suffixes<b> f</b>, <b>F</b>, <b>l</b>, et <b>L</b> ne seront pas autoris<69>s dans la plupart des installations). Par exemple, tous les nombres flottants suivants sont valides : 2.1, 3., 6e4, 7.91e+16. Si aucune interpr<70>tation num<75>rique n'est possible, alors un op<6F>rande est consid<69>r<EFBFBD> comme une cha<68>ne (et seulement un ensemble limit<69> d'op<6F>rateurs peut lui <20>tre appliqu<71>). </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les op<6F>randes peuvent <20>tre sp<73>cifi<66>s d'une des fa<66>ons suivantes: </div>
<div ALIGN="LEFT" style="margin-left: 51px;">&#91;1]&nbsp;&nbsp;&nbsp;&nbsp;Comme une valeur num<75>rique, soit enti<74>re soit flottante. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">&#91;2]&nbsp;&nbsp;&nbsp;&nbsp;Comme une variable Tcl, en utilisant la notation standard <b>&#36;</b>. La valeur de la variable sera utilis<69>e comme op<6F>rande. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">&#91;3]&nbsp;&nbsp;&nbsp;&nbsp;Comme une cha<68>ne entour<75>e de doubles-guillemets. L'analyseur d'expression effectuera les substitution de backslash, de variable, et de commandes sur l'information entre guillemets, et utilisera la valeur r<>sultante comme op<6F>rande </div>
<div ALIGN="LEFT" style="margin-left: 51px;">&#91;4]&nbsp;&nbsp;&nbsp;&nbsp;Comme une cha<68>ne entour<75>e d'accolades. Les caract<63>res entre l'accolade ouverte et l'accolade fermante correspondante seront utilis<69>s comme op<6F>rande sans aucunes substitutions. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">&#91;5]&nbsp;&nbsp;&nbsp;&nbsp;Comme une commande Tcl entour<75>e de crochets. La commande sera ex<65>cut<75>e et son r<>sultat sera utilis<69> comme op<6F>rande. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">&#91;6]&nbsp;&nbsp;&nbsp;&nbsp;Comme une fonction math<74>matique dont les arguments ont une des formes definies plus haut pour les op<6F>randes , tel que <b>sin(&#36;x)</b>. Voir ci-dessous pour une liste de fonctions d<>finies. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Ou les substitutions se produisent plus haut (ex. dans les cha<68>nes entre guillemets), elles sont effectu<74>es par les instructions des expressions. N<>anmoins, une couche de substitution suppl<70>mentaire peut d<>j<EFBFBD> avoir <20>t<EFBFBD> effectu<74>e par l'analyseur de commande avant que le processeur d'expression ait <20>t<EFBFBD> appel<65>. Comme expliqu<71> ci-dessous, il est pr<70>f<EFBFBD>rable d'entourer les expressions dans des accolades pour emp<6D>cher l'analyseur de commande d'effectuer des substitutions sur le contenu. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Pour quelques exemples d'expressions simples, supposez que la variable <b>a</b> a pour valeur 3 et la variable <b>b</b> a pour valeur 6. </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>expr 3.1 + &#36;a6.1<br>
</b><b>expr 2 + &quot;&#36;a.&#36;b&quot;5.6<br>
</b><b>expr 4*&#91;llength &quot;6 2&quot;]8<br>
</b><b>expr &#123;&#123;word one} &lt; &quot;word &#36;a&quot;}0</b><br>
</div><br>
<div><b>OPERATEURS</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les op<6F>rateurs valides sont list<73>s ci-dessous, group<75>s en ordre de pr<70>c<EFBFBD>dence d<>croissant:
<DL>
<DT><b>- + ~ !</b><br></DT><DD>Moins unaire, plus unaire, NOT bit <20> bit, NOT logique. Aucun de ces op<6F>rateurs ne peut <20>tre appliqu<71> aux op<6F>randes cha<68>ne, et NOT bit <20> bit peut seulement <20>tre appliqu<71> aux entiers.
</DD>
<DT><b>* / %</b><br></DT><DD>Multiplication, division, modulo. Aucun de ces op<6F>randes ne peut <20>tre appliqu<71> aux op<6F>randes cha<68>ne, et modulo peut <20>tre appliqu<71> seulement aux entiers. modulo Modulo aura toujours le m<>me signe que le diviseur et une valeur absolue inf<6E>rieure au diviseur.
</DD>
<DT><b>+ -</b><br></DT><DD>Addition et soustraction. Valides pour tout op<6F>rande num<75>rique.
</DD>
<DT><b>&lt;&lt; &gt;&gt;</b><br></DT><DD>D<EFBFBD>calage <20> gauche et <20> droite. Valides seulement pour les op<6F>randes entiers. Un d<>calage <20> droite propage toujours le bit de signe.
</DD>
<DT><b>&lt; &gt; &lt;= &gt;=</b><br></DT><DD>Bool<EFBFBD>ens inf<6E>rieur <20>, sup<75>rieur <20>, inf<6E>rieur <20> ou <20>gal, et sup<75>rieur <20> ou <20>gal. Chaque op<6F>rateur donne 1 si la condition est vraie, 0 autrement. Ces op<6F>rateurs peuvent <20>tre appliqu<71>s aux cha<68>nes aussi bien qu'aux op<6F>randes num<75>riques, dans le cas des cha<68>nes, une comparaison est utilis<69>e.
</DD>
<DT><b>== !=</b><br></DT><DD>Bool<EFBFBD>en <20>gal et diff<66>rent. Chaque op<6F>rateur produit un z<>ro/un r<>sultat. Valides pour tout types d'op<6F>rande.
</DD>
<DT><b>&amp;</b><br></DT><DD>ET Bit <20> bit. Valide pour des op<6F>randes entiers seulement.
</DD>
<DT><b>^</b><br></DT><DD>OU exclusif Bit <20> bit. Valide pour des op<6F>randes entiers seulement.
</DD>
<DT><b>|</b><br></DT><DD>OU Bit <20> bit. Valide pour des op<6F>randes entiers seulement. </DD>
<DT><b>&amp;&amp;</b><br></DT><DD>ET logique. Donne 1 si les deux op<6F>randes sont diff<66>rent de z<>ro, 0 autrement. Valide seulement pour pour les op<6F>randes bool<6F>ens et num<75>riques (entiers ou flottants).
</DD>
<DT><b>||</b><br></DT><DD>OU logique. Donne 0 si les deux op<6F>randes sont z<>ro, 1 autrement. Valide seulement pour op<6F>randes bool<6F>ens et num<75>riques (entiers ou flottants).
</DD>
<DT><i>x</i><b>?</b><i>y</i><b>:</b><i>z</i><br></DT><DD>If-then-else, comme en C. Si <i>x</i> est <20>valu<6C> diff<66>rent de z<>ro, alors le r<>sultat est la valeur de <i>y</i>. Autrement le r<>sultat est la valeur de <i>z</i>. L'op<6F>rande <i>x</i> doit avoir une valeur num<75>rique.
</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Voir le manuel C pour plus de d<>tails sur les r<>sultats produits par chaque op<6F>rateur. Tous les op<6F>rateurs binaire sont group<75>s de gauche <20> droite <20> l'int<6E>rieur d'un m<>me niveau de pr<70>c<EFBFBD>dence. Par exemple, la commande </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>expr 4*2 &lt; 7</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">retourne 0. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les op<6F>rateurs <b>&amp;&amp;</b>, <b>||</b>, et <b>?:</b> ont une &quot;<EFBFBD>valuation paresseuse&quot;, juste comme en C, ce qui signifie que ces op<6F>randes ne ont pas <20>valu<6C>s s'ils ne sont pas n<>cessaires pour d<>terminer le r<>sultat. Par exemple, dans la commande </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>expr &#123;&#36;v ? &#91;a] : &#91;b]}</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">seulement un des <b>&#91;a]</b> ou <b>&#91;b]</b> sera <20>valu<6C>, d<>pendant de la valeur de <b>&#36;v</b>. Notez, n<>anmoins, que ceci est seulement vrai si l'expression enti<74>re est entour<75>e d'accolades; autrement l'analyseur Tcl evaluera <b>&#91;a]</b> et <b>&#91;b]</b> avant d'appeler la commande<b> expr</b>.
</div><br>
<div><b>FONCTIONS MATHEMATIQUES </b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Tcl supporte les fonctions math<74>matiques suivantes dans les expressions: <br>
<TABLE ALIGN="center" BORDER="0" CELLSPACING="0" CELLPADDING="0" WIDTH="80%">
<TR ALIGN="center">
<TD>
abs
</TD>
<TD>
cosh
</TD>
<TD>
log
</TD>
<TD>
sqrt
</TD>
</TR>
<TR ALIGN="center">
<TD>
acos
</TD>
<TD>
double
</TD>
<TD>
log10
</TD>
<TD>
srand
</TD>
</TR>
<TR ALIGN="center">
<TD>
asin
</TD>
<TD>
exp
</TD>
<TD>
pow
</TD>
<TD>
tan
</TD>
</TR>
<TR ALIGN="center">
<TD>
atan
</TD>
<TD>
floor
</TD>
<TD>
rand
</TD>
<TD>
tanh
</TD>
</TR>
<TR ALIGN="center">
<TD>
atan2
</TD>
<TD>
fmod
</TD>
<TD>
round
</TD>
<TD>
<!--R5C4-->
</TD>
</TR>
<TR ALIGN="center">
<TD>
ceil
</TD>
<TD>
hypot
</TD>
<TD>
sin
</TD>
<TD>
<!--R6C4-->
</TD>
</TR>
<TR ALIGN="center">
<TD>
cos
</TD>
<TD>
int
</TD>
<TD>
sinh</b >
</TD>
<TD>
<!--R7C4-->
</TD>
</TR>
</TABLE><br>
<DL>
<DT><b>abs(</b><i>arg</i><b>)</b></DT><DD>Renvoie la valeur absolue de <i>arg</i>. <i>Arg</i> peut <20>tre entier ou flottant, et le r<>sultat renvoy<6F> est de la m<>me forme.
</DD>
<DT><b>acos(</b><i>arg</i><b>)</b></DT><DD>Renvoie l'arc cosinus de <i>arg</i>, dans l'intervalle &#91;0,pi] radians. <i>Arg</i> sera dans l'intervalle &#91;-1,1].
</DD>
<DT><b>asin(</b><i>arg</i><b>)</b></DT><DD>Renvoie l'arc sinus de <i>arg</i>, dans l'intervalle &#91;-pi/2,pi/2] radians. <i>Arg</i> sera dans l'intervalle &#91;-1,1].
</DD>
<DT><b>atan(</b><i>arg</i><b>)</b></DT><DD>Renvoie l'arc tangente de <i>arg</i>, dans l'intervalle &#91;-pi/2,pi/2] radians.
</DD>
<DT><b>atan2(</b><i>x, y</i><b>)</b></DT><DD>Renvoie l'arc tangente de <i>y</i>/<i>x</i>, dans l'intervalle &#91;-pi,pi] radians. <i>x</i> et <i>y</i> ne peuvent <20>tretous les deux 0.
</DD>
<DT><b>ceil(</b><i>arg</i><b>)</b></DT><DD>Renvoie la plus petite valeur enti<74>re non inf<6E>rieure <20> <i>arg</i>.
</DD>
<DT><b>cos(</b><i>arg</i><b>)</b></DT><DD>Renvoie le cosinus de <i>arg</i>, mesur<75> en radians.
</DD>
<DT><b>cosh(</b><i>arg</i><b>)</b></DT><DD>Renvoie le cosinus hyperbolique de <i>arg</i>. Si le r<>sultat cause un d<>bordement, une erreur est renvoy<6F>e.
</DD>
<DT><b>double(</b><i>arg</i><b>)</b></DT><DD>Si <i>arg</i> est une valeur flottante , retourne <i>arg</i>, autrement convertit <i>arg</i> en flottant et retourne la valeur convertie.
</DD>
<DT><b>exp(</b><i>arg</i><b>)</b></DT><DD>Renvoie l'exponentiel de <i>arg</i>, d<>fini comme e**<i>arg</i>. Si le r<>sultat cause un d<>bordement, une erreur est renvoy<6F>e.
</DD>
<DT><b>floor(</b><i>arg</i><b>)</b></DT><DD>Renvoie la plus grande valeur enti<74>re non sup<75>rieure <20> <i>arg</i>.</DD>
<DT><b>fmod(</b><i>x, y</i><b>)</b></DT><DD>Renvoie le reste flottant de la division of <i>x</i> par <i>y</i>. Si <i>y</i> est 0, une erreur est renvoy<6F>e.
</DD>
<DT><b>hypot(</b><i>x, y</i><b>)</b></DT><DD>Calcule la longueur de l'hypot<6F>nuse d'un triangle rectangle(<i>x</i>*<i>x</i>+<i>y</i>*<i>y</i>).
</DD>
<DT><b>int(</b><i>arg</i><b>)</b></DT><DD>Si <i>arg</i> est une valeur enti<74>re, retourne <i>arg</i>, autrement convertit <i>arg</i> en entier par truncature et retourne la valeur convertie.
</DD>
<DT><b>log(</b><i>arg</i><b>)</b></DT><DD>Renvoie le logarithme naturel de <i>arg</i>. <i>Arg</i> doit <20>tre une valeur positive.
</DD>
<DT><b>log10(</b><i>arg</i><b>)</b></DT><DD>Renvoie le logarithme base 10 de <i>arg</i>. <i>Arg</i> doit <20>tre une valeur positive.
</DD>
<DT><b>pow(</b><i>x, y</i><b>)</b></DT><DD>Calcule la valeur de <i>x</i> elev<65> <20> la puissance <i>y</i>. Si <i>x</i> est n<>gatif, <i>y</i> doit <20>tre une valeur enti<74>re.
</DD>
<DT><b>rand()</b></DT><DD>Renvoie un nombre flottant compris entre z<>ro et juste inf<6E>rieur <20> un ou, en termes math<74>matiques, l'intervalle &#91;0,1]. La graine vient de l'horloge interne de la machine ou peut <20>tre fix<69>e manuelllement avec la fonction <b>srand</b>.
</DD>
<DT><b>round(</b><i>arg</i><b>)</b></DT><DD>Si <i>arg</i> est une valeur enti<74>re, retourne <i>arg</i>, autrement convertit <i>arg</i> en entier arrondi et retourne la valeur convertie.
</DD>
<DT><b>sin(</b><i>arg</i><b>)</b></DT><DD>Renvoie le sinus de <i>arg</i>, mesur<75> en radians.
</DD>
<DT><b>sinh(</b><i>arg</i><b>)</b></DT><DD>Renvoie le sinus hyperbolique de <i>arg</i>. Si r<>sultat cause un d<>bordement, une erreur est renvoy<6F>e.
</DD>
<DT><b>sqrt(</b><i>arg</i><b>)</b></DT><DD>Renvoie la racine carr<72>e de <i>arg</i>. <i>Arg</i> doit <20>tre non-n<>gatif.
</DD>
<DT><b>srand(</b><i>arg</i><b>)</b></DT><DD>Le <i>arg</i>, qui doit <20>tre un entier, est utilis<69> pour r<>initialiser la graine du generateur de nombre al<61>atoire. Renvoie le premier nombre al<61>atoire de cette graine. Chaque interpr<70>teur a sa propre graine.
</DD>
<DT><b>tan(</b><i>arg</i><b>)</b></DT><DD>Renvoie la tangente de <i>arg</i>, mesur<75>e en radians.
</DD>
<DT><b>tanh(</b><i>arg</i><b>)</b></DT><DD>Renvoie la tangente hyperbolique de <i>arg</i>. </DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">En plus de ces fonctions pr<70>d<EFBFBD>finies, les applications peuvent definir des fonctions additionelles en utilisant <A HREF="22.htm"><b>Tcl_CreateMathFunc</b></A>().
</div><br>
<div><b>TYPES, DEBORDEMENT, ET PRECISION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Tous les calculs internes impliquant des entiers sont fait avec le type C <i>long</i>, et tous calculs internes impliquant des flottants sont fait avec le type C <i>double</i>. Pendant la conversion d'une cha<68>ne en valeur flottante, le d<>bordement d'exposant est d<>tect<63> et donne une erreur Tcl. Pour la conversion d'une cha<68>ne en entier, la detection du d<>bordement depend du comportement de quelques routines dans la biblioth<74>que C locale, donc il doit <20>tre consid<69>r<EFBFBD> comme non fiable. Dans tous les cas, le d<>bordement entier n'est g<>n<EFBFBD>ralement pas d<>tect<63> avec fiabilit<69> dans les r<>sultats interm<72>diaires. Le d<>bordement flottant est d<>tect<63> par le mat<61>riel, qui est g<>n<EFBFBD>ralement fiable. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La conversion dans les representations internes des op<6F>randes entiers, flottants, et cha<68>nes est faite automatiquement si besoin. Pour les calculs arithm<68>tiques, les entiers sont utilis<69>s jusqu'a ce qu'un nombre flottant soit introduit, apr<70>s lequel les flottants sont utilis<69>s. Par exemple, </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>expr 5 / 4</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">renvoie 1, alors que </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>expr 5 / 4.0</b><br>
<b>expr 5 / ( &#91;string length &quot;abcd&quot;] + 0.0 )</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">renvoient 1.25. Les valeurs flottantes sont toujours renvoy<6F>es avec un &quot;<b>.</b>&quot; ou un <b>e</b> ainsi elles ne ressemblent pas aux valeur enti<74>res. Par exemple, </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>expr 20.0/5.0</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">retourne <b>4.0</b>, pas <b>4</b>.
</div><br>
<div><b>OPERATIONS SUR DES CHAINES </b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les valeurs cha<68>ne peuvent <20>tre employ<6F>es comme op<6F>randes des op<6F>rateurs de comparaison, bien que l'evaluateur d'expression essaye de comparer si possible des entiers ou des flottants. Si un des op<6F>randes d'une comparaison est une cha<68>ne et que l'autre a une valeur num<75>rique, l'op<6F>rande num<75>rique est converti en une cha<68>ne en utilisant le sp<73>cificateur de format C <i>sprintf</i> <b>%d</b> pour les entiers et <b>%g</b> pour les valeurs flottantes. Par exemple, les commandes </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>expr &#123;&quot;0x03&quot; &gt; &quot;2&quot;}</b><br>
<b>expr &#123;&quot;0y&quot; &lt; &quot;0x12&quot;}</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">renvoient toutes les deux 1. La premi<6D>re comparaison est faite en utilisant la comparaison enti<74>re, et la seconde est faite en utilisant la comparaison de cha<68>nes apr<70>s que le second op<6F>rande ait <20>t<EFBFBD> converti en la cha<68>ne <b>18</b>. parce que Tcl a tendance a traiter les valeurs comme des nombres chaque fois que possible, ce n'est g<>n<EFBFBD>ralement pas une bonne id<69>e d'utiliser des operateurs comme <b>==</b> quand vous desirez une comparaison de cha<68>nes et les valeurs des op<6F>randes pourraient <20>tre arbitraires; il est pr<70>f<EFBFBD>rable dans ces cas d'utiliser la commande <A HREF="165.htm"><b>string</b></A> .
</div><br>
<div><b>CONSIDERATIONS DE PERFORMANCE </b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Entourez les expressions d'accolades pour la rapidit<69> et le stockage le moins encombrant. Ceci permet au compilateur bytecode Tcl de g<>n<EFBFBD>rer le meilleur code. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Comme mentionn<6E> plus haut, les expressions sont substitu<74>es deux fois: une fois par l'analyseur Tcl et une fois par la commande<b> expr</b>. Par exemple, les commandes </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>set a 3</b><br>
<b>set b &#123;&#36;a + 2}</b><br>
<b>expr &#36;b*4</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">retourne 11, pas un multiple de 4. Ceci parce que l'analyseur Tcl substituera en premier <b>&#36;a + 2</b> pour la variable <b>b</b>, ensuite la commande <b>expr</b> evaluera l'expression <b>&#36;a + 2*4</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La plupart des expressions n'exigent pas une seconde passe de substitutions. Soit elles sont entour<75>es d'accolades ou, sinon, leurs substitutions de variable et de commandes donnent des nombres ou des cha<68>nes qui eux-m<>me n'exigent pas de substitutions. N<>anmoins, parce que quelques expressions non entour<75>es d'accolades n<>c<EFBFBD>ssitent deux passes de substitutions, le compilateur bytecode doit emettre des instructions suppl<70>mentaires pour g<>rer cette situation. Le code le plus couteux est requis pour les expressions non entour<75>es d'accolades qui contiennent des substitutions de commandes. Ces expressions doivent <20>tre impl<70>ment<6E>es par la g<>n<EFBFBD>ration de nouveau code chaque fois que l'expression est ex<65>cut<75>e. </div><br>
<div>Derni<EFBFBD>re r<>vision: 8.3</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="106.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="108.htm"><b>Suivant</b></A>
</div>
</BODY></HTML>

22
hlp/fr/tcl/fblocked.htm Normal file
View File

@@ -0,0 +1,22 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>fblocked&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">fblocked - Teste si la derni<6E>re op<6F>ration d'entr<74>e a pu traiter toutes les entr<74>es disponibles
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>fblocked </b><i>channelId</i>&nbsp;
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>fblocked</b> retourne 1 si la plus r<>cente op<6F>ration d'entr<74>e pour <i>channelId</i> a renvoy<6F> moins d'information que requis parce que toutes les entr<74>es disponibles ont <20>t<EFBFBD> <20>puis<69>es. Par exemple, si <A HREF="118.htm"><b>gets</b></A> est appel<65>e quand il y a seulement trois caract<63>res disponibles pour l'entr<74>e et pas de s<>quence de fin-de-ligne, <A HREF="118.htm"><b>gets</b></A> retourne une cha<68>ne vide et un appel suivant de <b>fblocked</b> renverra 1.
</div> <br>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><A HREF="118.htm">gets</A>(n), <A HREF="151.htm">read</A>(n)</div> <br>
<div>Derni<EFBFBD>re r<>vision: 7.5</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="107.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="109.htm"><b>Suivant</b></A>
</div>
</BODY></HTML>

56
hlp/fr/tcl/fconfigure.htm Normal file
View File

@@ -0,0 +1,56 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>fconfigure&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">fconfigure - Fixe et lit les options d'un canal
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>fconfigure </b><i>channelId</i><br>
<b>fconfigure </b><i>channelId</i> <i>name</i><br>
<b>fconfigure </b><i>channelId</i> <i>name value </i>?<i>name value ...</i>?<br>
<br>
</div>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>fconfigure</b> fixe et lit les options des canaux. <i>ChannelId</i> identifie le canal pour lequel fixer ou consulter une option. Si aucun arguments <i>name</i> ou <i>value</i> ne sont fournis, la commande retourne une liste contenant des options altern<72>es de noms et de valeurs pour le canal. Si <i>name</i> est fourni mais pas <i>value</i> alors la commande retourne la valeur courante de l 'option donn<6E>e. Si une ou plusieurs paires de <i>name</i> et <i>value</i> sont fournies, la commande fixe chacune des options d<>sign<67>es <20> la <i>value</i> correspondante; dans ce cas la valeur de retour est une cha<68>ne vide. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Le options d<>crites ci-dessous sont support<72>es par tous les canaux. De plus, chaque type de canal peut ajouter les options qu'il est seul <20> supporter. Voir la page de manuel pour la commande qui cr<63>e chaque type de canaux pour les options que ce type de canal sp<73>cifique supporte. Par exemple, voyez la page de manuel de la commande <A HREF="162.htm"><b>socket</b></A> pour ses options suppl<70>mentaires.
<DL>
<DT><b>-blocking</b> <i>boolean</i><br></DT><DD>L'option <b>-blocking</b> d<>termine si les op<6F>rations I/O sur le canal peuvent provoquer le bloquage du processus. La valeur de l'option doit <20> tre une valeur bool<6F>enne correcte. Les canaux sont normalement en mode bloquant; si un canal est plac<61> en mode non bloquant ceci affectera l'op<6F>ration des commandes <A HREF="118.htm"><b>gets</b></A>, <A HREF="151.htm"><b>read</b></A>, <A HREF="148.htm"><b>puts</b></A>, <A HREF="114.htm"><b>flush</b></A>, et <A HREF="97.htm"><b>close</b></A>; voyez la documentation de ces commandes pour les d<>tails. Pour que le mode non bloquant fonctionne correctement, l'application doit utiliser la boucle d'<27>v<EFBFBD>nement Tcl (ex. en appelant <A HREF="29.htm"><b>Tcl_DoOneEvent</b></A> ou la commande<A HREF="180.htm"><b> </b><b>vwait</b></A>).
</DD>
<DT><b>-buffering</b> <i>newValue</i><br></DT><DD>Si <i>newValue</i> est <b>full</b> alors le syst<73>me I /O mettra la sortie en tampon jusqu'a ce que son tampon interne soit plein ou jusqu'a ce que la commande <A HREF="114.htm"><b>flush</b></A> soit appel<65>e. Si <i>newValue</i> est <b>line</b>, alors le syst<73>me I/O <i>flushera</i> automatiquement la sortie pour le canal chaque fois que un caract<63>re newline est <20>mis. Si <i>newValue</i> est <b>none</b>, le syst<73>me I/O <i>flushera</i> automatiquement apr<70>s tout op<6F>ration de sortie. La valeur par d<>faut de <b>-buffering</b> est fix<69>e <20> <b>full</b> except<70> pour les canaux qui se connectent <20> des p<>riph<70>riques terminal-like; pour ces canaux la valeur initiale est <b>line</b>. De plus, <b>stdin</b> et <b>stdout</b> sont initialement fix<69>s <20> <b>line</b>, et <b>stderr</b> est fix<69> <20> <b>none</b>.
</DD>
<DT><b>-buffersize</b> <i>newSize</i><br></DT><DD><i>Newvalue</i> doit <20>tre un entier; sa valeur est utilis<69>e pour fixer la taille, en octets, du tampon allou<6F> pour ce canal pour stocker l'entr<74>e ou la sortie. <i>Newvalue</i> doit <20>tre entre dix et un million, permettant des tampons d'une taille de dix <20> un million octets.
</DD>
<DT><b>-encoding</b> <i>name</i></DT><DD>Cette option est utilis<69>e pour specifier l'encodage du canal, ainsi les donn<6E>es peuvent <20>tre converties de et <20> partir d'Unicode pour <20>tre utilis<69>es en Tcl. Par exemple, pour permettre <20> Tcl de lire des caract<63>res d'un fichier Japonais en <b>shiftjis</b> et d'en traiter et d'afficher correctement le contenu, l'encodage devra <20>tre fix<69> <20> <b>shiftjis</b>. Ainsi, en lisant <20> partir du canal, les octets du fichier Japonais seront convertis en Unicode au fur et <20> mesure de leur lecture. L'<27>criture est aussi support<72>e <20> quand les cha<68>nes Tcl seront <20>crites dans le canal elles seront automatiquement converties en l'encodage sp<73>cifi<66> pour la sortie.
Si un fichier contient des donn<6E>es binaires pures (par exemple, une image JPEG), l'encodage du canal sera configur<75> en <A HREF="91.htm"><b>binary</b></A>. Tcl alors n'assignera aucune interpr<70>tation aux donn<6E>es dans le fichier et simplement lira ou ecrira des octets. La commande Tcl <A HREF="91.htm"><b>binary</b></A> peut <20>tre utilis<69>e pour manipuler ces donn<6E>es orient<6E>es-octet.
L'encodage par d<>faut pour les canaux nouvellement ouverts est le m<>me que le syst<73>me d'encodage utilis<69> pour l 'interface avec le syst<73>me d'exploitation.
</DD>
<DT><b>-eofchar</b> <i>char</i><br></DT><DD></DD>
<DT><b>-eofchar</b> <b>&#123;</b><i>inChar outChar</i><b>}</b></DT><DD>Cette option supporte le syst<73>me de fichiers DOS qui utilise Control-z (&#92;x1a) comme marqueur de fin de fichier. Si <i>char</i> n'est pas une cha<68>ne vide, alors ce caract<63>re signale fin-de-fichier quand il est rencontr<74> pendant l'entr<74>e. Pour la sortie, le caract<63>re fin-de-fichier est <20>mis quand le canal est ferm<72>. Si <i>char</i> est la cha<68>ne vide, alors il n'y a pas de caract<63>re sp<73>cial marqueur de fin de fichier. Pour les canaux en lecture-<2D>criture, une liste <20> deux-<2D>l<EFBFBD>ment sp<73>cifie le marqueur de fin de fichier pour l'entr<74>e et la sortie, respectivement. Comme conv<6E>nience, quand vous fixez le caract<63>re de fin-de-fichier pour un canal en lecture-<2D>criture vous pouvez specifier une simple valeur qui s'appliquera <20> la fois <20> la lecture et <20> l'<27>criture. Quand vous interrogez le caract<63>re de fin-de-fichier d'un canal en lecture-<2D>criture, une liste <20> deux-<2D>l<EFBFBD>ments sera toujours renvoy<6F>e. La valeur par d<>faut de <b>-eofchar</b> est la cha<68>ne vide dans tout les cas except<70> pour les fichiers sous Windows. Dans ce cas, <b>-eofchar</b> est Control-z (&#92;x1a) pour la lecture et la cha<68>ne vide pour l'<27>criture.
</DD>
<DT><b>-translation</b> <i>mode</i></DT><DD></DD>
<DT><b>-translation</b> <b>&#123;</b><i>inMode outMode</i><b>}</b></DT><DD>Dans les scripts Tcl la fin d'une ligne est toujours represent<6E>e en utilisant un simple caract<63>re newline (&#92;n). N<>anmoins, dans les fichiers et p<>riph<70>riques la fin d'une ligne peut <20>tre represent<6E>e diff<66>remment sur diff<66>rentes plateformes, ou m<>me pour diff<66>rents p<>riph<70>riques sur la m<>me plateforme. Par exemple, sous UNIX les saut de lignes sont utilis<69>s dans les fichiers, alors que les s<>quences retour-chariot/linefeed sont normalement utilis<69>es dans les connections r<>seau. En entr<74>e (ex., avec <A HREF="118.htm"><b>gets</b></A> et <A HREF="151.htm"><b>read</b></A>) le syst<73>me I/O Tcl traduit automatiquement traduit la repr<70>sentation fin-de-ligne externe en caract<63>res newline. En sortie (ex., avec <A HREF="148.htm"><b>puts</b></A>), le syst<73>me I/O traduit le saut de lignes en repr<70>sentation externe fin-de-ligne. Le mode de traduction par d<>faut, <b>auto</b>, g<>re tout les cas communs automatiquement, mais l'option <b>-translation</b> fournit un contr<74>le explicite des traductions de fin de ligne.
La valeur associ<63>e <20> <b>-translation</b> est un simple item pour les canaux lecture-seule et <20>criture-seule. La valeur est une liste <20> deux-<2D>l<EFBFBD>ment pour les canaux en lecture-<2D>criture; le mode de traduction de lecture est le premier <20>l<EFBFBD>ment de la liste, et le mode de traduction d'<27>criture est le second <20>l<EFBFBD>ment. Comme convenience, quand vous fixez le mode de traduction pour un canal en lecture-<2D>criture vous pouvez specifier une seule valeur qui s'appliquera autant <20> la lecture qu'<27> l'<27>criture. Quand vous demandez le mode de traduction d'un canal lecture-<2D>criture, une liste <20> deux-<2D>l<EFBFBD>ments sera toujours renvoy<6F>e. Les valeurs suivantes sont couramment support<72>es:
<DL>
<DT><b>auto</b><br></DT><DD>Comme mode traduction d'entr<74>e, <b>auto</b> traite newline (<b>lf</b>), retour chariot (<b>cr</b>), ou retour chariot suivi par une newline (<b>crlf</b>) comme la repr<70>sentation de fin de ligne. La repr<70>sentation de fin de ligne peut m<>me changer d'une ligne <20> l'autre, et tout les cas sont traduits en <i>newline</i>. Comme mode de traduction de sortie, <b>auto</b> choisit une repr<70>sentation sp<73>cifique <20> la plateforme; pour les sockets sur toutes les plateformes Tcl choisit <b>crlf</b>, pour tous les Unix, il choisit <b>lf</b>, pour la plateforme Macintosh il choisit <b>cr</b> et pour les diff<66>rentes versions de Windows il choisit <b>crlf</b>. La valeur par d<>faut de <b>-translation</b> est <b>auto</b> pour l'entr<74>e et la sortie.
</DD>
<DT><b>binary</b> <br></DT><DD>Aucunes traductions fin de ligne ne sont effectu<74>es. Ceci est presque identique au mode <b>lf</b>, except<70> qu'en plus le mode <A HREF="91.htm"><b>binary</b></A> fixe aussi le caract<63>re fin-de-fichier <20> la cha<68>ne vide (qui le d<>sactive) et fixe l'encodage <20> <A HREF="91.htm"><b>binary</b></A> (qui d<>sactive le fitrage par l'encodage). Voir la description de <b>-eofchar</b> et <b>-</b><A HREF="101.htm"><b>encoding</b></A> pour plus d'information.
</DD>
<DT><b>cr</b></DT><DD>La fin d'une ligne dans le fichier ou p<>riph<70>rique sous-jacent est represent<6E>e par un simple caract<63>re retour chariot. Comme mode de traduction d'entr<74>e, le mode <b>cr</b> convertit les retours chariot en caract<63>res newline. Comme le mode de traduction de sortie, le mode <b>cr</b> traduit les caract<63>res newline en retour chariot. Ce mode est typiquement utilis<69> sur les plateformes Macintosh.
</DD>
<DT><b>crlf</b></DT><DD>La fin d'une ligne dans le fichier ou p<>riph<70>rique sous-jacent est represent<6E>e par un caract<63>re retour chariot suivi par un caract<63>re linefeed. Comme mode de traduction d'entr<74>e,le mode <b>crlf</b> convertit le s<>quences retour chariot /linefeed en caract<63>res newline. Comme mode de traduction de sortie, le mode <b>crlf</b> traduit caract<63>res newline en s<>quences retour chariot /linefeed. Ce mode est principalement utilis<69> sur les plateformes Windows et pour les connections r<>seau.
</DD>
<DT><b>lf</b></DT><DD>la fin d'une ligne dans le fichier ou p<>riph<70>rique sous-jacent est repr<70>sent<6E>e par un seul caract<63>re newline; Dans ce mode, aucune traduction ne se fait pendant soit l'entr<74>e soit la sortie. Ce mode est utilis<69> principalement sur les plateformes UNIX.</DD>
</DL>
</DD>
</DL>
</div>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><A HREF="97.htm">close</A>(n), <A HREF="114.htm">flush</A>(n), <A HREF="118.htm">gets</A>(n), <A HREF="148.htm">puts</A>(n), <A HREF="151.htm">read</A>(n), <A HREF="162.htm">socket</A>(n) </div><br>
<div>Derni<EFBFBD>re r<>vision: 8.1</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="108.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="110.htm"><b>Suivant</b></A>
</div>
</BODY></HTML>

65
hlp/fr/tcl/fcopy.htm Normal file
View File

@@ -0,0 +1,65 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>fcopy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">fcopy - Copie des donn<6E>es d'un canal <20> un autre.
</div> <br>
<div><b>SYNTAXE</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>fcopy </b><i>inchan</i> <i>outchan</i> ?<b>-size </b><i>size</i>? ?<b>-command </b><i>callback</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>fcopy</b> copie donn<6E>es d'un canal I/O, <i>inchan</i> <20> un autre canal I/O, <i>outchan</i>. La commande <b>fcopy</b> force la mise en tampon dans le syst<73>me I/O Tcl pour <20>viter une copie suppl<70>mentaire et pour <20>viter la mise en tampon de trop de donn<6E>es en m<>moire pendant la copie de gros fichiers vers des destinations lentes comme les sockets r<>seau. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>fcopy</b> transf<73>re les donn<6E>es de <i>inchan</i> jusqu'a la fin du fichier ou bien que <i>size</i> octets aient <20>t<EFBFBD> transf<73>r<EFBFBD>s. Si aucun argument <b>-size</b> n'est donn<6E>, alors la copie va jusqu'a la fin du fichier. Toute les donn<6E>es lues <20> partir de <i>inchan</i> sont copi<70>es vers <i>outchan</i>. Sans l'option<b> -command</b>, <b>fcopy</b> bloque jusqu'a ce que la copie soit compl<70>te et retourne le nombre d'octets <20>crits dans <i>outchan</i>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">L'argument <b>-command</b> fait travailler <b>fcopy</b> en arri<72>re-plan. Dans ce cas elle retourne imm<6D>diatement et le <i>callback</i> est appel<65> plus tard quand la copie se termine. Le <i>callback</i> est appel<65> avec un ou deux arguments suppl<70>mentaire qui indique combien d'octets ont <20>t<EFBFBD> <20>crits dans <i>outchan</i>. Si une erreur s'est produite pendant la copie en arri<72>re-plan, le second argument est la cha<68>ne associ<63>e <20> l'erreur. Avec une copie en arri<72>re-plan, it n'est pas n<>cessaire de mettre <i>inchan</i> ou <i>outchan</i> dans un mode non-bloquant; la commande <b>fcopy</b> en prend soin de automatiquement. N<>anmoins, il est n<>cessaire d'entrer dans la boucle d'<27>v<EFBFBD>nement en utilisant la commande <A HREF="180.htm"><b>vwait</b></A> ou en utilisant Tk. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Vous n'<27>tes pas autoris<69>s <20> faire d'autre op<6F>rations I/O avec <i>inchan</i> ou <i>outchan</i> pendant une <b>fcopy</b> en arri<72>re-plan. Si soit <i>inchan</i> soit <i>outchan</i> est ferm<72> pendant la copie est en cours, la copie courante est stopp<70>e et le callback n'est <i>pas</i> fait. Si <i>inchan</i> est ferm<72>, alors toutes les donn<6E>es d<>j<EFBFBD> en file pour <i>outchan</i> sont <20>crites. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Notez que <i>inchan</i> peut devenir lisible pendant une copie en arri<72>re-plan. Vous devez arr<72>ter quelconque gestionnaires <A HREF="112.htm"><b>fileevent</b></A> pendant une copie en arri<72>re-plan ainsi ces gestionnaires n' interf<72>reront pas avec la copie. N'importe quel I/O tent<6E> par un gestionnaire <A HREF="112.htm"><b>fileevent</b></A> aura une erreur &quot; canal busy&quot;. </div>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>Fcopy</b> traduit les s<>quences de fin de ligne de <i>inchan</i> et <i>outchan</i> en accord avec l'option <b>-translation</b> pour ces canaux. Voir la page de manuel de <A HREF="109.htm"><b>fconfigure</b></A> pour des d<>tails sur l'option<b> -translation</b>. Les traductions signifient que le nombre d'octets lus de <i>inchan</i> peut <20>tre diff<66>rent du nombre d'octets <20>crits <20> <i>outchan</i>. Seul le nombre d'octets <20>crits sur <i>outchan</i> est rapport<72>, soit comme la valeur de retour d'un <b>fcopy</b> synchrone ou comme l'argument du callback pour un <b>fcopy</b> asynchrone. <br>
</div>
<div><b>EXEMPLE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Ce premier exemple montre comment le callback r<>cup<75>re le nombre d'octets transf<73>r<EFBFBD>. Il aussi utilise vwait pour placer l'application dans la boucle d'<27>v<EFBFBD>nement. Bien sur, cet exemple simplifi<66> pourrait <20>tre fait sans la commande callback. </div>
<div ALIGN="LEFT" style="margin-left: 102px;">proc Cleanup &#123;in out bytes &#123;error &#123;}}} &#123;<br>
global total<br>
set total &#36;bytes<br>
close &#36;in<br>
close &#36;out<br>
if &#123;&#91;string length &#36;error] != 0} &#123;<br>
# l'erreur s'est produite pendant la copie<br>
}<br>
}<br>
set in &#91;open &#36;file1]<br>
set out &#91;socket &#36;serveur &#36;port]<br>
fcopy &#36;in &#36;out -command &#91;liste Cleanup &#36;in &#36;out]<br>
vwait total<br>
<br>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Le second exemple copie par tranches et teste la fin de fichier dans la commande callback </div>
<div ALIGN="LEFT" style="margin-left: 102px;">proc CopyMore &#123;in out chunk bytes &#123;error &#123;}}} &#123;<br>
global total done<br>
incr total &#36; bytes<br>
if &#123;(&#91;string length &#36;error] != 0) || &#91;eof &#36;in] &#123;<br>
set done &#36;total<br>
close &#36;in<br>
close &#36;out<br>
} else &#123;<br>
fcopy &#36;in &#36;out -command &#91;list CopyMore &#36;in &#36;out &#36;chunk] &#92;<br>
-size &#36;chunk<br>
}<br>
}<br>
set in &#91;open &#36;file1]<br>
set out &#91;socket &#36;serveur &#36;port]<br>
set chunk 1024<br>
set total 0<br>
fcopy &#36;in &#36;out -command &#91;list CopyMore &#36;in &#36;out &#36;chunk] -size &#36;chunk<br>
vwait done<br>
<br>
</div>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><A HREF="102.htm">eof</A>(n), <A HREF="108.htm">fblocked</A>(n), <A HREF="109.htm">fconfigure</A>(n) </div><br>
<div>Derni<EFBFBD>re r<>vision: 8.0</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="109.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="111.htm"><b>Suivant</b></A>
</div>
</BODY></HTML>

112
hlp/fr/tcl/file.htm Normal file
View File

@@ -0,0 +1,112 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">file - Manipule les noms et les attributs de fichier
</div><br>
<div><b>SYNTHESE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>file </b><i>option</i> <i>name</i> ?<i>arg arg ...</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande fournit plusieurs op<6F>rations sur un nom ou des attributs de fichier. <i>Name</i> est le nom d'un fichier; s'il commence avec un tilde, alors la substitution tilde est faite avant l'ex<65>cution de la commande (voyez la page de manuel de <A HREF="113.htm"><b>filename</b></A> pour les d<>tails). <i>Option</i> indique que faire avec le nom de fichier. N'importe quelle abr<62>viation unique pour <i>option</i> est acceptable. Les options valides sont:
<DL>
<DT><b>file atime </b><i>name</i> ?<b>time</b>?</DT><DD>Renvoie une cha<68>ne d<>cimale donnant la date du dernier acc<63>s au fichier <i>name</i>. Si <i>time</i> est sp<73>cifi<66>, c'est pour fixer la date d'acc<63>s au fichier. Le temps est mesur<75> de la fa<66>on POSIX standard comme nombre de secondes depuis une date fixe (souvent January 1, 1970). Si le fichier n'existe pas ou que sa date d'acc<63>s ne peut <20>tre trouv<75>e ou fix<69>e alors une erreur est g<>n<EFBFBD>r<EFBFBD>e. Sous Windows, le syst<73>me de fichiers FAT ne supporte pas la date d'acc<63>s (POSIX).
<br></DD>
<DT><br><b>file attributes </b><i>name</i></DT><DD></DD>
<DT><b>file attributes</b><i>name</i> ?<A HREF="296.htm"><b>option</b></A>?
</DT><DD></DD>
<DT><b>file attributes</b><i>name</i> ?<b>option value option value...</b>?
</DT><DD>Cette sous commande retourne ou fixe les valeurs sp<73>cifiques <20> la plateforme associ<63>es <20> un fichier. La premi<6D>re forme retourne une liste de flags sp<73>cifiques <20> la plateforme et leurs valeurs. La seconde forme retourne la valeur de l'option sp<73>cifique. Le troisi<73>me forme fixe une ou plusieurs des valeurs. La valeurs sont les suivantes:
Sous Unix, <b>-group</b> lit ou fixe le nom de groupe pour le fichier. Un group id peut <20>tre donn<6E> <20> la commande, mais elle retourne un nom de groupe. <b>-owner</b> gets ou fixe le nom de l'utilisateur propri<72>taire du fichier. La commande retourne le nom du propri<72>taire, mais l'id num<75>rique peut <20>tre transmise quand on fixe le propri<72>taire. <b>-permissions</b> fixe ou lit le code octal que chmod(1) utilise. Cette commande a aussi un support limit<69> pour fixer en utilisant les attributs symboliques pour chmod(1), de la forme &#91;ugo]?&#91;&#91;+-=]&#91;rwxst],&#91;...]], ou les attributs symboliques multiples peuvent <20>tre s<>par<61>s par des virgules (exemple: <b>u+s,go-rw</b> ajoute sticky bit pour l'utilisateur, et enl<6E>ve les permissions lecture et <20>criture pour le groupe et le reste du monde). Un style cha<68>ne simplifi<66> <b>ls</b>, de la forme rwxrwxrwx (doit <20>tre 9 caract<63>res), est aussi support<72> (exemple: <b>rwxr-xr-t</b> est <20>quivalent <20> 01755).
Sous Windows, <b>-archive</b> donne la valeur ou bien fixe ou efface l'attribut archive du fichier. <b>-hidden</b> donne la valeur ou bien fixe ou efface l'attribut cach<63> du fichier. <b>-longname</b> expanse chaque <20>l<EFBFBD>ment de chemin en sa version longue. Cet attribut ne peut pas <20>tre fix<69>. <b>-readonly</b> donne la valeur ou bien fixe ou efface l'attribut lecture seule du fichier. <b>-shortname</b> donne une cha<68>ne ou tout <20>l<EFBFBD>ment de chemin est remplac<61> avec sa version courte (8.3). Cet attribut ne peut pas <20>tre fix<69>. <b>-system</b> donne ou bien fixe ou efface la valeur de l'attribut syst<73>me du fichier.
Sous Macintosh, <b>-creator</b> donne ou fixe le type Finder createur du fichier. <b>-hidden</b> donne ou bien fixe ou efface l'attribut cach<63> du fichier. <b>-readonly</b> donne ou bien fixe ou efface l'attribut lecture seule du fichier. Notez que les r<>pertoires peuvent seulement <20>tre v<>rouill<6C>s si File Sharing est activ<69>. <b>-type</b> donne ou fixe le type Finder du fichier.
</DD>
<DT><br><b>file channels ?</b><i>pattern</i>?</DT><DD>Si <i>pattern</i> n'est pas sp<73>cifi<66>, retourne une liste de noms de tous les canaux declar<61>s ouverts dans cet interpr<70>teur. Si <i>pattern</i> est sp<73>cifi<66>, seulement les noms correspondants <20> <i>pattern</i> sont renvoy<6F>s. La correspondance est d<>termin<69>e en utilisant les m<>mes r<>gles que pour <b>string match</b>. </DD>
<DT><br><b>file copy </b>?<b>-force</b>? ?<b>--</b>? <i>source</i> <i>target</i>
</DT><DD></DD>
<DT><b>file copy</b>?<b>-force</b>? ?<b>--</b>? <i>source</i> ?<i>source</i> ...? <i>targetDir</i>
</DT><DD></DD>
<DT></DT><DD>La premi<6D>re forme fait une copie du fichier ou r<>pertoire <i>source</i> sous le nom de chemin <i>target</i>. Si <i>target</i> est un r<>pertoire existant, alors la seconde forme est utilis<69>e. La seconde forme fait une copie dans <i>targetDir</i> de chaque fichier <i>source</i> list<73>. Si un r<>pertoire est sp<73>cifi<66> comme <i>source</i>, alors le contenu du r<>pertoire sera r<>cursivement copi<70> dans <i>targetDir</i>. Les fichiers existants ne seront pas <20>cras<61>s <20> moins que l'option <b>-force</b> soit sp<73>cifi<66>e. Essayer d'<27>craser un r<>pertoire non-vide, <20>craser un r<>pertoire avec un fichier, ou un fichier avec un r<>pertoire donnera des erreurs m<>me si <i>-force</i> a <20>t<EFBFBD> sp<73>cifi<66>. Les arguments sont trait<69>s dans l'ordre sp<73>cifi<66>, s'arr<72>tant <20> la premi<6D>re erreur, si elle existe. Un <b>--</b> marque la fin des commutateurs; l'argument suivant le <b>--</b> sera trait<69> comme un <i>source</i> m<>me s'il commence avec un <b>-</b>.
</DD>
<DT><br><b>file delete </b>?<b>-force</b>? ?<b>--</b>? <i>pathname</i> ?<i>pathname</i> ... ?
</DT><DD>Efface le fichier ou r<>pertoire sp<73>cifi<66> par chaque argument<i> pathname</i>. Les r<>pertoires non-vide seront enlev<65>s seulement si l'option <b>-force</b> est sp<73>cifi<66>e. Essayer d'effacer un fichier non-existant n'est pas consider<65> comme une erreur. Essayer d'effacer un fichier lecture-seule provoquera l'effacement du fichier, m<>me si le <b>-force</b> flags n'est pas sp<73>cifi<66>. Les arguments sont trait<69> dans l'ordre sp<73>cifi<66>, s'arr<72>tant <20> la premi<6D>re erreur, si elle existe. Un <b>--</b> marque la fin des commutateurs; l'argument suivant le <b>--</b> sera trait<69> comme un <i>pathname</i> m<>me s'il commence avec un <b>-</b>.
</DD>
<DT><b><br>file dirname </b><i>name</i></DT><DD>Renvoie un nom comportant tout les composants de chemin de <i>name</i> excluant le dernier <20>l<EFBFBD>ment. Si <i>name</i> est un nom de fichier relatif et contient seulement un <20>l<EFBFBD>ment de chemin, alors retourne &quot;<b>.</b>&quot; (ou &quot;<b>:</b>&quot; sur le Macintosh). Si <i>name</i> se ref<65>re <20> un r<>pertoire racine, alors le r<>pertoire racine est renvoy<6F>. Par exemple,
<b>file dirname c:/</b>
retourne <b>c:/</b>.
Notez que la substitution tilde sera effectu<74>e seulement si c'est n<>cessaire pour que la commande aboutisse. Par exemple,
<b>file dirname ~/src/foo.c</b>
retourne <b>~/src</b>, alors que
<b>file dirname ~</b>
retourne <b>/home</b> (ou quelque chose de similaire).
</DD>
<DT><br><b>file ex<65>cutable </b><i>name</i></DT><DD>Renvoie <b>1</b> si le fichier <i>name</i> est ex<65>cutable par l'utilisateur courant, <b>0</b> autrement.
</DD>
<DT><br><b>file exists </b><i>name</i></DT><DD>Renvoie <b>1</b> si fichier <i>name</i> existe et que l'utilisateur courant a les privileges de recherche pour les r<>pertoires y menant, <b>0</b> autrement.
</DD>
<DT><br><b>file extension </b><i>name</i></DT><DD>Renvoie tous caract<63>res de <i>name</i> apr<70>s et incluant le dernier point dans le dernier <20>l<EFBFBD>ment de <i>name</i>. S'il n'y a pas point dans le dernier <20>l<EFBFBD>ment de <i>name</i> alors retourne la cha<68>ne vide.
</DD>
<DT><br><b>file isdirectory </b><i>name</i></DT><DD>Renvoie <b>1</b> si le fichier <i>name</i> est un r<>pertoire, <b>0</b> autrement.
<br></DD>
<DT><b>file isfile </b><i>name</i></DT><DD>Renvoie <b>1</b> si le fichier <i>name</i> est un fichier ordinaire, <b>0</b> autrement.
</DD>
<DT><br><b>file join </b><i>name</i> ?<i>name ...</i>?</DT><DD>Prend un ou plusieurs noms de fichiers et les combine, en utilisant le s<>parateur de chemin correct pour la plateforme courante. Si un <i>name</i> particulier est relatif, alors il sera joint au pr<70>cedent argument nom de fichier. Autrement, tout argument prec<65>dent sera <20>cart<72>, et la jointiure commencera <20> l'argument courant. Par exemple,
<b>file join a b /foo bar</b>
retourne <b>/foo/bar</b>.
Notez que n'importe quel des noms peut contenir des s<>parateurs, et que le r<>sultat est toujours canonique pour la plateforme courante : <b>/</b> pour Unix et Windows, et <b>:</b> pour Macintosh.
</DD>
<DT><br><b>file lstat </b><i>name varName</i></DT><DD>Identique <20> l'option <b>stat</b> (voir ci-dessous) except<70> qu'elle utilise l' appel kernel <i>lstat</i> au lieu de <i>stat</i>. Ceci signifie que si <i>name</i> se ref<65>re <20> un lien symbolique l'information renvoy<6F>e dans <i>varName</i> concerne le lien plut<75>t que le fichier auquel il se ref<65>re. Sur les syst<73>mes qui ne supportent pas les lien symboliques cette option se comporte exactement comme l'option<b> stat</b>.
</DD>
<DT><br><b>file mkdir </b><i>dir</i> ?<i>dir</i> ...?</DT><DD><b>file mkdir </b><i>dir</i> ?<i>dir</i> ...?</DD>
<DT><b>file mkdir </b><i>dir</i> ?<i>dir</i> ...?</DT><DD></DD>
<DT><b>file mtime </b><i>name</i> ?<i>time</i>?</DT><DD>Renvoie une cha<68>ne d<>cimale donnant le temps auquel fichier <i>name</i> a <20>t<EFBFBD> modifi<66> pour la derni<6E>re fois. Si <i>time</i> est sp<73>cifi<66>, c'est une pour fixer le temps pour le fichier (<28>quivalent <20> <b>touch</b> sous Unix). Le temps est mesur<75> de la fa<66>on standard POSIX en tant que secondes depuis une date fixe (souvent 1 Janvier 1970). Si le fichier n'existe pas ou la date de modification ne peut <20>tre trouv<75>e ou r<>gl<67>e, une erreur est g<>n<EFBFBD>r<EFBFBD>e.
</DD>
<DT><br><b>file nativename </b><i>name</i></DT><DD>Renvoie le nom du fichier sp<73>cique <20> la plate-forme. Ceci est utile si le nom de fichier est n<>cessaire <20> transmettre <20> un appel sp<73>cique <20> la plate-forme, tel que exec sous Windows ou AppleScript sur Macintosh.
<b>file owned </b><i>name</i>
Renvoie <b>1</b> si fichier <i>name</i> appartient <20> l'utilisateur courant, <b>0</b> autrement.
</DD>
<DT><br><b>file pathtype </b><i>name</i><br></DT><DD>Renvoie un de <b>absolute</b>, <b>relative</b>, ou <b>volumerelative</b>. Si <i>name</i> se ref<65>re <20> un fichier sp<73>cifique sur un volume sp<73>cifique , le chemin type sera <b>absolute</b>. Si <i>name</i> se ref<65>re <20> un fichier relatif au r<>pertoire de travail courant, alors le type du chemin sera <b>relative</b>. Si <i>name</i> se ref<65>re <20> un fichier relatif au r<>pertoire de travail courant sur un volume sp<73>cifi<66>, ou <20> un fichier sp<73>cifique sur le volume de travail courant, alors le type fichier est <b>volumerelative</b>.
</DD>
<DT><br><b>file readable </b><i>name</i></DT><DD>Renvoie <b>1</b> si le fichier <i>name</i> est lisible par l'utilisateur courant, <b>0</b> autrement.
</DD>
<DT><b>file readlink </b><i>name</i></DT><DD>Renvoie la valeur du lien symbolique d<>sign<67> par <i>name</i> (ex. le nom du fichier vers lequel il pointe). Si <i>name</i> n'est pas un lien symbolique ou que sa valeur ne peut pas <20>tre lue, alors une erreur est g<>n<EFBFBD>r<EFBFBD>e. Sur les syst<73>mes qui ne supportent pas les liens symboliques cette option est ind<6E>finie.
</DD>
<DT><br><b>file rename</b>?<b>-force</b>? ?<b>--</b>? <i>source</i> <i>target</i>
</DT><DD></DD>
<DT><b>file rename</b>?<b>-force</b>? ?<b>--</b>? <i>source</i> ?<i>source</i> ...? <i>targetDir</i>
</DT><DD>La premi<6D>re forme prend le fichier ou le r<>pertoire sp<73>cifi<66> par le nom de chemin <i>source</i> et le renomme en <i>target</i>, en d<>placant le fichier si le nom de chemin <i>target</i> sp<73>cifie un nom dans un r<>pertoire diff<66>rent. Si <i>target</i> est un r<>pertoire existant, alors la seconde forme est utilis<69>e. La seconde forme d<>place chaque fichier ou r<>pertoire <i>source</i> dans le r<>pertoire <i>targetDir</i>. Les fichiers existants ne seront pas ecras<61>s <20> moins que l'option <b>-force</b> soit sp<73>cifi<66>e. Essayer d'<27>craser un r<>pertoire non-vide, <20>craser un r<>pertoire avec un fichier, ou un fichier avec un r<>pertoire generera des erreurs. Les arguments sont trait<69>s dans l'ordre sp<73>cifi<66>, s'arr<72>tant <20> la premi<6D>re erreur, si elle existe. Un <b>--</b> marque la fin des commutateurs; l'argument suivant le <b>--</b> sera trait<69> comme une <i>source</i> m<>me s'il commence avec un <b>-</b>.
</DD>
<DT><br><b>file rootname </b><i>name</i></DT><DD>Renvoie tous les caract<63>res dans <i>name</i> jusqu'a mais non inclus le dernier caract<63>re &quot;.&quot; dans le dernier composant du nom. Si le dernier composant de <i>name</i> ne contient pas de point, alors retourne <i>name</i>.
</DD>
<DT><br><b>file size </b><i>name</i></DT><DD>Renvoie une cha<68>ne d<>cimale donnant la taille du fichier <i>name</i> en octets. Si le fichier n'existe pas ou si sa taille ne peut pas <20>tre obtenue alors une erreur est g<>n<EFBFBD>r<EFBFBD>e.
</DD>
<DT><br><b>file split </b><i>name</i></DT><DD>Renvoie une liste dont les <20>l<EFBFBD>ments sont les composants de chemin in <i>name</i>. Le premier <20>l<EFBFBD>ment de la liste aura le m<>me type chemin que <i>name</i>. Tous les autres <20>l<EFBFBD>ments seront relatifs. Les s<>parateurs de chemin seront <20>cart<72>s <20> moins que ils soit n<>cessaires pour s'assurer qu'un <20>l<EFBFBD>ment est relatif sans ambiguit<69>. Par exemple, sous Unix
<b>file split /foo/~bar/baz</b>
retourne <b>/ foo ./~bar baz</b> pour s'assurer que les commandes suivantes qui utiliseront le troisi<73>me composant ne tentent pas d'effectuer une substitution de tilde.
</DD>
<DT><br><b>file stat </b><i>name varName</i></DT><DD>D<EFBFBD>clenche l'appel kernel <b>stat</b> sur <i>name</i>, et utilise la variable d<>sign<67>e par <i>varName</i> pour recevoir information renvoy<6F>e par l'appel kernel. <i>VarName</i> est trait<69> comme une variable tableau, et les <20>l<EFBFBD>ments suivants de cette variable sont fixes: <b>atime</b>, <b>ctime</b>, <b>dev</b>, <b>gid</b>, <b>ino</b>, <b>mode</b>, <b>mtime</b>, <b>nlink</b>, <b>size</b>, <b>type</b>, <b>uid</b>. Chaque <20>l<EFBFBD>ment except<70> <b>type</b> est une cha<68>ne d<>cimale avec la valeur du champ correspondant de la <b>stat</b> structure de retour; voyez la page de manuel de <b>stat</b> pour des d<>tails sur le sens des valeurs. L'<27>l<EFBFBD>ment <b>type</b> donne le type du fichier sous la m<>me forme que celle renvoy<6F>e par la commande <b>file type</b>. Cette commande retourne une cha<68>ne vide.
</DD>
<DT><br><b>file tail </b><i>name</i></DT><DD>Renvoie tous les caract<63>res dans <i>name</i> apr<70>s le dernier s<>parateur de r<>pertoire. Si <i>name</i> ne contient pas de s<>parateurs alors retourne <i>name</i>.
</DD>
<DT><br><b>file type </b><i>name</i></DT><DD>Renvoie une cha<68>ne donnant le type de fichier <i>name</i>, qui sera l'un de <b>file</b>, <b>directory</b>, <b>characterSpecial</b>, <b>blockSpecial</b>, <b>fifo</b>, <b>link</b>, ou <A HREF="162.htm"><b>socket</b></A>.
</DD>
<DT><br><b>file volume</b><br></DT><DD>Renvoie le chemin absolu des volumes <i>mont<EFBFBD>s</i> sur le syst<73>me, comme liste Tcl correcte. Sur Macintosh, ce sera une liste des lecteurs <i>mont<EFBFBD>s</i>, locaux ou r<>seaux. N.B. si deux lecteurs ont le m<>me nom, ils apparairont tous deux sur la liste de volumes, mais il n'y a pas de fa<66>on, avec Tcl, d'acceder <20> un autre que le premier de ces lecteurs. Sous UNIX, la commande retournera toujours &quot;/&quot;, car tous les syst<73>mes de fichier sont <i>mont<EFBFBD>s</i> localement. Sous Windows, elle renverra une liste des lecteurs locaux disponibles (ex. &#123;a:/ c:/}).
</DD>
<DT><br><b>file writable </b><i>name</i></DT><DD>Renvoie <b>1</b> si le fichier <i>name</i> est inscriptible par l'utilisateur courant , <b>0</b> autrement.
</DD>
</DL>
</div><br>
<div><b>PROBLEMES DE PORTABILITE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>Unix</b> <br>
Cette commande op<6F>re toujours en utilisant les identificateurs r<>els d'utilisateur et de groupe, et non les identificateurs effectifs.
</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51 px;"><A HREF="113.htm">filename</A> </div><br>
<div>Derni<EFBFBD>re r<>vision: 8.3</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="110.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="112.htm"><b>Suivant</b></A>
</div>
</BODY></HTML>

33
hlp/fr/tcl/fileevent.htm Normal file
View File

@@ -0,0 +1,33 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>fileevent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">fileevent - Ex<45>cute un script quand un canal devient lisible ou inscriptible
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>fileevent </b><i>channelId </i><b>readable </b>?<i>script</i>? <br>
<b>fileevent </b><i>channelId </i><b>writable </b>?<i>script</i>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande est utilis<69>e pour cr<63>er des <i>file event handlers</i> Un gestionnaire d'<27>v<EFBFBD>nement de fichier est une liaison entre un canal et un script, Ainsi le script est <20>valu<6C> chaque fois que le canal devient lisible ou inscriptible. Les gestionnaires d'<27>v<EFBFBD>nement de fichier sont plus couramment utilis<69>s pour autoriser les donn<6E>es <20> <20>tre re<72>ues d'un autre processus sur une base pilot<6F>e par <20>v<EFBFBD>nement, permettant au r<>cepteur de continuer <20> interagir avec l'utilisateur en attendant que les donn<6E>es arrivent. Si une application appelle <A HREF="118.htm"><b>gets</b></A> ou <A HREF="151.htm"><b>read</b></A> sur un canal bloquant quand il n'y a pas de donn<6E>es entrantes disponibles, le processus bloquera; jusqu'a ce que les donn<6E>es entrantes arrivent, il ne sera pas capable de prendre en charge d'autres <20>v<EFBFBD>nements, donc il apparaitra <20> l'utilisateur &quot;gel<EFBFBD>&quot; Avec <b>fileevent</b>, le processus peut savoir quand les donn<6E>es sont pr<70>sentes et appeller seulement <A HREF="118.htm"><b>gets</b></A> ou <A HREF="151.htm"><b>read</b></A> quand elles ne bloqueront pas. </div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">L'argument <i>channelId</i> <20> <b>fileevent</b> se ref<65>re <20> un canal ouvert, tel que la valeur de retour d'une pr<70>c<EFBFBD>dente commande <A HREF="142.htm"><b>open</b></A> ou <A HREF="162.htm"><b>socket</b></A>. Si l'argument <i>script</i> est sp<73>cifi<66>, alors <b>fileevent</b> cr<63>e un nouveau gestionnaire d'<27>v<EFBFBD>nement <i>script</i> qui sera <20>valu<6C> chaque fois que le canal devient lisible ou inscriptible (d<>pendant du second argument de <b>fileevent</b>). Dans ce cas <b>fileevent</b> retourne une cha<68>ne vide. Les gestionnaires d'<27>v<EFBFBD>nements <b>readable</b> et <b>writable</b> sont ind<6E>pendants, et peuvent <20>tre cr<63><72>s et effac<61>s s<>par<61>ment. N<>anmoins, il peut y avoir au plus un gestionnaire <b>readable</b> et <b>writable</b> pour un fichier <20>
un instant donn<6E> dans un interpr<70>teur donn<6E>. Si <b>fileevent</b> est appel<65> quand le gestionnaire sp<73>cifi<66> existe d<>j<EFBFBD> dans l'interpr<70>teur d'appel, le nouveau script remplace l'ancien. </div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Si l'argument <i>script</i> n'est pas sp<73>cifi<66>, <b>fileevent</b> retourne le script courant de <i>channelId</i>, ou une cha<68>ne vide s'il n'y en a aucun. Si l'argument <i>script</i> est sp<73>cifi<66> comme cha<68>ne vide alors le gestionnaire d'<27>v<EFBFBD>nement est effac<61>, ainsi aucun script ne sera appel<65>. Un gestionnaire d'<27>v<EFBFBD>nement de fichier est aussi effac<61> automatiquement chaque fois que son canal est ferm<72> ou son interpr<70>teur effac<61>. </div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Un canal est consider<65> lisible si il y a des donn<6E>es non lues disponibles sur le p<>riph<70>rique sous-jacent. Un canal est aussi consider<65> lisible si il y a des donn<6E>es non lues dans un tampon d'entr<74>e, except<70> dans le cas sp<73>cial o<> la plus r<>cente tentative de lire <20> partir du canal comme un appel <20> <A HREF="118.htm"><b>gets</b></A> qui n'a pas pu trouver une ligne compl<70>te dans le tampon d'entr<74>e. Cette fonctionnalit<69> permet <20> un fichier d'<27>tre lu une ligne <20> la fois en mode non bloquant en utilisant les <20>v<EFBFBD>nements. Un canal est aussi consider<65> lisible si une fin de fichier ou une condition d'erreur est pr<70>sente sur le fichier ou le p<>riph<70>rique sous-jacent. Il est important pour le <i>script</i> de v<>rifier ces conditions et de les g<>rer opportun<75>ment par exemple, s'il n'y a pas de verification sp<73>ciale pour la fin du fichier, une boucle infinie peut se produire si le <i>script</i> ne lit pas de donn<6E>es, retourne, et est imm<6D>diatement appel<65> de nouveau. </div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Un canal est consider<65> inscriptible si au moins un octet de donn<6E>es peut <20>tre <20>crit sur le fichier ou p<>riph<70>rique sous-jacent sans bloquer, ou si une condition d'erreur est pr<70>sente sur le fichier ou p<>riph<70>rique sous-jacent. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les I/O pilot<6F>es par <20>v<EFBFBD>nements fonctionnent mieux avec les canaux plac<61>s en mode non bloquant avec la commande<A HREF="109.htm"><b> fconfigure</b></A>. En mode bloquant, une commande <A HREF="148.htm"><b>puts</b></A> peut bloquer si vous lui donnez plus de donn<6E>es que le fichier ou p<>riph<70>rique sous-jacent peut accepter, et une commande <A HREF="118.htm"><b>gets</b></A> ou <A HREF="151.htm"><b>read</b></A> bloquera si vous tentez de lire plus de donn<6E>es que pr<70>tes aucun <20>v<EFBFBD>nement ne sera trait<69> pendant que les commandes bloquent. En mode non bloquant <A HREF="148.htm"><b>puts</b></A>, <A HREF="151.htm"><b>read</b></A>, et <A HREF="118.htm"><b>gets</b></A> ne bloquent jamais. Voir la documentation de ces commandes individuelles pour plus d'informations sur comment elles g<>rent les canaux bloquants et non bloquants. </div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Le script pour un <20>v<EFBFBD>nement fichier est ex<65>cut<75> au niveau global (en dehors du contexte de quelconque fonction Tcl) dans l'interpr<70>teur dans lequel la commande <b>fileevent</b> a <20>t<EFBFBD> appel<65>e. Si une erreur se produit pendant l'ex<65>cution du script alors le m<>canisme <A HREF="90.htm"><b>bgerror</b></A> est utilis<69> pour rapporter l'erreur. De plus, le gestionnaire d'<27>v<EFBFBD>nement fichier est effac<61> si jamais il retourne une erreur, c'est fait de mani<6E>re <20> emp<6D>cher les boucles infinies dues aux gestionnaires bogu<67>s
</div><br>
<div><b>CREDITS</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>fileevent</b> est bas<61>e sur la commande <b>addinput</b> cr<63><72>e par Mark Diekhans
</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><A HREF="90.htm">bgerror</A>, <A HREF="109.htm">fconfigure</A>, <A HREF="118.htm">gets</A>, <A HREF="148.htm">puts</A>, <A HREF="151.htm">read</A> </div><br>
<div>Derni<EFBFBD>re r<>vision: 7.5</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="111.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="113.htm"><b>Suivant</b></A>
</div>
</BODY></HTML>

81
hlp/fr/tcl/filename.htm Normal file
View File

@@ -0,0 +1,81 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>filename&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">filename - conventions de nom de fichiers support<72>es par les commandes Tcl
</div><br>
<div><b>INTRODUCTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Toutes les commandes Tcl et les fonctions C qui attendent des noms de fichier comme arguments les attendent sous une parmi trois formes, d<>pendantes de la plateforme courante. Sur chaque plateforme, Tcl supporte les noms de fichier standard de cette plateforme. De plus, sur toutes les plateformes, Tcl supporte une syntaxe Unix-like con<6F>ue pour fournir une mani<6E>re pratique de construire des noms de fichier simples. N<>anmoins, les scripts qui sont con<6F>us pour <20>tre portables ne devront pas pr<70>sumer d'une forme particuli<6C>re pour les noms de fichier. Par contre, les scripts portables doivent utiliser les commandes <b>file split</b> et <A HREF="111.htm"><b>file</b></A> <b>join</b> pour manipuler les noms de fichier (voyez la page de manuel de <A HREF="111.htm"><b>file</b></A> pour plus de d<>tails)
</div><br>
<div><b>TYPES DE CHEMIN </b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les noms de fichier sont group<75>s dans trois types g<>n<EFBFBD>raux bas<61>s sur le point de d<>part du chemin utilis<69> pour d<>signer le fichier: absolu, relatif, et volume-relatif. Les noms absolus sont compl<70>tement qualifi<66>s, donnant un chemin vers le fichier relativement <20> un volume particulier et au r<>pertoire racine sur ce volume. Les noms relatifs sont non-qualifi<66>s, donnant un chemin vers le fichier relativement au r<>pertoire de travail courant. Les noms Volume-relatif sont partiellement qualifi<66>s, soit donnant le chemin relativement au r<>pertoire racine sur le volume courant, ou relativement au r<>pertoire courant du volume sp<73>cifi<66>. La commande <b>file pathtype</b> peut <20>tre utilis<69>e pour determiner le type d'un chemin donn<6E>.
</div><br>
<div><b>SYNTAXE DE CHEMIN </b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les r<>gles des noms natifs dependent de la valeur rapport<72>e dans l'<27>l<EFBFBD>ment du tableau Tcl <b>tcl_platform(platform)</b>: <br>
<DL>
<DT><b>mac</b></DT><DD>Sur les syst<73>mes Apple Macintosh, Tcl supporte deux formes de noms de chemin. Les styles normaux de noms Mac utilisent les deux points comme s<>parateurs de chemin Les chemins peuvent <20>tre relatifs ou absolus, et les noms de fichier peuvent conternir tout caract<63>re autre que les deux points Un caract<63>re deux points en t<>te cause l'interpr<70>tation du reste du chemin comme relatif au r<>pertoire courant. Si un chemin contient deux points qui ne sont pas en t<>te, alors le chemin est interpr<70>t<EFBFBD> comme un chemin absolu Des s<>quences de deux ou plus deux points ailleurs dans le chemin sont utilis<69>es pour construire des chemins relatifs ou <b>::</b> se r<>f<EFBFBD>re au parent du r<>pertoire courant, <b>:::</b> se r<>f<EFBFBD>re au parent du parent, et ainsi de suite.
En suppl<70>ment au noms style Macintosh, Tcl aussi supporte un sous ensemble de noms Unix-like Si un chemin ne contient pas les deux points, alors il est interpr<70>t<EFBFBD> comme un chemin Unix Le slash est utilis<69> comme s<>parateur de chemin Le nom de chemin <b>.</b> se r<>f<EFBFBD>re au r<>pertoire courant, et <b>..</b> se r<>f<EFBFBD>re au parent du r<>pertoire courant N<>anmoins, quelque noms comme <b>/</b> ou <b>/..</b> ne sont pas assign<67>s, et sont interpr<70>t<EFBFBD>s comme noms Macintosh En general, les commandes qui g<>n<EFBFBD>rent les noms de fichier renverront des&nbsp; noms style Macintosh, mais les commandes qui attendent des noms de fichier acceptent aussi bien les noms style Macintosh que Unix.
Les exemples suivants illustrent les formes vari<72>es de noms de chemin:
<DL>
<DT><br><b>:</b></DT><DD>Chemin relatif au dossier courant.</DD>
<DT><br><b>MyFile</b></DT><DD>Chemin relatif <20> un nom de chemin <b>MyFile</b> dans le dossier courant.
</DD>
<DT><br><b>MyDisk:MyFile</b></DT><DD>Chemin absolu <20> un fichier nomm<6D> <b>MyFile</b> sur le p<>riph<70>rique nomm<6D> <b>MyDisk</b>.
</DD>
<DT><br><b>:MyDir:MyFile</b></DT><DD>Chemin relatif <20> un fichier nomm<6D> <b>MyFile</b> dans un dossier nomm<6D> <b>MyDir</b> dans le dossier courant.
</DD>
<DT><br><b>::MyFile</b></DT><DD>Chemin relatif <20> un fichier nomm<6D> <b>MyFile</b> dans le dossier parent du dossier courant.
</DD>
<DT><br><b>:::MyFile</b></DT><DD>Chemin relatif <20> un fichier nomm<6D> <b>MyFile</b> dans le dossier deux niveaux au dessus du dossier courant.
</DD>
<DT><br><b>/MyDisk/MyFile</b></DT><DD>Chemin absolu <20> un fichier nomm<6D> <b>MyFile</b> sur le p<>riph<70>rique nomm<6D> <b>MyDisk</b>.
</DD>
<DT><br><b>../MyFile</b></DT><DD>Chemin relatif <20> un fichier nomm<6D> <b>MyFile</b> dans le dossier parent du dossier courant.
</DD>
</DL>
</DD>
<DT><b>unix</b></DT><DD>Sur les plateformes Unix, Tcl utilise des noms de chemin o<> les composants sont s<>par<61>s par des slashes. Les noms de chemin peuvent <20>tre relatifs ou absolus, et les noms de fichier peuvent contenir tout caract<63>re autre que le slash Les noms de fichier <b>.</b> et <b>..</b> sont sp<73>ciaux et se ref<65>rent&nbsp; au r<>pertoire courant et au parent du r<>pertoire courant respectivement Plusieurs caract<63>res slashes adjacents sont interpr<70>t<EFBFBD> comme un seul s<>parateur. Les exemples suivants illustrent les formes vari<72>es de noms de chemin:
<DL>
<DT><br><b>/</b></DT><DD>Chemin absolu au r<>pertoire racine. </DD>
<DT><br><b>/etc/passwd</b></DT><DD>Chemin absolu vers le fichier nomm<6D> <b>passwd</b> dans le r<>pertoire <b>etc</b> du r<>pertoire racine.
</DD>
<DT><br><b>.</b></DT><DD>Chemin relatif au r<>pertoire courant. </DD>
<DT><br><b>foo</b></DT><DD>Chemin relatif au fichier <b>foo</b> dans le r<>pertoire courant.
</DD>
<DT><br><b>foo/bar</b></DT><DD>Chemin relatif au fichier <b>bar</b> dans le r<>pertoire <b>foo</b> du r<>pertoire courant.
</DD>
<DT><br><b>../foo</b></DT><DD>Chemin relatif au fichier <b>foo</b> dans le r<>pertoire parent du r<>pertoire courant.
</DD>
</DL>
</DD>
<DT><b>windows</b></DT><DD><br>Sur les plateformes Microsoft Windows, Tcl supporte les noms relatifs au lecteur et UNC L'ensemble <b>/</b> et <b>&#92;</b> peut <20>tre employ<6F> comme s<>parateurs de r<>pertoires dans les deux types de nom. Les noms relatifs au lecteur consistent en un sp<73>cificateur optionnel de lecteur suivi par un chemin absolu ou relatif Les chemins UNC ont la forme generale <b>&#92;&#92;servername&#92;sharename&#92;path&#92;</b><A HREF="111.htm"><b>file</b></A> Sous les deux formes, les noms de fichier <b>.</b> et <b>..</b> sont sp<73>ciaux et se ref<65>rent respectivement au r<>pertoire courant et au parent du r<>pertoire courant. Les exemples suivants illustrent les formes vari<72>es de noms de chemin:
<DL>
<DT><br><b>&#92;&#92;Host&#92;share/file</b></DT><DD>chemin UNC absolu vers un fichier appel<65> <A HREF="111.htm"><b>file</b></A> dans le r<>pertoire racine du partage <b>share</b> sur la machine <b>Host</b>.</DD>
<DT><br><b>c:foo</b>
</DT><DD>Chemin relatif au volume vers un fichier <b>foo</b> dans le r<>pertoire courant du lecteur <b>c</b>.
</DD>
<DT><br><b>c:/foo</b></DT><DD>Chemin absolu vers un fichier <b>foo</b> dans le r<>pertoire racine du lecteur <b>c</b>.
</DD>
<DT><br><b>foo&#92;bar</b></DT><DD>Chemin relatif vers un fichier <b>bar</b> dans le r<>pertoire <b>foo</b> dans le r<>pertoire courant sur le volume courant .
</DD>
<DT><br><b>&#92;foo</b><br></DT><DD>Chemin relatif au volume vers un fichier <b>foo</b> dans le r<>pertoire racine du volume courant .</DD>
</DL>
</DD>
</DL>
</div>
<br>
<div><b>SUBSTITUTION DE TILDE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">En plus des r<>gles de nom de chemin d<>crites plus haut, Tcl supporte aussi la substitution de tilde <i>csh</i>-style Si un nom de chemin commence avec un tilde, alors le nom de chemin sera interpr<70>t<EFBFBD> comme si le premier <20>l<EFBFBD>ment etait remplac<61> par l'emplacement du r<>pertoire home d'un utilisateur donn<6E>. Si le tilde est suivi imm<6D>diatement par un s<>parateur, alors la variable d'environnement <b>&#36;HOME</b> est substitu<74>e. Sinon les caract<63>res entre le tilde et le s<>parateur suivant sont pris pour un nom d'utilisateur, qui est utilis<69> pour r<>cup<75>rer le r<>pertoire home de l'utilisateur pour substitution. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les plateformes Macintosh et Windows ne supportent pas la substitution tilde quand un nom d'utilisateur suit le tilde. Sur ces plateformes, tenter d'utiliser un tilde suivi d'un nom d'utilisateur g<>n<EFBFBD>rera une erreur. Les noms de fichiers qui ont un tilde sans nom d'utilisateur seront substitu<74>s en utilisant la variable d'environnement<b> &#36;HOME</b>, comme sous Unix
</div><br>
<div><b>PROBLEMES DE PORTABILITE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Tous les syst<73>me de fichiers ne sont pas sensibles <20> la casse, donc les scripts eviteront l'emploi d'un code d<>pendant de la casse dans un nom de chemin. De plus, les jeux de caract<63>res autoris<69>s sur des p<>riph<70>riques diff<66>rents peuvent diff<66>rer, donc on choisira des noms de fichiers qui ne contiennent pas de caract<63>res sp<73>ciaux comme: <b>&lt;&gt;:&quot;/&#92;|</b> La meilleure approche est d'utiliser des noms consistant de caract<63>res alphanumeriques seulement. Windows 3.1 <20>galement ne supporte que les noms de fichier de 8 caract<63>res et une extension de 3 caract<63>res </div><br>
<div>Derni<EFBFBD>re r<>vision: 7.5</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="112.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="114.htm"><b>Suivant</b></A>
</div>
</BODY></HTML>

22
hlp/fr/tcl/flush.htm Normal file
View File

@@ -0,0 +1,22 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>flush&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">flush <20> Vide le tampon de sortie d'un canal
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>flush </b><i>channelId</i>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Vide toute sortie mise en tampon de <i>channelId</i>. <i>ChannelId</i> doit <20>tre un identificateur de canal tel que celui renvoy<6F> par unecommande pr<70>c<EFBFBD>dent <A HREF="142.htm"><b>open</b></A> ou <A HREF="162.htm"><b>socket</b></A>, et il doit avoir <20>t<EFBFBD> ouvert en <20>criture. Si le canal est en mode bloquant la commande ne retourne pas jusqu'a ce que tout le tampon de sortie ait <20>t<EFBFBD> vid<69> dans le canal. Si le canal est en mode non bloquant, la commande peut retourner avant que tout le tampon de sortie ait <20>t<EFBFBD> vid<69>; le restant sera vid<69> en arri<72>re-plan aussi vite que le fichier ou p<>riph<70>rique sous-jacent sera capable de l'absorber <br>
</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><A HREF="142.htm">open</A>(n), <A HREF="162.htm">socket</A>(n) </div><br>
<div>Derni<EFBFBD>re r<>vision: 7.5</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="113.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="115.htm"><b>Suivant</b></A>
</div>
</BODY></HTML>

22
hlp/fr/tcl/for.htm Normal file
View File

@@ -0,0 +1,22 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>for&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">for - boucle &quot;For&quot;
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>for </b><i>start test next body</i>
</div> <br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>For</b> est une commande de boucle, semblable de structure <20> l'instruction C <b>for</b> Les arguments <i>start</i>, <i>next</i>, et <i>body</i> doivent <20>tre des cha<68>nes de commande Tcl, et <i>test</i> est une expression cha<68>ne. La commande <b>for</b> appelle d'abord l'interpr<70>teur Tcl pour ex<65>cuter <i>start</i>. Ensuite elle <20>value r<>p<EFBFBD>titivement <i>test</i> comme expression; si le r<>sultat est diff<66>rent de z<>ro elle appelle l'interpr<70>teur Tcl sur <i>body</i>, ensuite appelle l'interpr<70>teur Tcl sur <i>next</i>, enfin r<>p<EFBFBD>te la boucle. La commande se termine quand <i>test</i> est <20>valu<6C> <20> 0 Si une commande <A HREF="99.htm"><b>continue</b></A> est appel<65>e dans <i>body</i> alors toutes les commandes restantes dans l'ex<65>cution courante de <i>body</i> sont omises; le traitement se poursuit en appelant l'interpr<70>teur Tcl sur <i>next</i>, puis <20>valualuation de <i>test</i>, et ainsi de suite. Si une commande <A HREF="92.htm"><b>break</b></A> est appel<65>e dans <i>body</i> ou <i>next</i>, alors la commande <b>for</b> retourne imm<6D>diatement. L'op<6F>ration de <A HREF="92.htm"><b>break</b></A> et <A HREF="99.htm"><b>continue</b></A> est semblable aux instructions C correspondantes. <b>For</b> retourne une cha<68>ne vide. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Note: <i>test</i> sera presque toujours entour<75>e d'accolades. Sinon, la substitution de variable sera faite avant que la commande <b>for</b> d<>bute l'ex<65>cution, ce qui signifie que les modifications de la variable par le corps de la boucle ne seront pas prises en compte dans l'expression. Ceci r<>sulterait en une boucle infinie. Si <i>test</i> est entour<75>e d'accolades, la substitution de variable est retard<72>e jusqu'a ce que l'expression soit <20>valu<6C>e (avant chaque it<69>ration de la boucle), donc les modifications de la variables seront visibles. Comme exemple, essayez les script suivants avec et sans accolades autour de <b>&#36;x&lt;10</b>: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">for &#123;set x 0} &#123;&#36;x&lt;10} &#123;incr x} &#123;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts &quot;x est &#36;x&quot;<br>
}</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="114.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="116.htm"><b>Suivant</b></A>
</div>
</BODY></HTML>

47
hlp/fr/tcl/foreach.htm Normal file
View File

@@ -0,0 +1,47 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>foreach&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">foreach - It<49>re sur tout les<65>l<EFBFBD>ments d'une ou plusieurs listes
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>foreach </b><i>varname list body</i> <br>
<b>foreach </b><i>varlist1 list1</i> ?<i>varlist2 list2 ...</i>? <i>body</i>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>foreach</b> impl<70>mente une boucle ou la ou les variable(s) de boucle&nbsp; tirent leur valeurs d'une ou de plusieurs listes. Dans le cas le plus simple il y a une variable de boucle, <i>varname</i>, et une liste, <i>list</i>, qui est une liste de valeurs a assigner <20>&nbsp; <i>varname</i>. L'argument <i>body</i> est un script Tcl. Pour chaque <20>l<EFBFBD>ment de&nbsp; <i>list</i> (dans l'ordre du premier au dernier), <b>foreach</b> assigne le contenu de l'<27>l<EFBFBD>ment <20> <i>varname</i> comme si la commande <A HREF="130.htm"><b>lindex</b></A> avait <20>t<EFBFBD> utilis<69>e pour extraire l'<27>l<EFBFBD>ment, ensuite elle appelle l'interpr<70>teur Tcl pour ex<65>cuter <i>body</i>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Dans le cas general il peut y avoir plus d'une liste de valeurs (ex., <i>list1</i> et <i>list2</i>), et chaque liste de valeurs peut <20>tre associ<63>e <20> une liste de variables de boucle (ex., <i>varlist1</i> et <i>varlist2</i>). Durant chaque iteration de la boucle, aux variables de chaque <i>varlist</i> sont assign<67>s les valeurs consecutive de la&nbsp; correspondante <i>list</i>. Les valeurs de chaque <i>list</i> sont utilis<69>es dans l'ordre du premier to dernier, et chaque valeur est utilis<69>e une seule fois. Le nombre total d'it<69>rations est suffisant pour utiliser toutes les valeurs <20> partir de toutes les listes de valeurs. Si une liste de valeurs ne contient pas assez d'<27>l<EFBFBD>ments pour chacune de&nbsp; ses variables de boucle <20> chaque iteration, des valeurs vides sont utilis<69>es pour les <20>l<EFBFBD>ments manquants. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les instructions <A HREF="92.htm"><b>break</b></A> et <A HREF="99.htm"><b>continue</b></A> peuvent <20>tre appel<65>es dans <i>body</i>, avec le m<>me effet que dans la commande<A HREF="115.htm"><b> for</b></A>. <b>Foreach</b> retourne une cha<68>ne vide.
</div><br>
<div><b>EXEMPLES</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La boucle suivante utilise i et j comme variables de boucle pour it<69>rer sur des paires d'<27>l<EFBFBD>ments d'une simple liste. </div><br>
<div ALIGN="LEFT" style="margin-left: 102px;">set x &#123;}<br>
foreach &#123;i j} &#123;a b c d e f} &#123;<br>
&nbsp;&nbsp;&nbsp; lappend x &#36;j &#36;i<br>
}<br>
# La valeur de x est &quot;b a d c f e&quot;<br>
# Il y a 3 iterations de boucle.
</div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La boucle suivante utilise i et j pour it<69>rer sur deux listes en parall<6C>le. </div><br>
<div ALIGN="LEFT" style="margin-left: 102px;">set x &#123;}<br>
foreach i &#123;a b c} j &#123;d e f g} &#123;<br>
lappend x &#36;i &#36;j<br>
}<br>
# La valeur de x est &quot;a d b e c f &#123;} g&quot;<br>
# Il y a 4 iterations de boucle.<br>
</div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les deux formes sont combin<69>es dans le suivant exemple.</div><br>
<div ALIGN="LEFT" style="margin-left: 102px;">set x &#123;}<br>
foreach i &#123;a b c} &#123;j k} &#123;d e f g} &#123;<br>
lappend x &#36;i &#36;j &#36;k<br>
}<br>
# La valeur de x est &quot;a d e b f g c &#123;} &#123;}&quot;<br>
# Il y a 3 iterations de boucle.
</div><br>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="115.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="117.htm"><b>Suivant</b></A>
</div>
</BODY></HTML>

68
hlp/fr/tcl/format.htm Normal file
View File

@@ -0,0 +1,68 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>format&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">format - Formate une cha<68>ne dans le style de sprintf
</div> <br>
<div><b>SYNTAXE</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>format </b><i>formatString </i>?<i>arg arg ...</i>?
</div> <br>
<div><b>INTRODUCTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande g<>n<EFBFBD>re une cha<68>ne format<61>e de la m<>me fa<66>on que la fonction C ANSI <b>sprintf</b> (elle utilise <b>sprintf</b> dans son impl<70>mentation). <i>FormatString</i> indique comment formater le r<>sultat, en utilisant des sp<73>cificateurs de conversion <b>%</b> comme in <b>sprintf</b>, et les arguments suppl<70>mentaires, s'ils existent, fournissent les valeurs <20> substituer dans le r<>sultat. La valeur de retour de <b>format</b> est la cha<68>ne format<61>e <br>
</div> <br>
<div><b>DETAILS SUR LE FORMATAGE</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande op<6F>re en scannant <i>formatString</i> de gauche <20> droite Chaque caract<63>re de la cha<68>ne format est ajout<75> <20> la cha<68>ne resultante <20> moins que ce soit un signe pourcentage. Si le caract<63>re est un <b>%</b> alors il n'est pas copi<70> dans la cha<68>ne resultante. Par contre, les caract<63>res suivants le caract<63>re <b>%</b> sont trait<69>s comme un sp<73>cificateur de conversion. Le sp<73>cificateur de conversion contr<74>le la conversion des <i>arg</i> suivant en un format particulier et le r<>sultat est ajout<75> <20> la cha<68>ne resultante <20> la place du sp<73>cificateur de conversion. Si il y a plusieurs sp<73>cificateurs de conversion dans la cha<68>ne format, alors chacun d'entre eux contr<74>le la conversion d'un <i>arg</i> suppl<70>mentaire. Les commande <b>format</b> doit avoir assez d'<i>arg</i>s pour satisfaire tous les sp<73>cificateurs de conversion de <i>formatString</i>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Chaque sp<73>cificateur de conversion peut contenir jusqu'a six parties diff<66>rentes: un sp<73>cificateur de position XPG3, un ensemble de flags, une largeur de champ minimum, une pr<70>cision, un modificateur de longueur, et un caract<63>re de conversion. N'importe quel de ces champs peut <20>tre omis except<70> le caract<63>re de conversion. Les champs pr<70>sents doivent apparaitre dans l'ordre donn<6E> plus haut. Le paragraphe ci-dessous d<>crit chacun de ces champs. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si le <b>%</b> est suivi par un nombre d<>cimal et un <b>&#36;</b>, comme dans &quot;<b>%2&#36;d</b>&quot;, alors la valeur <20> convertir n'est pas extraite du suivant argument. Par contre, elle est extraite de l'argument indiqu<71> par les nombre, o<> 1.htm corresponds au premier <i>arg</i>. Si le sp<73>cificateur de conversion exige plusieurs arguments <20> cause de caract<63>res <A HREF="24.htm"><b>*</b></A> dans le sp<73>cificateur alors les arguments successifs sont utilis<69>s, en commen<65>ant par l'argument donn<6E> par le nombre. Ceci suit les conventions XPG3.htm pour les sp<73>cificateurs de position. Si il y a des sp<73>cificateurs de position dans <i>formatString</i> alors tous sp<73>cificateurs doivent <20>tre positionnels. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La seconde partie d'un sp<73>cificateur de conversion peut contenir un des caract<63>res flag suivants, dans n'importe quel ordre:
<DL>
<DT><br><b>-</b></DT><DD>Sp<EFBFBD>cifie que l'argument converti sera justifi<66> <20> gauche dans son champ (les nombres sont normalement justifi<66>s <20> droite avec des espaces en t<>te si besoin).
</DD>
<DT><br><b>+</b></DT><DD>Sp<EFBFBD>cifie qu'un nombre doit toujours <20>tre affich<63> avec un signe, m<>me si positif.
</DD>
<DT><br><i>space</i></DT><DD>Sp<EFBFBD>cifie qu'un espace sera ajout<75> au d<>but du nombre si le premier caract<63>re n'est pas un signe.
</DD>
<DT><br><b>0</b></DT><DD>Sp<EFBFBD>cifie que les nombre seront remplis <20> gauche avec des z<>ros au lieu des espaces.
</DD>
<DT><br><b>#</b></DT><DD>Demande une forme de sortie alternative. Pour les conversions <b>o</b> et <b>O</b> ceci garantit que le premier digit sera toujours <b>0</b>. Pour conversions<b> x</b> ou <b>X</b>, <b>0x</b> ou <b>0X</b> (respectivement) sera ajout<75> au d<>but du r<>sultat <20> moins que ce soit z<>ro. Pour toutes conversions flottantes (<b>e</b>, <b>E</b>, <b>f</b>, <b>g</b>, et <b>G</b>) ceci garantit que le r<>sultat a toujours un point (ou le s<>parateur d<>cimal local ? NDT). Pour les conversions <b>g</b> et <b>G</b> ceci sp<73>cifie que les z<>ros <20> la fin ne seront pas enlev<65>s.
</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">La troisi<73>me partie d'un sp<73>cificateur de conversion est un nombre donnant une largeur de champ minimum pour cette conversion. Il est typiquement utilis<69> pour tracer des colonnes dans les sorties tabulaires. Si l'argument converti contient moins de caract<63>res que la largeur de champ minimum alors il sera rempli pour atteindre la taille de la largeur de champ minimum. Le remplissage se produit normalement en ajoutant des espaces <20> gauche de l'argument converti, mais les flags <b>0</b> et <b>-</b> peuvent <20>tre employ<6F>s pour sp<73>cifier le remplissage avec z<>ros <20> gauche ou avec des espaces <20> droite, respectivement. Si la largeur de champ minimum est sp<73>cifi<66>e comme <b>*</b> plut<75>t qu'un nombre, alors l'argument suivant la commande <b>format</b> d<>termine la largeur de champ minimum; ce doit <20>tre une cha<68>ne num<75>rique. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La quatri<72>me partie d'un sp<73>cificateur de conversion est la pr<70>cision, qui consiste en un point suivi d'un nombre. Le nombre est utilis<69> de plusieurs fa<66>ons pour des conversions diff<66>rentes. Pour les conversions <b>e</b>, <b>E</b>, et <b>f</b> sp<73>cifient le nombre de chiffres qui apparaissent <20> droite du s<>parateur d<>cimal. Pour les conversions <b>g</b> et <b>G</b> il sp<73>cifie le nombre total de chiffres qui apparaissent, incluant ceux des deux cot<6F>s du s<>parateur d<>cimal (n<>anmoins, les z<>ros apr<70>s le s<>parateur d<>cimal seront toujours omis <20> moins que le flag <b>#</b> ait <20>t<EFBFBD> sp<73>cifi<66>). Pour les conversions enti<74>res, il sp<73>cifie une nombre minimum de chiffres <20> afficher (des z<>ros en t<>te seront ajout<75>s si n<>cessaire). Pour les conversions <b>s</b> il sp<73>cifie le nombre maximum de caract<63>res <20> afficher; si la cha<68>ne est plus longue les caract<63>res en excedant seront omis. Si la pr<70>cision est sp<73>cifi<66>e avec <b>*</b> plut<75>t qu'un nombre alors l'argument suivant la commande <b>format</b> d<>termine la pr<70>cision; il doit <20>tre une cha<68>ne num<75>rique. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La cinqui<75>me partie d'un sp<73>cificateur de conversion est un modificateur de longueur, qui doit <20>tre <b>h</b> ou <b>l</b>. Si c'est <b>h</b> il sp<73>cifie que la valeur num<75>rique sera tronqu<71>e en une valeur 16-bit avant conversion. Cette option est rarement utile. Le modificateur <b>l</b> est ignor<6F>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La derni<6E>re chose dans un sp<73>cificateur de conversion est un caract<63>re alphab<61>tique qui d<>termine quelle sorte de conversion effectuer. Les caract<63>re de conversions suivants sont couramment support<72>s:
<DL>
<DT><br><b>d</b></DT><DD>Convertit un entier en cha<68>ne d<>cimale sign<67>e. </DD>
<DT><br><b>u</b></DT><DD>Convertit un entier en cha<68>ne d<>cimale non sign<67>e. </DD>
<DT><br><b>i</b></DT><DD>Convertit un entier en cha<68>ne d<>cimale sign<67>e; l'entier peut soit <20>tre d<>cimal, octal (avec <b>0 </b>en<b> </b>t<EFBFBD>te) ou en hexad<61>cimal (avec <b>0x</b>en t<>te). </DD>
<DT><br><b>o</b></DT><DD>Convertit un entier en cha<68>ne octale non sign<67>e.</DD>
<DT><br><b>x</b> ou <b>X</b></DT><DD>Convertit un entier en cha<68>ne hexad<61>cimale non sign<67>e, en utilisant les chiffres &quot;0123456789abcdef&quot; pour <b>x</b> et &quot;0123456789ABCDEF&quot; pour <b>X</b>).
</DD>
<DT><br><b>c</b></DT><DD>Convertit un entier en le caract<63>re Unicode qu'il repr<70>sente.
</DD>
<DT><br><b>s</b></DT><DD>Pas de conversion; ins<6E>re juste une cha<68>ne. </DD>
<DT><br><b>f</b></DT><DD>Convertit un nombre flottant en cha<68>ne d<>cimale sign<67>e de la forme <i>xx.yyy</i>, o<> le nombre de <i>y</i> est d<>termin<69> par la pr<70>cision (par d<>faut: 6). Si la pr<70>cision est 0 alors aucun s<>parateur d<>cimal n'est affich<63>.
</DD>
<DT><br><b>e</b> ou <b>e</b></DT><DD>Convertit un nombre flottant en notation scientifique de la forme <i>x.yyy</i><b>e&plusmn; </b><i>zz</i>, o<> le nombre de <i>y</i>'s est d<>termin<69> par la pr<70>cision (par d<>faut: 6). Si la pr<70>cision est 0 alors aucun s<>parateur d<>cimal n'est affich<63>. Si la forme <b>E</b> est utilis<69>e alors <b>E</b> est affich<63> au lieu de <b>e</b>.
</DD>
<DT><br><b>g</b> ou <b>G</b></DT><DD>Si l'exposant inf<6E>rieur <20> -4 ou sup<75>rieur <20> ou <20>gal <20> la pr<70>cision, alors convertit nombre flottant comme pour <b>%e</b> ou <b>%E</b>. Autrement convertit comme pour <b>%f</b>. les z<>ros <20> la fin et le s<>parateur d<>cimal sont omis.
</DD>
<DT><br><b>%</b></DT><DD>Pas de conversion; ins<6E>re juste <b>%</b>. </DD>
</DL>
</div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Pour les conversions num<75>riques l'argument converti doit <20>tre un entier ou une cha<68>ne flottante; format convertit l'argument en binaire et alors le convertit en une cha<68>ne en accord avec le sp<73>cificateur de conversion
</div><br>
<div><b>DIFFERENCES AVEC ANSI SPRINTF</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Le comportement de la commande <i>format</i> est le m<>me que le fonction ANSI C <b>sprintf</b> except<70> les diff<66>rences suivantes: </div><br>
<div ALIGN="LEFT" style="margin-left: 80px;">&#91;1]&nbsp;&nbsp;les sp<73>cificateurs <b>%p</b> et <b>%n</b> ne sont pas couramment support<72>s. </div><br>
<div ALIGN="LEFT" style="margin-left: 80px;">&#91;2]&nbsp;&nbsp;Pour les conversions <b>%c</b> l'argument doit <20>tre une cha<68>ne d<>cimale, qui sera alors convertie en la valeur caract<63>re correspondante. </div><br>
<div ALIGN="LEFT" style="margin-left: 80px;">&#91;3]&nbsp;&nbsp;Le modificateur <b>l</b> est ignor<6F>; les valeurs enti<74>res sont toujours converties comme si'il n'y avait pas de modificateur pr<70>sent et les valeurs r<>elles sont toujours converties comme si le modificateur <b>l</b> etait pr<70>sent (ex.le type <b>double</b> est utilis<69> pour la repr<70>sentation interne). Si le modificateur <b>h</b> est sp<73>cifi<66> alors les valeur enti<74>res sont tronqu<71>es en <b>short</b> avant conversion </div><br>
<div>Derni<EFBFBD>re r<>vision: 8.1</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="116.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="118.htm"><b>Suivant</b></A>
</div>
</BODY></HTML>

23
hlp/fr/tcl/gets.htm Normal file
View File

@@ -0,0 +1,23 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>gets&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">gets - Lit une ligne <20> partir d'un canal
</div> <br>
<div><b>SYNTAXE</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>gets </b><i>channelId</i> ?<i>varName</i>?
</div> <br>
<div><b>DESCRIPTION</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande lit la ligne suivante <20> partir <i>channelId</i>, retourne toute la ligne jusqu'a (non inclus) le(s) caract<63>re(s) fin de ligne et <20>carte le(s) caract<63>re(s) fin de ligne. Si <i>varName</i> est omise la ligne est renvoy<6F>e comme r<>sultat de la commande. Si <i>varName</i> est sp<73>cifi<66> alors la ligne est plac<61>e dans la variable sous son nom et la valeur de retour&nbsp; est un compte du nombre de caract<63>res renvoy<6F>s. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si une fin de fichier se produit pendant la recherche d'une fin de ligne, la commande retourne toute entr<74>e disponible jusqu'a la fin du fichier. Si <i>channelId</i> est en mode non bloquant et qu'il n'y a pas une ligne compl<70>te disponible, la commande retourne une cha<68>ne vide et ne consomme plus aucune entr<74>e. Si <i>varName</i> est sp<73>cifi<66> et qu'une cha<68>ne vide est renvoy<6F>e dans <i>varName</i> parce que la fin-de-fichier est atteinte ou <20> cause de donn<6E>es insuffisantes en mode non bloquant, alors le compte retourn<72> est -1. Notez que si <i>varName</i> n'est pas sp<73>cifi<66>e alors les cas de fin-de-fichier et de pas-de-ligne-compl<70>te-disponible peuvent produire les m<>mes r<>sultats que si on avait entr<74> une ligne consistant seulement du caract<63>re fin de ligne. Les commandes <A HREF="102.htm"><b>eof</b></A> et <A HREF="108.htm"><b>fblocked</b></A> peuvent <20>tre utilis<69>es pour distinguer ces trois cas
</div> <br>
<div><b>VOIR EGALEMENT</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;"><A HREF="102.htm">eof</A>(n), <A HREF="108.htm">fblocked</A>(n)&nbsp; </div> <br>
<div>Derni<EFBFBD>re r<>vision: 7.5</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="117.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="119.htm"><b>Suivant</b></A>
</div>
</BODY></HTML>

68
hlp/fr/tcl/glob.htm Normal file
View File

@@ -0,0 +1,68 @@
[portail::entete "Manuel Tcl/Tk" "M.SALVAGNIAC"]
[Doc_Dynamic]
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>glob&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">glob - Retourne des noms de fichiers correspondant <20> des mod<6F>les
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>glob </b>?<i>switches</i>? <i>pattern </i>?<i>pattern ...</i>?
</div> <br>
<div><b>DESCRIPTION</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande effectue le &quot;globbing&quot; d'un nom de chemin d'une fa<66>on semblable au shell csh Elle retourne une liste de fichiers dont les noms correspondent <20> au moins un des arguments<i> pattern</i> (mod<6F>les N.D.T.). </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si les arguments initiaux de <b>glob</b> commencent avec un <b>-</b> alors ils sont trait<69>s comme des commutateurs Les commutateurs suivants sont couramment support<72>s:
<DL>
<DT><br><b>-directory</b> <i>directory</i></DT><DD>Recherche les fichiers qui correspondent au mod<6F>les donn<6E>s commen<65>ant dans le <i>directory</i> donn<6E> Ceci permet la recherche de r<>pertoires dont le nom contient des caract<63>res <i>glob-sensitive</i> sans le besoin de placer ces caract<63>res entre guillemets. Cette option ne peut pas <20>tre utilis<69>e en conjonction avec <b>-path</b>.
</DD>
<DT><br><b>-join</b></DT><DD>Les arguments mod<6F>les restants sont trait<69>s comme un seul mod<6F>le obtenu en joignant les arguments avec des s<>parateurs de r<>pertoire.
</DD>
<DT><br><b>-nocomplain</b></DT><DD>Permet <20> une liste vide d'<27>tre renvoy<6F>e sans erreur; sans ce switch une erreur est g<>n<EFBFBD>r<EFBFBD>e si la liste r<>sultat est vide.
</DD>
<DT><br><b>-path</b> <i>pathPrefix</i></DT><DD>Recherche les fichiers avec le <i>pathPrefix</i> donn<6E> o<> le reste du nom correspond aux mod<6F>les donn<6E>s Ceci permet la recherche de fichiers avec des noms identiques <20> un fichier donn<6E> m<>me quand les noms contient des caract<63>res <i>glob-sensitive</i> Cette option ne peut pas <20>tre utilis<69>e en conjonction avec <b>-directory</b>.
</DD>
<DT><br><b>-types</b> <i>typeList</i></DT><DD>Liste seulement les fichiers ou r<>pertoires qui correspondent <20> <i>typeList</i>, o<> les articles dans la liste ont deux formes La premi<6D>re forme est comme l'option -type de la commande Unix find: <i>b</i> (bloc sp<73>cial fichier), <i>c</i> (caract<63>re sp<73>cial fichier), <i>d</i> (r<>pertoire), <i>f</i> (plain fichier), <i>l</i> (lien symbolique), <i>p</i> (named pipe), ou <i>s</i> (socket), ou de multiple types peuvent <20>tre sp<73>cifi<66>s dans la liste. <b>Glob</b> renverra tous les fichiers qui correspondent <20> au moins un des types donn<6E>s.
La seconde forme sp<73>cifie les types auquels tous les types donn<6E>s doivent correspondre. Ce sont <i>r</i>, <i>w</i>, <i>x</i> comme permissions de fichier, et <i>readonly</i>, <i>hidden</i> comme permission sp<73>ciales Sur Macintosh, MacOS types et creators sont aussi support<72>s, ou tout article de quatre caract<63>res est suppos<6F> <20>tre un type MacOS (ex. <b>TEXT</b>) Les articles qui sont de la forme <i>&#123;macintosh type XXXX}</i> ou <i>&#123;macintosh </i><i>creator XXXX}</i> correspondront aux types ou creators respectivement Les types non reconnus, ou les sp<73>cifications de types/creators MacOS multiples signaleront une erreur.
Les deux formes peuvent <20>tre m<>lang<6E>es, ainsi <b>-types &#123;d f r w}</b> trouvera tous les fichiers ordinaires&nbsp; OU les r<>pertoires qui ont les permissions de lecture ET d'<27>criture. Les formes suivantes sont <20>quivalentes:
<br>&nbsp;&nbsp;<b>glob-type d *</b>
<br>&nbsp;&nbsp;<b>glob */</b>
<br>except<EFBFBD> que le premier cas ne retourne pas le &quot;/&quot;final et est plus ind<6E>pendant de la plateforme.
</DD>
<DT><br><b>--</b></DT><DD>Marque la fin des commutateurs L'argument suivant cela sera trait<69> comme un <i>pattern</i> m<>me s'il commence avec un <b>-</b>.
</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les arguments <i>pattern</i> peuvent contenir n'importe quel des caract<63>res sp<73>ciaux suivants:
<DL>
<DT><br><b>?</b></DT><DD>Correspond <20> n'importe quel caract<63>re.
</DD>
<DT><br><b>*</b></DT><DD>Correspond <20> n'importe quelle s<>quence de z<>ro ou plus caract<63>res.
</DD>
<DT><br><b>&#91;</b><i>chars</i><b>]</b></DT><DD>Correspond <20> n'importe quel caract<63>re de <i>chars</i> Si <i>chars</i> contient une s<>quence de la forme <i>a</i><b>-</b><i>b</i> alors n'importe quel caract<63>re entre <i>a</i> et <i>b</i> (inclus) correspondra.
</DD>
<DT><br><b>&#92;</b><i>x</i></DT><DD>Correspond au caract<63>re <i>x</i>.</DD>
<DT><br><b>&#123;</b><i>a</i><b>,</b><i>b</i><b>,</b><i>...</i>}</DT><DD>Correspond <20> quelconque de la cha<68>nes <i>a</i>, <i>b</i>, etc.</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Comme avec csh, un &quot;.&quot; au d<>but d'un nom de fichier ou juste apr<70>s un &quot;/&quot; doit correspondre explicitement ou avec une construction &#123;}. De plus, tout &quot;/&quot; caract<63>res doit correspondre explicitement.
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si le premier caract<63>re dans un <i>pattern</i> est &quot;~&quot; alors il se r<>f<EFBFBD>re au r<>pertoire home de l'utilisateur dont le nom suit le &quot;~&quot;. Si le &quot;~&quot; est suivi imm<6D>diatement par &quot;/&quot; alors la valeur de la variable d'environnement HOME est utilis<69>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>glob</b> diff<66>re du <i>globbing </i>csh de deux fa<66>ons. D'abord, elle ne trie pas la liste r<>sultat (utilisez la commande <A HREF="138.tml"><b>lsort</b></A> si vous voulez une liste tri<72>e). Deuxi<78>mement, <b>glob</b> retourne seulement les noms des fichiers qui existent;&nbsp; avec csh aucune v<>rification d'existence n'est faite <20> moins qu'un mod<6F>le contienne une construction?, *, ou &#91;]
</div><br>
<div><b>PROBLEMES DE PORTABILITE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Diff<EFBFBD>remment des autres commandes Tcl qui acceptent aussi bien les noms r<>seau et natifs (voyez la page de manuel <A HREF="113.tml"><b>filename</b></A> pour des d<>tails sur comment les noms natifs et r<>seau sont sp<73>cifi<66>s), la commande <b>glob</b> accepte seulement noms natifs.
<DL>
<DT><br><b>Windows</b></DT><DD>Pour les noms Windows UNC, les composants serveur et partage du chemin ne peuvent pas contenir de constructions?, *, ou &#91;] Sous Windows NT, si <i>pattern</i> est de la forme &quot;<b>~</b><i>username</i><b>@</b><i>domain</i>&quot; il se r<>f<EFBFBD>re au r<>pertoire home de l'utilisateur dont l'information de compte r<>side sur le PDC NT sp<73>cifi<66> Autrement, l'information de compte del'utilisateur est obtenue de l 'ordinateur local Sous Windows 95 et 98, <b>glob</b> accepte les mod<6F>les comme &quot;.../&quot; et &quot;..../&quot; pour les r<>pertoires successivement parents.
</DD>
<DT> <br><b>Macintosh</b></DT><DD>En utilisant les options, <b>-dir</b>, <b>-</b><A HREF="127.tml"><b>join</b></A> ou <b>-path</b>, glob suppose que le s<>parateur de r<>pertoire pour le mod<6F>le entier est le standard &quot;:&quot; En n'utilisant pas ces options, glob examine chaque argument mod<6F>le et utilise &quot;/&quot; <20> moins que le mod<6F>le contienne un &quot;:&quot; .</DD>
</DL>
</div><br>
<div>Derni<EFBFBD>re r<>vision: 8.3</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.tml"><b>Index</b></A>&nbsp;&nbsp;<A HREF="118.tml"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="120.tml"><b>Suivant</b></A></div>
</BODY></HTML>
[portail::pied]

20
hlp/fr/tcl/global.htm Normal file
View File

@@ -0,0 +1,20 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>global&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">global <20> Acc<63>s au variables globales
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>global </b><i>varname </i>?<i>varname ...</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande est ignor<6F>e <20> moins qu'une fonction Tcl&nbsp; soit interpr<70>t<EFBFBD>e. Dans ce cas elle d<>clare les <i>varname</i> donn<6E>es comme variables globales plut<75>t que locales. Les variables globales sont des variables accessibles dans le namespace global. Pour la dur<75>e de la fonction courante (et seulement pendant son ex<65>cution), toute r<>f<EFBFBD>rence <20> <i>varname</i>s se ref<65>rera <20> la variable globale du m<>me nom.
</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div><A HREF="141.htm">namespace</A>(n), <A HREF="179.htm">variable</A>(n)&nbsp;&nbsp; </div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="119.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="121.htm"><b>Suivant</b></A></div>
</BODY></HTML>

53
hlp/fr/tcl/history.htm Normal file
View File

@@ -0,0 +1,53 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>history&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">history - Manipule l'historique
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>history </b>?<i>option</i>? ?<i>arg arg ...</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>history</b> effectue une des op<6F>rations relatives aux commandes r<>cemment ex<65>cut<75>es et enregistr<74>es dans un historique Chacune de ces commandes enregistr<74>es est r<>f<EFBFBD>renc<6E>e comme un &quot;<EFBFBD>v<EFBFBD>nement&quot; Quand on specifie un <20>v<EFBFBD>nement <20> la commande<b> history</b>, les formes suivantes peuvent <20>tre employ<6F>es: </div><br>
<div ALIGN="LEFT" style="margin-left: 80px;">&#91;1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Un nombre si positif, se r<>f<EFBFBD>re <20> l'<27>v<EFBFBD>nement (tous les <20>v<EFBFBD>nements sont num<75>rot<6F>s en commen<65>ant <20> 1) Si le nombre est n<>gatif, il d<>signe un <20>v<EFBFBD>nement relatif <20> l'<27>v<EFBFBD>nement courant (<b>-1</b> se r<>f<EFBFBD>re <20> l'<27>v<EFBFBD>nement pr<70>cedent, <b>-2</b> <20> celui avant -1, et ainsi de suite) L'<27>venement <b>0</b> se r<>f<EFBFBD>re <20> l'<27>venement courant. </div><br>
<div ALIGN="LEFT" style="margin-left: 80px;">&#91;2]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Une cha<68>ne: d<>signe l'<27>v<EFBFBD>nement le plus recent qui correspond <20> la cha<68>ne. Un <20>v<EFBFBD>nement est consider<65> correspondre <20> la cha<68>ne soit si la cha<68>ne est la m<>me que le premier caract<63>res de l'<27>v<EFBFBD>nement, ou si la cha<68>ne correspond <20> l'<27>v<EFBFBD>nement dans le sens de la commande<b> string match</b>. </div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>history</b> peut prendre chacune des formes suivantes:
<DL>
<DT><br><b>history</b></DT><DD>Identique <20> <b>history info</b>, d<>crit ci-dessous.
</DD>
<DT><br><b>history add</b><i> command </i>?<b>exec</b>?</DT><DD>Ajoute l'argument <i>command</i> <20> l'historique comme nouvel <20>v<EFBFBD>nement. Si <A HREF="105.htm"><b>exec</b></A> est sp<73>cifi<66> (ou abr<62>g<EFBFBD>) alors la commande est aussi ex<65>cut<75>e et son r<>sultat est renvoy<6F>. Si <A HREF="105.htm"><b>exec</b></A> n'est pas sp<73>cifi<66> alors une cha<68>ne vide est renvoy<6F>e comme r<>sultat.
</DD>
<DT><br><b>history change</b><i> newValue</i> ?<i>event</i>?
</DT><DD>Remplace la valeur enregistr<74>e pour un <20>v<EFBFBD>nement avec <i>newValue</i> <i>Event</i> sp<73>cifie l'<27>v<EFBFBD>nement <20> remplacer, et pointe par d<>faut sur l'<27>v<EFBFBD>nement <i>courant</i> (pas l'<27>v<EFBFBD>nement <b>-1</b>). Cette commande est con<6F>ue pour <20>tre utilis<69>e dans les commandes qui impl<70>mentent les nouvelles formes de substitution d'historique et souhaitent remplacer l'<27>v<EFBFBD>nement courant (qui appelle la substitution) avec la commande cr<63><72>e par la substitution La valeur de retour est une cha<68>ne vide.
</DD>
<DT><br><b>history clear</b>
</DT><DD>Efface l'historique. La limite courante est retenue. Les num<75>ros d'<27>v<EFBFBD>nement d'historique sont r<>initialis<69>s.
</DD>
<DT><br><b>history event</b> ?<i>event</i>?
</DT><DD>Renvoie la valeur de l'<27>v<EFBFBD>nement donn<6E>e par <i>event</i> <i>Event</i> est <20>gal <20> <b><EFBFBD>1 </b>par d<>faut.
</DD>
<DT><br><b>history info </b>?<i>count</i>?
</DT><DD>Renvoie une cha<68>ne format<61>e (et lisible) donnant les num<75>ros et contenus d'<27>v<EFBFBD>nement pour chacun des <20>v<EFBFBD>nements dans l'historique except<70> l'<27>v<EFBFBD>nement courant. Si <i>count</i> est sp<73>cifi<66> alors seulement les <i>count</i> <20>v<EFBFBD>nements les plus recent sont renvoy<6F>s.
</DD>
<DT><br><b>history keep </b>?<i>count</i>?
</DT><DD>Cette commande peut <20>tre employ<6F>e pour changer la taille de l'historique <20> <i>count</i> <20>v<EFBFBD>nements. Initialement, 20 <20>v<EFBFBD>nements sont retenus dans l'historique. Si <i>count</i> n'est pas sp<73>cifi<66>, la limite courante est renvoy<6F>e.
</DD>
<DT><br><b>history nextid</b>
</DT><DD>Renvoie le nombre de l'<27>v<EFBFBD>nement suivant enregistr<74> dans l'historique. Il est utile par exemple pour afficher le num<75>ro d'<27>v<EFBFBD>nement dans une ligne de commande.
</DD>
<DT><br><b>history redo </b>?<i>event</i>?
</DT><DD>Re-ex<65>cute la commande indiqu<71>e par <i>event</i> et retourne son r<>sultat. <i>Event</i> est <20>gal <20> <b><EFBFBD>1 </b>par d<>faut. Cette commande r<>sulte en une r<>vision de l'historique, voir ci-dessous pour les d<>tails.
</DD>
</DL>
</div><br>
<div><b>REVISION DE L'HISTORIQUE </b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Tcl avant la version 8.0 avait un m<>canisme de r<>vision de l'historique complexe. Le m<>canisme courant est plus limit<69>, et les anciennnes op<6F>rations <b>substitute</b> et <b>words</b> ont <20>t<EFBFBD> enlev<65>es. (Comme consolation, l'op<6F>ration <b>clear</b> a <20>t<EFBFBD> ajout<75>e.) </div>
<div ALIGN="LEFT" style="margin-left: 51px;">L'option <b>redo</b> rend plus simple la &quot; r<>vision de l'historique &quot;. Quand cette option est appel<65>e alors l'<27>v<EFBFBD>nement le plus r<>cent est modifi<66> et remplac<61> par le r<>sultat de la commande d'historique. Si vous voulez refaire un <20>v<EFBFBD>nement sans modifier l'historique, alors utilisez l'op<6F>ration <A HREF="277.htm"><b>event</b></A> pour r<>cup<75>rer un <20>v<EFBFBD>nement, et l'op<6F>ration <b>add</b> pour&nbsp; l'ajouter <20> l'historique et l'ex<65>cuter </div>
<br>
<br><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="110.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="112.htm"><b>Suivant</b></A>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="120.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="122.htm"><b>Suivant</b></A></div>
</BODY></HTML>

261
hlp/fr/tcl/http.htm Normal file
View File

@@ -0,0 +1,261 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>Http&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Http - Impl<70>mentation client du protocole HTTP/1.0.
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>package require http ?2.3?</b> <br>
<b>::http::config </b><i>?options?</i> <br>
<b>::http::geturl </b><i>url ?options?</i> <br>
<b>::http::formatQuery </b><i>list</i> <br>
<b>::http::reset </b><i>token</i><br>
<b>::http::wait </b><i>token</i>
<b>::http::status </b><i>token</i><br>
<b>::http::size </b><i>token</i><br>
<b>::http::code </b><i>token</i><br>
<b>::http::ncode </b><i>token</i><br>
<b>::http::data </b><i>token</i><br>
<b>::http::error </b><i>token</i><br>
<b>::http::cleanup </b><i>token</i><br>
<b>::http::register </b><i>proto port command</i> <br>
<b>::http::unregister </b><i>proto</i>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Le paquetage <b>http</b> fournit la partie client du protocole HTTP/1.0. Le paquetage impl<70>mente les op<6F>rations GET, POST, et HEAD de HTTP/1.0. Il permet la configuration d'un
proxy pour traverser les firewalls Le paquetage est compatible avec la politique de s<>curit<69><b> Safesock</b>, donc il peut <20>tre utilis<69> par un applet non v<>rifi<66> pour r<>cup<75>rer des URL <20> partir d'un ensemble restreint d'h<>tes. Ce paquetage peut <20>tre <20>tendu pour supporter d'autres protocoles de transport HTTP, tel que HTTPS, en fournissant une commande<A><b> socket </b></A>utilisateur, via <b>http::register</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La fonction<b> ::http::geturl</b> effectue une transaction HTTP. Ses <i>options&nbsp; </i> determinent si une transaction GET, POST, ou HEAD est effectu<74>e&nbsp; La valeur de retour de <b>::http::geturl</b> est un jeton pour la transaction. La valeur est aussi le nom d'un tableau dans le ::http namespace qui contient information d'<27>tat concernant la transaction Les <20>l<EFBFBD>ments de ce tableau sont d<>crits dans la section TABLEAU D'ETAT. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si l'option <b>-command</b> est sp<73>cifi<66>e, alors l'op<6F>ration HTTP est faite en arri<72>re-plan. <b>::http::geturl</b> retourne imm<6D>diatement apr<70>s la g<>n<EFBFBD>ration&nbsp; de la requ<71>te HTTP et le callback est appel<65> quand la transaction se termine Pour que cela fonctionne, la boucle d'<27>v<EFBFBD>nement Tcl doit <20>tre active Dans les applications Tk c'est toujours vrai Pour les applications purement Tcl, l'appelant peut utiliser <b>::http::wait</b> apr<70>s l'appel de <b>::http::geturl</b> pour lancer la boucle d'<27>v<EFBFBD>nement.
</div> <br>
<div><b>COMMANDES</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">
<DL>
<DT><br><b>::http::config</b> ?<i>options</i>?</DT><DD>La commande<b>::http::config</b> est utilis<69> pour fixer et consulter le nom et le port du serveur proxy, et le nom de l'Agent Utilisateur utilis<69> dans les requ<71>tes HTTP Si aucunes options ne sont sp<73>cifi<66>es, alors la configuration courante est renvoy<6F>e Si un seul argument est sp<73>cifi<66>, alors il doit <20>tre un des flags d<>crits ci-dessous Dans ce cas la valeur courante de ce param<61>tre est renvoy<6F>e Autrement, les options seront un ensemble de flags et de valeurs qui definissent la configuration:
<DL>
<DT><br><b>-accept</b> <i>mimetypes</i>
</DT><DD>L'en-t<>te Accept de la requ<71>te La valeur par d<>faut est */*, ce qui signifie que qui tout types de documents sont accept<70>s Autrement vous pouvez donner une&nbsp; liste s<>par<61>e par des virgules de types mime que vous souhaitez recevoir recevoir Par exemple, &quot;image/gif, image/jpeg, text/*&quot;.
</DD>
<DT><br><b>-proxyhost</b> <i>hostname</i>
</DT><DD>Le nom du proxy, s'il existe. Si cette valeur est la cha<68>ne vide, l'URL est contact<63> directement.
</DD>
<DT><br><b>-proxyport</b> <i>number</i>
</DT><DD>Le num<75>ro de port du proxy.
</DD>
<DT><br><b>-proxyfilter</b> <i>command</i>
</DT><DD>La commande est un callback qui est appel<65> pendant <b>::http::geturl</b> pour determiner si un proxy est requis pour un host donn<6E> Un argument, un nom de machine, est ajout<75> <20> <i>command</i> quand elle est appel<65>e Si un proxy est requis, le callback renverra une liste de deux <20>l<EFBFBD>ment contenant le serveur proxy et le port proxy Autrement le filtre renverra une liste vide Le filtre par d<>faut retourne les valeurs des param<61>tres <b>-proxyhost</b> et <b>-proxyport</b> si ils sont non-vides.
</DD>
<DT><br><b>-useragent</b> <i>string</i>
</DT><DD>La valeur de l'en-t<>te Agent Utilisateur dans la requ<71>te HTTP Par d<>faut <b>&quot;Tcl http client package 2.2.&quot;</b>
</DD>
</DL>
</DD>
<DT><br><b>::http::geturl</b> <i>url</i> ?<i>options</i>?
</DT><DD>La commande<b>::http::geturl</b> est la fonction principale dans le paquetage. L'option <b>-</b> <b>query </b>provoque une op<6F>ration POST et l'option <b>-validate</b> provoque une op<6F>ration HEAD; autrement, une op<6F>ration GET est effectu<74>e La commande<b>::http::geturl</b> retourne une valeur <i>token </i>qui peut <20>tre utilis<69>e pour obtenir l'information concernant la transaction Voir les sections TABLEAU D'ETAT et ERRORS pour les d<>tails La commande<b>::http::geturl</b> bloque jusqu'a ce que l'op<6F>ration se termine, <20> moins que l'option <b>-command</b> sp<73>cifie un callback appel<65> quand la transaction HTTP se termine. <b>::http::geturl</b> accepte plusieurs options:
<DL>
<DT><br><b>-blocksize</b> <i>size</i></DT><DD>La taille de bloc utilis<69>e en lisant l'URL. Au plus <i>size</i> octets sont lus en une fois. Apr<70>s chaque bloc, un appel <20> <b>-progress</b> est fait (si cette option est sp<73>cifi<66>e).
</DD>
<DT><br><b>-channel</b> <i>name</i>
</DT><DD>Copie l'URL contenu dans le canal <i>name</i> au lieu de le sauvegarder dans <b>state(body)</b>.
</DD>
<DT><br><b>-command</b> <i>callback</i>
</DT><DD>Appelle <i>callback</i> apr<70>s la fin de la transaction HTTP. Cette option cause le retour imm<6D>diat de <b>::http::geturl</b>. Le <i>callback</i> recoit un argument suppl<70>mentaire qui est le <i>token </i>renvoy<EFBFBD> par <b>::http::geturl</b>. Ce jeton est le nom d'un tableau qui est d<>crit dans la section TABLEAU D'ETAT.Voici un mod<6F>le pour le callback:
<br>proc httpCallback &#123;token} &#123;
<br>&nbsp;&nbsp;&nbsp; upvar #0 &#36;token state
<br>&nbsp;&nbsp;&nbsp; # Acc<63>de au tableau d'<27>tat Tcl
<br>}
</DD>
<DT><br><b>-handler</b> <i>callback</i>
</DT><DD>Appelle <i>callback</i> chaque fois que des donn<6E>es HTTP sont disponibles; si pr<70>sent, rien d'autre ne sera fait avec les donn<6E>es HTTP. Cette fonction attend deux arguments suppl<70>mentaire: la socket pour les donn<6E>es HTTP et le <i>token </i>renvoy<EFBFBD> par <b>::http::geturl</b>. Le jeton est le nom d'un tableau global qui est d<>crit dans la section TABLEAU D'ETAT. La fonction est cens<6E>e renvoyer le nombre d'octets lus de la socket. Voici un mod<6F>le pour le callback:
<br>proc httpHandlerCallback &#123;socket token } &#123;
<br>&nbsp;&nbsp;&nbsp; upvar #0 &#36;token state
<br>&nbsp;&nbsp;&nbsp; # Acc<63>de la socket, et au tableau d'<27>tat Tcl
<br>&nbsp;&nbsp;&nbsp; ...
(exemple: set data &#91;read &#36;socket 1000];set nbytes &#91;string length &#36;data])<br>&nbsp;&nbsp;&nbsp; ..&nbsp;&nbsp; return nbytes
<br>}
</DD>
<DT><br><b>-headers</b> <i>keyvaluelist</i>
</DT><DD>Cette option est utilis<69>e pour ajouter des en-t<>tes <20> la requ<71>te HTTP. L'argument <i>keyvaluelist</i> doit <20>tre une liste avec le m<>me nombre d'<27>l<EFBFBD>ments alternant entre cl<63>s et valeurs. Les cl<63>s deviennent les en-t<>te des champ noms. Les sauts de lignes sont enlev<65>s des valeurs pour que l'en-t<>te ne puisse <20>tre corrompu. Par exemple, si <i>keyvaluelist</i> est <b>Pragma no-cache</b> alors l'en-t<>te suivant est inclus dans la requ<71>te HTTP: <br>
Pragma: no-cache
</DD>
<DT><br><b>-progress</b> <i>callback</i>
</DT><DD>Le <i>callback</i> est appel<65> apr<70>s chaque transfert de donn<6E>es de l'URL. Le callback attend trois arguments additionels: le <i>token </i>de <b>::http::geturl</b>, la taille totale attendue des meta-donn<6E>es contenues dans <b>Content-Length</b>, et le nombre courant d'octets transf<73>r<EFBFBD>s effectivement. La taille totale attendue peut <20>tre inconnue, auquel cas z<>ro est transmis au callback. Voici un mod<6F>le pour le callback progress:<br>
proc httpProgress &#123;token total current} &#123;<br>
&nbsp;&nbsp;&nbsp; upvar #0 &#36;token state<br>
}
</DD>
<DT><br><b>-query </b><i>query</i>
</DT><DD>Ce flag fait effectuer <20> <b>::http::geturl</b> une requ<71>te POST qui transmet la <i>query</i> au serveur. La <i>query</i> doit <20>tre une demande format<61>e x-url-encoding La fonction<b>::http::formatQuery</b> peut <20>tre utilis<69>e pour le formatage.
</DD>
<DT><br><b>-queryblocksize</b> <i>size</i>
</DT><DD>La taille de bloc utilis<69>e en postant des donn<6E>es query <20> l'URL. Au plus <i>size</i> octets sont <20>crits <20> la fois. Apr<70>s chaque bloc, un appel <20> <b>-queryprogress</b> callback est fait (si cette option est sp<73>cifi<66>e).
</DD>
<DT><br><b>-querychannel</b> <i>channelID</i>
</DT><DD>Ce flag fait effectuer <20> <b>::http::geturl</b> une requ<71>te POST qui passe les donn<6E>es contenues dans <i>channelID</i> au serveur. Les donn<6E>es contenue dans <i>channelID</i> doivent <20>tre une demande format<61>e x-url-encoding <20> moins que l'option <b>-type</b> soit utilis<69>e. Si un en-t<>te Content-Length n'est pas sp<73>cifi<66> via l'option<b> -headers</b>, <b>::http::geturl</b> tente de d<>terminer la taille des donn<6E>es post dans l'ordre de cr<63>ation de l'en-t<>te. Si elle est incapable de determiner la taille, elle retourne une erreur.
</DD>
<DT><br><b>-queryprogress</b> <i>callback</i>
</DT><DD>Le <i>callback</i> est faite apr<70>s chaque transfert de donn<6E>es <20> URL (ex. POST) et agit exactement comme l'option <b>-progress</b> (le format de callback est le m<>me).
</DD>
<DT><br><b>-timeout</b> <i>millisecondes</i>
</DT><DD>Si <i>millisecondes</i> est diff<66>rent de z<>ro, alors <b>::http::geturl</b> programme un timeout apr<70>s le nombre sp<73>cifi<66> de millisecondes. Un timeout provoque un appel de <b>::http::reset</b> et un callback<b> -command</b>, si sp<73>cifi<66>. La valeur de retour de <b>::http::status</b> est <b>timeout</b> apr<70>s un timeout.
</DD>
<DT><br><b>-type</b> <i>mime-type</i></DT><DD>Utilisez <i>mime-type</i> comme la valeur<b> Content-Type</b>, au lieu de de la valeur par d<>faut (<b>application/x-www-form-urlencoded</b>) pendant une op<6F>ration POST.
</DD>
<DT><br><b>-validate</b> <i>boolean</i>
</DT><DD>Si <i>boolean</i> est diff<66>rent de z<>ro, alors <b>::http::geturl</b> does un HTTP HEAD requ<71>te. Cette requ<71>te retourne la meta information concernant l'URL, mais le contenu n'est pas renvoy<6F>. La meta information est disponible dans la variable <b>state(meta)</b> apr<70>s la transaction. Voir la section TABLEAU D'ETAT pour les d<>tails.
</DD>
</DL>
</DD>
<DT><br><b>::http::formatQuery</b> <i>key value</i> ?<i>key value</i> ...?
</DT><DD>Cette fonction op<6F>re un x-url-encodage des donn<6E>es consult<6C>es. Elle attend un m<>me nombre d'arguments qui sont les cl<63>s et valeurs de la requ<71>te. Elle encode les cl<63>s et valeurs, et g<>n<EFBFBD>re une cha<68>ne avec les s<>parateurs corrects (&amp; et =). Le r<>sultat est convenable pour la valeur <b>-query </b>transmise <20> <b>::http::geturl</b>.
</DD>
<DT><b>::http::reset</b> <i>token</i>?<i>why</i>?<br>
</DT><DD>Cette commande r<>initialise la transaction HTTP identifi<66>e par <i>token</i>, si elle existe. Ceci fixe la valeur <b>state(status)</b> <20> <i>why</i>, qui est par d<>faut de <b>reset</b>, et alors appelle le callback declar<61> par <b>-command</b>.
</DD>
<DT><br><b>::http::wait</b> <i>token</i>
</DT><DD>Ceci est une fonction utilitaire qui bloque et attend que la transaction soit compl<70>t<EFBFBD>e. Elle fonctionne seulement avec du code de confiance parcequ'elle utilise <A HREF="180.htm"><b>vwait</b></A>. D'autre part, elle n'est pas utile pour les cas o<> <b>::http::geturl</b> est appel<65>e <i>sans</i> l'option <b>-command</b> parce que dans ce cas l'appel <20><b>::http::geturl</b> ne retourne pas jusqu'a ce que la transaction HTTP soit compl<70>te, et donc qu'il n'y a rien <20> attendre.
</DD>
<DT><br><b>::http::data</b> <i>token</i>
</DT><DD>Ceci est une fonction utilitaire qui retourne l'<27>l<EFBFBD>ment <b>body</b> (ex., l'URL donn<6E>e) du tableau d'<27>tat.
</DD>
<DT><br><b>::http::error</b> <i>token</i></DT><DD>Ceci est une fonction utilitaire qui retourne l'<27>l<EFBFBD>ment<A HREF="103.htm"><b> error</b></A> du tableau d'<27>tat.
</DD>
<DT><br><b>::http::status</b> <i>token</i>
</DT><DD>Ceci est une fonction utilitaire qui retourne l'<27>l<EFBFBD>ment<b> status</b> du tableau d'<27>tat.
</DD>
<DT><br><b>::http::code</b> <i>token</i>
</DT><DD>Ceci est une fonction utilitaire qui retourne l'<27>l<EFBFBD>ment<b> http</b> du tableau d'<27>tat.
</DD>
<DT><br><b>::http::ncode</b> <i>token</i></DT><DD>Ceci est une fonction utilitaire qui retourne juste le code num<75>rique de retour (200, 404, etc.) de l'<27>l<EFBFBD>ment <b>http</b> du tableau d'<27>tat.
</DD>
<DT><br><b>::http::size</b> <i>token</i>
</DT><DD>Ceci est une fonction utilitaire qui retourne l'<27>l<EFBFBD>ment <b>currentsize</b> du tableau d'<27>tat, qui repr<70>sente le nombre d'octets re<72>us de l' URL dans l'appel <20> <b>::http::geturl</b>.
</DD>
<DT><br><b>::http::cleanup</b> <i>token</i>
</DT><DD>Cette fonction nettoye l'<27>tat associ<63> <20> la connection identifi<66>e par <i>token</i> Apr<70>s cet appel, les fonctions comme <b>::http::data</b> ne peuvent pas <20>tre utilis<69>es pour obtenir l'information concernant l'op<6F>ration Il est <i>fortement</i> recommand<6E> que vous appeliez cette fonction apr<70>s avoir fini avec une requ<71>te HTTP Ne pas le faire proquera la non-lib<69>ration de la m<>moire, et si votre appli appelle <b>::http::geturl</b> plusieurs fois, la fuite m<>moire pourrait provoquer un pic de performance...ou bien pire.
</DD>
<DT><br><b>::http::register</b> <i>proto port command</i>
</DT><DD>Cette fonction permet de fournir des types de transport HTTP tel que HTTPS, en enregistrant un pr<70>fixe, le port par d<>faut, et la commande <20> ex<65>cuter pour cr<63>er le <b>channel</b> Tcl. Ex.: <br>
<br>package require http
<br>package require tls
<br>http::register https 443 ::tls::socket
<br>set token &#91;http::geturl https://my.secure.site/]
</DD>
<DT><br><b>::http::unregister</b> <i>proto</i>
</DT><DD>Cette fonction lib<69>re un gestionnaire de protocole pr<70>cedemment declar<61> via <b>http::register</b>
</DD>
</DL>
</div><br>
<div><b>ERREURS</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La fonction <b>http::geturl</b> l<>vera des erreurs dans les cas suivants: options de ligne de commande invalides, URL invalide, une URL sur une machine inexistante, ou une URL <20> un mauvais port sur une machine existante. Ces erreurs signifient que la transaction r<>seau n'a m<>me pas&nbsp; d<>marr<72>. Elle l<>ve aussi une erreur si elle recoit une erreur I/O pendant l'<27>criture de l'en-t<>te de la requ<71>te HTTP. Pour les appels<b>::http::geturl</b> synchrones (o<> <b>-command</b> n'est pas sp<73>cifi<66>e), elle l<>vera une erreur si elle recoit une erreur I /O en lisant l'en-t<>tes ou les donn<6E>es de la r<>ponse HTTP parce que <b>::http::geturl</b> ne retourne pas de jeton dans ces cas, elle fait tout le nettoyage requis et il n'y a pas de n<>cessit<69> pour votre appli d'appeler <b>::http::cleanup</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Pour les appels asynchrones de <b>::http::geturl</b>, toutes les situations d'erreur pr<70>c<EFBFBD>dentes s'appliquent, except<70> que si s'il y a une erreur pendant&nbsp; la lecture de l'en-t<>tes ou les donn<6E>es de la r<>ponse HTTP, aucune exception n'est l<>v<EFBFBD>e Ceci parcequ'apr<70>s l'<27>criture des en-t<>tes HTTP, <b>::http::geturl</b> retourne, et le reste de la transaction HTTP se produit en arri<72>re-plan La commande callback peut verifier si l'erreur s'est produite pendant la lecture en appelant <b>::http::status</b> pour v<>rifier le statut et si c'est <i>error</i>, appeller <b>::http::error</b> pour obtenir le message d'erreur. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Alternativement, si le flux du programme principal atteint un point ou il a besoin de connaitre le r<>sultat de la requ<71>te HTTP asynchrone, il peut appeller <b>::http::wait</b> et alors verifier les statut et erreur, comme le callback le fait. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Dans tous les cas, vous devez toujours appeller <b>http::cleanup</b> pour effacer le tableau d'<27>tat quand vous avez fini. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les autres r<>sultats possibles de la transaction HTTP d<>termin<69>s par l'examen du statut <20> partir de <b>http::status</b> sont d<>crit ci-dessous.
<DL>
<DT><br>ok
</DT><DD>Si la transaction HTTP se termine enti<74>rement, alors le statut sera <b>ok</b>. N<>anmoins, vous pouvez toujours v<>rifier la valeur <b>http::code</b> pour obtenir le statut HTTP La fonction <b>http::ncode</b> fournit just l'erreur num<75>rique (ex., 200, 404 ou 500) alors que&nbsp; la fonction <b>http::code</b> retourne une valeur comme &quot;HTTP 404 File not found&quot;.
</DD>
<DT><br>eof
</DT><DD>Si le serveur ferme la socket sans r<>ponse, alors aucune erreur n'est lev<65>e, mais le statut de la transaction sera <A HREF="102.htm"><b>eof</b></A>.
</DD>
<DT><br>error
</DT><DD>Le message d'erreur sera aussi stock<63> dans l'<27>l<EFBFBD>ment<A HREF="103.htm"><b> error</b></A> du tableau d'<27>tat, accessible via <b>::http::error</b>.
</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Une autre possibilit<69> d'erreur est que <b>http::geturl</b> soit incapable d'<27>crire toutes les donn<6E>es post sur le serveur avant que le serveur r<>ponde et ferme la socket. Le message d'erreur est sauvegard<72> dans&nbsp; l'<27>l<EFBFBD>ment <b>posterror</b> du tableau d'<27>tat et alors&nbsp; <b>http::geturl</b> tente de finaliser la transaction. Si elle peut lire la r<>ponse du serveur elle finira avec un statut<b> ok</b>, autrement elle aura un statut<A HREF="102.htm"><b> eof</b></A> <br>
</div><br>
<div><b>TABLEAU D'ETAT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La fonction<b>::http::geturl</b> retourne un <i>token </i>qui peut <20>tre utilis<69> pour obtenir l'<27>tat de la transaction HTTP sous la forme d'un tableau Tcl. Utilisez cette construction pour cr<63>er une variable tableau facile <20> utiliser: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">upvar #0 &#36;token state</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Une fois que les donn<6E>es associ<63>es <20> l'url ne sont plus n<>cessaires, le tableau d'<27>tat sera d<>truit pour lib<69>rer la m<>moire. La fonction <b>http::cleanup</b> est fournie <20> cet usage. Les <20>l<EFBFBD>ments suivants du tableau sont support<72>s:
<DL>
<DT><br><b>body</b>
</DT><DD>Le contenu de l'URL. Sera vide si l'option <b>-channel</b> a <20>t<EFBFBD> sp<73>cifi<66>e Cette valeur est renvoy<6F>ee par la commande<b>::http::data</b>.
</DD>
<DT><br><b>currentsize</b>
</DT><DD>Le nombre courant d'octets r<>cup<75>r<EFBFBD> de l'URL. Cette valeur est renvoy<6F>e par la commande<b>::http::size</b>.
</DD>
<DT><br><b>error</b>
</DT><DD>Si d<>fini, c'est la cha<68>ne d'erreur vue quand la transaction HTTP est avort<72>e.
</DD>
<DT><br><b>http</b>
</DT><DD>Le statut de la r<>ponse HTTP du serveur Cette valeur est renvoy<6F>e par la commande<b>::http::code</b> Le format de cette valeur est:
<br><i>HTTP/1.0 code string</i>
Le <i>code</i> est un nombre de trois-digit d<>fini dans le standard HTTP. Un code de 200 est OK Les codes commen<65>ant avec 4 ou 5 indiquent des erreurs. Les codes commen<65>ant avec 3 sont des erreurs de redirection Dans ce cas la meta-donn<6E>e <b>Location</b> sp<73>cifie une nouvelle URL qui contient l'information requise.
</DD>
<DT><br><b>meta</b>
</DT><DD>Le protocole HTTP retourne les meta-donn<6E>es qui d<>crivent les contenus de l'URL. L'<27>l<EFBFBD>ment <b>meta</b> du tableau d'<27>tat est une liste de cl<63>s et valeurs des meta-donn<6E>es Ceci dans un format utile pour l'initialisation d'un tableau qui contient les meta-donn<6E>es:
array set meta &#36;state(meta)
Certaines des cl<63>s meta-donn<6E>es sont list<73>es ci-dessous, mais le standard HTTP en d<>finit plus, et les serveurs sont libres d'ajouter les leurs.
<DL>
<DT><br><b>Content-Type</b>
</DT><DD>Le type de contenus de l'URL Les exemples inclutnt <b>text/html</b>, <b>image/gif,</b> <b>application/postscript</b> et <b>application/x-tcl</b>. </DD>
<DT><br><b>Content-Length</b>
</DT><DD>La taille d<>clar<61>e des contenus La taille obtenue par <b>::http::geturl</b> est disponibles comme <b>state(size)</b>.
</DD>
<DT><br><b>Location</b>
</DT><DD>Une URL alternative qui contient les donn<6E>es requises.</DD>
</DL>
</DD>
<DT><br><b>posterror</b>
</DT><DD>L'erreur, si elle existe, qui s'est produite pendant l'<27>criture du post des donn<6E>es sur le serveur.
</DD>
<DT><br><b>status</b>
</DT><DD>Soit <b>ok</b>, en cas de succ<63>s, <b>reset</b> si r<>initialis<69> par l'utilisateur, <b>timeout</b> si un timeout s'est produit avant que la transaction soit compl<70>te, ou <A HREF="103.htm"><b>error</b></A> pour une condition d'erreur Durant la transaction cette valeur est une cha<68>ne vide.
</DD>
<DT><br><b>totalsize</b>
</DT><DD>Un copie de la valeur<b> </b>des<b> </b>meta-donn<6E>es<b> Content-Length</b>.
</DD>
<DT><br><b>type</b>
</DT><DD>Une copie de la valeur<b> </b>des<b> </b>meta-donn<6E>es<b> Content-Type</b>.
</DD>
<DT><br><b>url</b>
</DT><DD>L'URL requise.
</DD>
</DL>
</div><br>
<div><b>EXEMPLE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 102px;"># Copie une URL dans un fichier et affiche les meta-donn<6E>es<br>
proc ::http::copy &#123; url file &#123;chunk 4096} } &#123;<br>
&nbsp;&nbsp;&nbsp; set out &#91;open &#36;file w]<br>
set token &#91;geturl &#36;url -canal &#36;out -progress ::http::Progress &#92;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-blocksize &#36;chunk]<br>
&nbsp;&nbsp;&nbsp; close &#36;out<br>
&nbsp;&nbsp;&nbsp; # Ceci finit la ligne lanc<6E> par http::Progress<br>
&nbsp;&nbsp;&nbsp; puts stderr &quot;&quot;<br>
&nbsp;&nbsp;&nbsp; upvar #0 &#36;token state<br>
set max 0<br>
&nbsp;&nbsp;&nbsp; foreach &#123;name value} &#36;state (meta) &#123;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if &#123;&#91;string longueur &#36;name] &gt; &#36;max} &#123;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set max &#91;string longueur &#36;name]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if &#123;&#91;regexp -nocase ^location&#36; &#36;name]} &#123;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # G<>re la redirection d'URL <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; puts stderr &quot;Location:&#36;value &quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return &#91;copy &#91;string trim &#36;value] &#36;file &#36;chunk]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; incr max<br>
&nbsp;&nbsp;&nbsp; foreach &#123;name value } &#36; state (meta) &#123;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts &#91;format &quot;%-*s %s&quot; &#36;max &#36;name: &#36;value]<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
return &#36;token<br>
}<br>
proc ::http::Progress &#123;args} &#123;<br>
&nbsp;&nbsp;&nbsp; puts -nunwline stderr . ; flush stderr<br>
}<br>
</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">safe(n), <A HREF="162.htm">socket</A>(n), safesock(n) </div><br>
<div>Derni<EFBFBD>re r<>vision: 8.3</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="121.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="123.htm"><b>Suivant</b></A></div>
</BODY></HTML>

17
hlp/fr/tcl/if.htm Normal file
View File

@@ -0,0 +1,17 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>if&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">if - Execute des scripts conditionellement
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>if </b><i>expr1 </i>?<b>then</b>? <i>body1 </i><b>elseif </b><i>expr2 </i>?<b>then</b>? <i>body2</i> <b>elseif</b> ... ?<b>else</b>? ?<i>bodyN</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div>La commande <i>if</i> <20>value <i>expr1</i> comme expression (de la m<>me fa<66>on que <A HREF="107.htm"><b>expr</b></A> <20>value ses argument) La valeur de l'expression doit <20>tre bool<6F>enne (une valeur num<75>rique, o<> 0 est faux et tout le reste est vrai, ou une valeur cha<68>ne tel que <b>true</b> ou <b>yes</b> pour vrai et <b>false</b> ou <b>no</b> pour faux); si vrai alors <i>body1</i> est ex<65>cut<75> par passage <20> l'interpr<70>teur Tcl. Autrement <i>expr2</i> est <20>valu<6C> comme expression et si vrai alors <b>body2</b> est ex<65>cut<75>, et ainsi de suite. Si aucune des expressions n'est <20>valu<6C>e <20> vrai alors <i>bodyN</i> est ex<65>cut<75>. Les arguments <b>then</b> et <b>else</b> sont optionnels, ils facilitent la lecture de la commande. Il peut y avoir n'importe quel nombre de clauses <b>elseif</b>, incluant z<>ro. <i>BodyN</i> peut aussi <20>tre omis tant que <b>else</b> est <20>galement omis. La valeur de retour de la commande est le r<>sultat du script qui a <20>t<EFBFBD> ex<65>cut<75>, ou une cha<68>ne vide si aucune des expressions n'a <20>t<EFBFBD> diff<66>rente de z<>ro et qu'il n'y avait pas de <i>bodyN</i> </div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="122.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="124.htm"><b>Suivant</b></A></div>
</BODY></HTML>

18
hlp/fr/tcl/incr.htm Normal file
View File

@@ -0,0 +1,18 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>incr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">incr - Incr<63>mente la valeur d'une variable
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>incr </b><i>varName </i>?<i>increment</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Incr<EFBFBD>mente la valeur stock<63>e dans la variable dont le nom est <i>varName</i>. La valeur de la variable doit <20>tre un entier. Si <i>increment</i> est fourni alors sa valeur (qui doit <20>tre un entier) est ajout<75> <20> valeur de la variable <i>varName</i>;&nbsp; autrement 1 est ajout<75> <20> <i>varName</i>. La nouvelle valeur est stock<63>e comme cha<68>ne d<>cimale dans la variable <i>varName</i> et <20>galement renvoy<6F>e comme r<>sultat </div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="123.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="125.htm"><b>Suivant</b></A>
</div>
</BODY></HTML>

41
hlp/fr/tcl/index.htm Normal file
View File

@@ -0,0 +1,41 @@
<HTML><HEAD><TITLE>Manuel des Commandes Tcl </TITLE></HEAD>
<BODY><HR><H3>Commandes Internes Tcl</H3><HR>
<table>
<tr><td> <a href="122.htm">Http</a><td> <a href="100.htm">dde</a><td> <a href="123.htm">if</a><td> <a href="144.htm">pkg::create</a><td> <a href="129.htm">tcl_endOfWord</a></tr>
<tr><td> <a href="158.htm">Safe&nbsp;Base</a><td> <a href="101.htm">encoding</a><td> <a href="124.htm">incr</a><td> <a href="146.htm">pkg_mkIndex</a><td> <a href="129.htm">tcl_findLibrary</a></tr>
<tr><td> <a href="78.htm">Tcl</a><td> <a href="102.htm">eof</a><td> <a href="125.htm">info</a><td> <a href="147.htm">proc</a><td> <a href="129.htm">tcl_startOfNextWord</a></tr>
<tr><td> <a href="87.htm">after</a><td> <a href="103.htm">error</a><td> <a href="126.htm">interp</a><td> <a href="148.htm">puts</a><td> <a href="129.htm">tcl_startOfPreviousWord</a></tr>
<tr><td> <a href="88.htm">append</a><td> <a href="104.htm">eval</a><td> <a href="127.htm">join</a><td> <a href="149.htm">pwd</a><td> <a href="129.htm">tcl_wordBreakAfter</a></tr>
<tr><td> <a href="89.htm">array</a><td> <a href="105.htm">exec</a><td> <a href="128.htm">lappend</a><td> <a href="150.htm">re_syntax</a><td> <a href="129.htm">tcl_wordBreakBefore</a></tr>
<tr><td> <a href="129.htm">auto_execok</a><td> <a href="106.htm">exit</a><td> <a href="130.htm">lindex</a><td> <a href="151.htm">read</a><td> <a href="169.htm">tcltest</a></tr>
<tr><td> <a href="129.htm">auto_import</a><td> <a href="107.htm">expr</a><td> <a href="131.htm">linsert</a><td> <a href="152.htm">regexp</a><td> <a href="170.htm">tclvars</a></tr>
<tr><td> <a href="129.htm">auto_load</a><td> <a href="108.htm">fblocked</a><td> <a href="132.htm">list</a><td> <a href="153.htm">registry</a><td> <a href="171.htm">tell</a></tr>
<tr><td> <a href="129.htm">auto_mkindex</a><td> <a href="109.htm">fconfigure</a><td> <a href="133.htm">llength</a><td> <a href="154.htm">regsub</a><td> <a href="172.htm">time</a></tr>
<tr><td> <a href="129.htm">auto_mkindex_old</a><td> <a href="110.htm">fcopy</a><td> <a href="134.htm">load</a><td> <a href="155.htm">rename</a><td> <a href="173.htm">trace</a></tr>
<tr><td> <a href="129.htm">auto_qualify</a><td> <a href="111.htm">file</a><td> <a href="135.htm">lrange</a><td> <a href="156.htm">resource</a><td> <a href="174.htm">unknown</a></tr>
<tr><td> <a href="129.htm">auto_reset</a><td> <a href="112.htm">fileevent</a><td> <a href="136.htm">lreplace</a><td> <a href="157.htm">return</a><td> <a href="175.htm">unset</a></tr>
<tr><td> <a href="90.htm">bgerror</a><td> <a href="113.htm">filename</a><td> <a href="137.htm">lsearch</a><td> <a href="159.htm">scan</a><td> <a href="176.htm">update</a></tr>
<tr><td> <a href="91.htm">binary</a><td> <a href="114.htm">flush</a><td> <a href="138.htm">lsort</a><td> <a href="160.htm">seek</a><td> <a href="177.htm">uplevel</a></tr>
<tr><td> <a href="92.htm">break</a><td> <a href="115.htm">for</a><td> <a href="139.htm">memory</a><td> <a href="161.htm">set</a><td> <a href="178.htm">upvar</a></tr>
<tr><td> <a href="94.htm">catch</a><td> <a href="116.htm">foreach</a><td> <a href="140.htm">msgcat</a><td> <a href="162.htm">socket</a><td> <a href="179.htm">variable</a></tr>
<tr><td> <a href="95.htm">cd</a><td> <a href="117.htm">format</a><td> <a href="141.htm">namespace</a><td> <a href="163.htm">source</a><td> <a href="180.htm">vwait</a></tr>
<tr><td> <a href="96.htm">clock</a><td> <a href="118.htm">gets</a><td> <a href="142.htm">open</a><td> <a href="164.htm">split</a><td> <a href="181.htm">while</a></tr>
<tr><td> <a href="97.htm">close</a><td> <a href="119.htm">glob</a><td> <a href="143.htm">package</a><td> <a href="165.htm">string</a></tr>
<tr><td> <a href="98.htm">concat</a><td> <a href="120.htm">global</a><td> <a href="129.htm">parray</a><td> <a href="subst.htm">166</a></tr>
<tr><td> <a href="99.htm">continue</a><td> <a href="121.htm">history</a><td> <a href="145.htm">pid</a><td> <a href="167.htm">switch</a></tr>
</table>
<HR><PRE>
Copyright &#169; 1990-1994 The Regents of the University of California
Copyright &#169; 1990-1994 The Regents of the University of California.
Copyright &#169; 1992-1995 Karl Lehenbauer and Mark Diekhans.
Copyright &#169; 1992-1999 Karl Lehenbauer and Mark Diekhans
Copyright &#169; 1993-1997 Bell Labs Innovations for Lucent Technologies
Copyright &#169; 1994-2000 Sun Microsystems, Inc.
Copyright &#169; 1998 Mark Harrison.
Copyright &#169; 1998-1999 Scriptics Corporation
Copyright &#169; 1998-2000 Ajuba Solutions
Copyright &#169; 1998-2000 Ajuba Solutions.
Copyright &#169; 1998-2000 Scriptics Corporation.
Copyright &#169; 2001 Donal K. Fellows
Copyright &#169; 1995-1997 Roger E. Critchlow Jr.
</PRE></BODY></HTML>

77
hlp/fr/tcl/info.htm Normal file
View File

@@ -0,0 +1,77 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>info&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">info - Retourne l'information concernant l'<27>tat de l'interpr<70>teur Tcl
</div> <br>
<div><b>SYNTAXE</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>info </b><i>option </i>?<i>arg arg ...</i>?
</div> <br>
<div><b>DESCRIPTION</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande fournit des informations concernant les rouages de l'interpr<70>teur Tcl. Les <i>options</i> l<>gales (qui peuvent <20>tre abr<62>g<EFBFBD>es) sont:
<DL>
<DT><b>info args </b><i>procname</i></DT><DD>Renvoie une liste contenant les noms des arguments de la fonction <i>procname</i>, dans l'ordre <i>Procname</i> doit <20>tre le nom d'une fonction de commande Tcl.
</DD>
<DT><br><b>info body </b><i>procname</i>
</DT><DD>Renvoie le corps de la fonction <i>procname</i> <i>Procname</i> doit <20>tre le nom d'une fonction Tcl .
</DD>
<DT><br><b>info cmdcount</b>
</DT><DD>Renvoie un compte du nombre total de commandes qui ont <20>t<EFBFBD> appel<65>es dans cet interpr<70>teur.
</DD>
<DT><br><b>info commands </b>?<i>pattern</i>?
</DT><DD>Si <i>pattern</i> n'est pas sp<73>cifi<66>, retourne une liste de noms de toutes les commandes Tcl dans le namespace courant, incluant <20> la fois les commandes interne <20>crites en C et les fonction de commandes d<>finies en utilisant la commande<A HREF="147.htm"><b> proc</b></A>. Si <i>pattern</i> est sp<73>cifi<66>, seulement les noms correspondants <20> <i>pattern</i> sont renvoy<6F>s. A correspondance est d<>termin<69>e en utilisant les m<>me r<>gles que pour <b>string match</b>. <i>pattern</i> peut <20>tre un nom qualifi<66> comme <b>Foo::print*</b>. Ainsi, il peut sp<73>cifier un namespace particulier en utilisant une s<>quence de noms de namespace s<>par<61>s par <b>::</b>, et peut avoir un mod<6F>le correspondant <20> des caract<63>res sp<73>ciaux <20> la fin pour sp<73>cifier un ensemble de commandes dans ce namespace. Si <i>pattern</i> est un nom qualifi<66>, la liste r<>sultante de noms de commande a chacun des noms qualifi<66>s avec le nom du namespace sp<73>cifi<66> .
</DD>
<DT><br><b>info complete </b><i>command</i>
</DT><DD>Renvoie 1 si <i>command</i> est une commande compl<70>te Tcl dans le sens o<> elle n'a pas de guillemets, accolades, crochets ou noms <20>l<EFBFBD>ment de tableau non fermants, Si la commande n'apparait pas compl<70>te alors 0 est renvoy<6F>. Cette commande est typiquement utilis<69>e dans les environnements orient<6E>s ligne de commande pour autoriser les utilisateurs <20> saisir des commandes r<>parties sur plusieurs lignes;&nbsp; si la commande n'est pas compl<70>te, le script peut retarder l'<27>valualuation jusqu'a ce que des lignes suppl<70>mentaire ait <20>t<EFBFBD> saisies pour compl<70>ter la commande. <
<b>info default </b><i>procname arg varname</i><br>
<i>Procname</i> doit <20>tre le nom d'une fonction de commande Tcl et <i>arg</i> doit <20>tre le nom d'un argument <20> cette fonction Si <i>arg</i> n'a pas de valeur par d<>faut alors la commande retourne <b>0</b>. Autrement elle retourne <b>1</b> et place la valeur par d<>faut de <i>arg</i> dans la variable <i>varname</i>.
</DD>
<DT><br><b>info exists </b><i>varName</i>
</DT><DD>Renvoie <b>1</b> si le nom de variable <i>varName</i> existe dans le contexte courant (soit comme variable globale ou locale) et a <20>t<EFBFBD> d<>finie en lui donnant une valeur, retourne <b>0</b> autrement.
</DD>
<DT><br><b>info globals </b>?<i>pattern</i>?
</DT><DD>Si <i>pattern</i> n'est pas sp<73>cifi<66>, retourne une liste de tout les noms des variables globales couramment d<>finies. Les variables globales sont des variables dans le namespace global . Si <i>pattern</i> est sp<73>cifi<66>, seulement les noms correspondants <20> <i>pattern</i> sont renvoy<6F>s La correspondance est d<>termin<69>e en utilisant les m<>me r<>gles que pour <b>string match</b>.
</DD>
<DT><br><b>info hostname</b>
</DT><DD>Renvoie le nom de l'ordinateur sur lequel cet appel est ex<65>cut<75>.
</DD>
<DT><br><b>info level</b> ?<i>number</i>?
</DT><DD>Si <i>number</i> n'est pas sp<73>cifi<66>, cette commande retourne un nombre donnant le niveau dans la pile de la fonction appel<65>e, ou 0 si la commande est appel<65>e au premier plan Si <i>number</i> est sp<73>cifi<66>, alors le r<>sultat est une liste consistant des noms et arguments de la fonction appell<6C>e au niveau <i>number</i> sur la pile Si <i>number</i> est positif alors il d<>signe un niveau de pile particulier (1 se r<>f<EFBFBD>re <20> la fonction active, 2 <20> la fonction qu'elle a appel<65>, et ainsi de suite); autrement cela donne un niveau relatif au niveau courant (0.htm se r<>f<EFBFBD>re <20> la fonction courante, -1.htm <20> l'appelant, et ainsi de suite). Voir la commande <A HREF="177.htm"><b>uplevel</b></A> pour plus d'information sur la signification des niveaux de pile d'appel.
</DD>
<DT><br><b>info library</b>
</DT><DD>Renvoie le nom du r<>pertoire biblioth<74>que dans lequel les scripts Tcl standards sont stock<63>s. Ceci est actuellement la valeur de la variable <b>tcl_library</b> et peut <20>tre chang<6E> en fixant <b>tcl_library</b>. Voir la page de manuel <A HREF="170.htm"><b>tclvars</b></A> pour plus d'information.
</DD>
<DT><br><b>info loaded </b>?<i>interp</i>?</DT><DD>Renvoie une liste d<>crivant tous les packages qui ont <20>t<EFBFBD> charg<72>s dans <i>interp</i> avec la commande<A HREF="134.htm"><b> load</b></A>. Chaque <20>l<EFBFBD>ment de la liste est une sous-liste de deux <20>l<EFBFBD>ments consistant du nom du fichier duquel le package a <20>t<EFBFBD> charg<72> et du nom du package. Pour les packages statiquement charg<72>s le nom de chemin sera une cha<68>ne vide. Si <i>interp</i> est omis alors il'nformation est renvoy<6F>e pour tout packages charg<72> dans tout interpr<70>teur du processus. Pour obtenir une liste des packages dans le courant interpr<70>teur, Sp<53>cifiez une cha<68>ne vide pour l'argument<i> interp</i>.
</DD>
<DT><br><b>info locals </b>?<i>pattern</i>?
</DT><DD>Si <i>pattern</i> n'est pas sp<73>cifi<66>, retourne une liste de tout les noms des variables locales couramment-d<>finies, incluant les arguments <20> la fonction courante, s'ils existent. Les variables d<>finies avec les commandes <A HREF="120.htm"><b>global</b></A> et <A HREF="178.htm"><b>upvar</b></A> ne seront pas renvoy<6F>es. Si <i>pattern</i> est sp<73>cifi<66>, seulement les noms correspondants <20> <i>pattern</i> sont renvoy<6F>s La correspondance est d<>termin<69>e en utilisant les m<>me r<>gles que pour <b>string </b><b>match</b>.
</DD>
<DT><br><b>info nameofexecutable</b>
</DT><DD>Renvoie le nom de chemin complet du fichier binaire duquel l'application a <20>t<EFBFBD> appel<65>e. Si Tcl a <20>t<EFBFBD> incapable d'identifier le fichier, alors une cha<68>ne vide est renvoy<6F>e.
</DD>
<DT><br><b>info patchlevel</b>
</DT><DD>Renvoie la valeur de la variable globale <b>tcl_patchLevel</b>; voyez la page de manuel <A HREF="170.htm"><b>tclvars</b></A> pour plus d'information.
</DD>
<DT><br><b>info procs </b>?<i>pattern</i>?
</DT><DD>Si <i>pattern</i> n'est pas sp<73>cifi<66>, retourne une liste de tout les noms des fonctions Tcl dans le namespace courant. Si <i>pattern</i> est sp<73>cifi<66>, seulement les noms de fonction dans le namespace&nbsp; courant correspondants <20> <i>pattern</i> sont renvoy<6F>s. La correspondance est d<>termin<69> en utilisant les m<>me r<>gles que pour <b>string match</b>.
</DD>
<DT><br><b>info script</b>
</DT><DD>Si un fichier script Tcl est couramment <20>valu<6C> (ex. il y a un appel actif de <A HREF="34.htm"><b>Tcl_EvalFile</b></A> ou il y a un appel actif de la commande<A HREF="163.htm"><b> source</b></A>), alors cette commande retourne le nom du fichier trait<69> Autrement la commande retourne une cha<68>ne vide.
</DD>
<DT><br><b>info sharedlibextension</b>
</DT><DD>Renvoie l'extension utilis<69>e sur cette plateforme pour les noms des fichiers contenant des librairies partag<61>es (par exemple, <b>.so</b> sous Solaris). Si les librairies partag<61>es ne sont pas support<72>es sur cette plateforme alors une cha<68>ne vide est renvoy<6F>e.
</DD>
<DT><br><b>info tclversion</b>
</DT><DD>Renvoie la valeur de la variable globale <b>tcl_version</b>; voyez la page de manuel <A HREF="170.htm"><b>tclvars</b></A> pour plus d'information. </DD>
<DT><br><b>info vars</b> ?<i>pattern</i>?
</DT><DD>Si <i>pattern</i> n'est pas sp<73>cifi<66>, retourne une liste de tout les noms des variables (locales et globales incluses)couramment visibles. Si <i>pattern</i> est sp<73>cifi<66>, seuls les noms correspondants <20> <i>pattern</i> sont renvoy<6F>s. La correspondance est d<>termin<69>e en utilisant les m<>me r<>gles que pour <b>string match</b>. <i>pattern</i> peut <20>tre un nom qualifi<66> comme <b>Foo::option*</b>. Ainsi, il peut sp<73>cifier un namespace particulier en utilisant une s<>quence de noms de namespace s<>par<61>s par <b>::</b>, et peut avoir mod<6F>le correspondant <20> des caract<63>res sp<73>ciaux <20> la fin pour sp<73>cifier un ensemble de variables dans ce namespace. Si <i>pattern</i> est un nom qualifi<66>, la liste r<>sultante de noms de variable contient chaque variable namespace correspondante qualifi<66>e avec le nom de son namespace
</DD>
</DL>
<div><br>
<div>Derni<EFBFBD>re r<>vision: 7.5</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="124.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="126.htm"><b>Suivant</b></A></div>
</BODY></HTML>

432
hlp/fr/tcl/interp.htm Normal file
View File

@@ -0,0 +1,432 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>interp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">interp - Cr<43>e et manipule des interpr<70>teurs Tcl
</div> <br>
<div><b>SYNTAXE</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>interp </b><i>option </i>?<i>arg arg ...</i>?&nbsp;
</div><br>
<div><b>DESCRIPTION</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande permet la cr<63>ation d'un ou plusieurs nouveaux interpr<70>teurs Tcl qui coexistent avec l'interpr<70>teur cr<63>ateur dans la m<>me application. L'interpr<70>teur cr<63>ateur est appel<65> le <i>ma<EFBFBD>tre</i> et le nouvel interpr<70>teur est appel<65> l'<i>esclave</i>. Un ma<6D>tre peut cr<63>er n'importe quel nombre d'esclaves, et chaque esclave peut lui-m<>me cr<63>er des esclaves suppl<70>mentaires pour lequel il est ma<6D>tre, cr<63>ant ainsi une hi<68>rarchie d'interpr<70>teurs. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Chaque interpr<70>teur est ind<6E>pendant des autres: il a son propre namespace pour les commandes, fonctions, et variables globales. Un ma<6D>tre interpr<70>teur peut cr<63>er des connections entre ses esclaves et lui-m<>me en utilisant un m<>canisme appel<65> un <i>alias</i> Un <i>alias</i> est une commande dans un interpr<70>teur esclave qui, quand elle est appel<65>e, provoque l'appel d'une commande dans son interpr<70>teur ma<6D>tre ou dans un autre interpr<70>teur esclave Les seules autres connections entre interpr<70>teurs sont au travers de variable d'environnements (la variable<b> env</b>), qui sont normalement partag<61>es entre tous les interpr<70>teurs dans l'application. Notez que le namespace pour les fichiers (tel que les noms renvoy<6F> par la commande<A HREF="142.htm"><b> open</b></A>) n'est pas partag<61> entre interpr<70>teurs. Des commandes explicites sont fournies pour partager les fichiers et transf<73>rer les r<>f<EFBFBD>rences <20> un fichier ouvert d'un interpr<70>teur <20> un autre. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>interp</b> fournit aussi le support des interpr<70>teurs<i> safe</i> Un interpr<70>teur s<>r est un esclave dont les fonctions ont <20>t<EFBFBD> grandement restreintes, ainsi il est plus s<>r d'ex<65>cuter un script <20>tranger sans risque pour les autres interpr<70>teurs ou l'environnement d'application. Par exemple, toutes commandes de cr<63>ation de canal IO et les commandes de cr<63>ation de sous-process sont rendues inaccessible aux interpr<70>teurs s<>rs. Voir INTERPRETEURS SURS ci-dessous pour plus d'information sur les fonctionnalit<69>s pr<70>sentes dans un interpr<70>teur s<>r. Les fonctionalit<69>s dangereuses ne sont pas enlev<65>es de l'interpr<70>teur s<>r; par contre, elle sont <i>cach<EFBFBD>es</i>, ainsi seul les interpr<70>teurs de confiance peuvent y acceder. Pour une explication d<>taill<6C>e des commandes cach<63>es, voir COMMANDES CACHEES, ci-dessous. Le m<>canisme d'alias peut <20>tre utilis<69> pour une communication prot<6F>g<EFBFBD>e (analogue <20> un appel kernel) entre un interpr<70>teur esclave et son ma<6D>tre. Voir INVOCATION D'ALIAS, ci-dessous, pour plus de d<>tails sur comment le m<>canisme d'alias fonctionne. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Un nom d'interpr<70>teur qualifi<66> est une liste Tcl correcte contenant une sous ensemble de ses anc<6E>tres dans la hi<68>rarchie de l'interpr<70>teur, termin<69>e par les cha<68>ne d<>signant l'interpr<70>teur dans son ma<6D>tre imm<6D>diat. Les noms d'interpr<70>teur sont relatif <20> l'interpr<70>teur dans lequel ils sont utilis<69>s. Par exemple, si <b>a</b> est un esclave de l'interpr<70>teur courant et qu'il a un esclave <b>a1</b>, qui <20> son tour a un esclave <b>a11</b>, le nom qualifi<66> de <b>a11</b> dans <b>a</b> est la liste <b>a1 a11</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande<b> interp</b>, d<>crite ci-dessous, accepte des noms d'interpr<70>teur qualifi<66>s comme arguments; l'interpr<70>teur dans lequel la commande est <20>valu<6C>e peut toujours <20>tre r<>f<EFBFBD>renc<6E> comme <b>&#123;}</b> (la liste ou cha<68>ne vide). Notez qu'il est impossible de se referer&nbsp; <20> un ma<6D>tre (ancestor) interpr<70>teur par son nom dans un interpr<70>teur esclave except<70> au travers d'alias. Egalement, il n'y a pas de nom global par lequel se referer&nbsp; au premier interpr<70>teur cr<63><72> dans une application. L'ensemble de ces restrictions sont motiv<69>es par des raisons de s<>curit<69> <br>
</div> <br>
<div><b>LA COMMANDE INTERP </b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>interp</b> est utilis<69>e pour cr<63>er, effacer, et manipuler des interpr<70>teurs esclaves, et pour partager ou transferer des canaux entre interpr<70>teurs Elle peut avoir une parmi plusieurs formes, d<>pendantes de l'argument<i> option</i>:
<DL>
<DT><br><b>interp</b> <b>alias</b> <i>srcPath</i> <i>srcCmd</i>
</DT><DD>Renvoie une liste Tcl dont les <20>l<EFBFBD>ments sont les <i>targetCmd</i> et <i>arg</i>s associ<63>s <20> l'alias nomm<6D> <i>srcCmd</i> (ce sont toutes les valeurs sp<73>cifi<66>es quand l'alias a <20>t<EFBFBD> cr<63><72>; il est possible que la commande source actuelle dans l'esclave soit diff<66>rente de <i>srcCmd</i> si elle a <20>t<EFBFBD> renomm<6D>e).
</DD>
<DT><br><b>interp</b> <b>alias</b> <i>srcPath</i> <i>srcCmd</i> <b>&#123;}</b>
</DT><DD>Efface l'alias de <i>srcCmd</i> dans l'interpr<70>teur esclave identifi<66> par <i>srcPath</i>. <i>srcCmd</i> se r<>f<EFBFBD>re au nom sous lequel l'alias a <20>t<EFBFBD> cr<63><72> si la commande source a <20>t<EFBFBD> renomm<6D>e, la commande renomm<6D>e sera effac<61>e.
</DD>
<DT><br><b>interp</b> <b>alias</b> <i>srcPath</i> <i>srcCmd</i> <i>targetPath</i> <i>targetCmd </i>?<i>arg arg ...</i>?
</DT><DD>Cette commande cr<63>e un alias entre un esclave et un autre (voyez la commande <b>alias</b> esclave ci-dessous pour la cr<63>ation d'alias entre un esclave et son ma<6D>tre) Dans cette commande, chacun des interpr<70>teurs esclave peut <20>tre n'importe o<> dans la hi<68>rarchie des interpr<70>teurs sous l'interpr<70>teur qui appelle la commande. <i>SrcPath</i> et <i>srcCmd</i> identifient le source de l'alias. <i>SrcPath</i> est une liste Tcl dont les <20>l<EFBFBD>ments d<>signent un interpr<70>teur particulier Par exemple, &quot;<b>a b</b>&quot; identifie un interpr<70>teur <b>b</b>, qui est une esclave de l'interpr<70>teur <b>a</b>, qui est un esclave de l'interpr<70>teur appelant Une liste vide sp<73>cifie l'interpr<70>teur appelant la commande <i>srcCmd</i> donne le nom d'une nouvelle commande, qui sera cr<63><72>e dans l'interpr<70>teur source. <i>TargetPath</i> et <i>targetCmd</i> sp<73>cifient une cible interpr<70>teur et commande, et l'arguments<i> arg</i>, s'il existe, Sp<53>cifie les arguments suppl<70>mentaires <20> <i>targetCmd</i> qui sont ajout<75>s <20> tout argument sp<73>cifi<66> dans l'appel de <i>srcCmd</i>. <i>TargetCmd</i> peut <20>tre ind<6E>fini <20> l'instant de cet appel, ou il peut existe d<>j<EFBFBD>r; il n'est pas cr<63><72> par cette commande. L'alias pr<70>pare la commande cible <20> <20>tre appel<65>e&nbsp; dans l'interpr<70>teur cible chaque fois que la commande source est appel<65>e dans l'interpr<70>teur source Voir APPEL D'ALIAS ci-dessous pour plus de d<>tails.
</DD>
<DT><br><b>interp</b> <b>aliases </b>?<i>path</i>?
</DT><DD>Cette commande retourne une liste Tcl de noms de toutes les commandes source des alias d<>finis dans l'interpr<70>teur identifi<66> par <i>path</i>.
<b>interp</b> <b>create </b>?<b>-safe</b>? ?<b>--</b>? ?<i>path</i>?<br>
Cr<EFBFBD>e un interpr<70>teur esclave identifi<66> par <i>path</i> et une nouvelle commande, appel<65> une <i>slave command</i>. Le nom de la commande esclave est le dernier composant de <i>path</i>. Le nouvel interpr<70>teur esclave et la commande esclave sont cr<63><72>e dans l'interpr<70>teur identifi<66> par le chemin obtenu en enlevant le dernier composant de <i>path</i>. Par exemple, si <i>path </i>est<i> </i><b>a bc</b> alors un nouvel interpr<70>teur et commande esclave nomm<6D>s <b>c</b> sont cr<63><72>s dans l'interpr<70>teur identifi<66> par les chemin <b>a b</b>. La commande esclave peut <20>tre employ<6F>e pour manipuler le nouvel interpr<70>teur comme d<>crit ci-dessous. Si <i>path</i> est omis, Tcl cr<63>e un nom unique de la forme <b>interp</b><i>x</i>, o<> <i>x</i> est un entier, et l'utilise pour l'interpr<70>teur et la commande esclave. Si le switch <b>-safe</b> est sp<73>cifi<66> (ou si le ma<6D>tre interpr<70>teur est un interpr<70>teur s<>r), le nouvel interpr<70>teur esclave sera cr<63><72> comme un interpr<70>teur s<>r avec des fonctionalit<69> limit<69>es; autrement l'esclave inclutra le jeu complet des commandes et variables Tcl internes. Le <b>--</b> switch peut <20>tre utilis<69> pour marquer la fin des commutateurs;&nbsp; il peut <20>tre n<>cessaires si <i>path</i> est une valeur inhabituelle telle que <b>-safe</b>. Le r<>sultat de la commande est le nom du nouvel interpr<70>teur. Le nom d'un interpr<70>teur esclave doit <20>tre unique parmi tout les esclaves; une erreur se produit si le nom d'un interpr<70>teur esclave existe d<>j<EFBFBD> pour ce ma<6D>tre.
</DD>
<DT><br><b>interp</b> <b>delete </b>?<i>path ...?</i>
</DT><DD>Efface z<>ro ou plus interpr<70>teurs donn<6E>s par les arguments optionnels <i>path</i>, et pour chaque interpr<70>teur, efface aussi ses esclaves. La commande efface aussi la commande esclave de chaque interpr<70>teur effac<61>. Pour chaque argument<i> path</i>, si aucun interpr<70>teur de ce nom existe, la commande l<>ve une erreur.
</DD>
<DT><br><b>interp</b> <b>eval</b> <i>path arg </i>?<i>arg ...</i>?
</DT><DD>Cette commande concat<61>ne tous les arguments <i>arg</i> de la m<>me fa<66>on que la commande<A HREF="98.htm"><b> concat</b></A>, et <20>value alors la cha<68>ne r<>sultante comme script Tcl dans l'interpr<70>teur esclave identifi<66> par <i>path</i>. Le r<>sultat de cette evaluation (incluant l'information d'erreur telle que les variables<b> errorInfo</b> et <b>errorCode</b>, si une erreur se produit) est renvoy<6F> <20> l'interpr<70>teur appelant .
</DD>
<DT><br><b>interp exists </b><i>path</i></DT><DD>Renvoie <b>1</b> si un interpr<70>teur esclave du <i>path</i> sp<73>cifi<66> existe dans ce ma<6D>tre, <b>0</b> autrement. Si <i>path</i> est omis, l'interpr<70>teur appelant est utilis<69>.
</DD>
<DT><br><b>interp expose </b><i>path</i> <i>hiddenName</i> ?<i>exposedCmdName</i>?
</DT><DD>Rend la commande cach<63>e <i>hiddenName</i> visible, en lui donnant <20>ventuellement un nouveau nom <i>exposedCmdName</i> (ce nom est couramment accept<70> seulement si c'est un nom global valide sans quelconque ::), dans l'interpr<70>teur d<>sign<67> par <i>path</i>. Si une commande visible avec le nom cible existe d<>j<EFBFBD>, cette commande <20>choue. Les commandes cach<63>es sont expliqu<71>es plus en d<>tail dans COMMANDES CACHEES , ci-dessous.
</DD>
<DT><br><b>interp</b> <b>hide</b> <i>path</i> <i>exposedCmdName</i> ?<i>hiddenCmdName</i>?
</DT><DD>Cache la commande visible <i>exposedCmdName</i>, en la renommant en commande cach<63>e <i>hiddenCmdName</i>, ou conservant le m<>me nom si <i>hiddenCmdName</i> n'est pas donn<6E>, dans l'interpr<70>teur d<>sign<67>&nbsp; par <i>path</i>. Si une commande cach<63>e avec le nom cibl<62> existe d<>j<EFBFBD>, cette commande <20>choue. <i>exposedCmdName</i> et <i>hiddenCmdNamene&nbsp; </i> peuvent&nbsp; pas contenir en m<>me temps de qualificateurs namespace, ou une erreur est lev<65>e. Les commandes <20> cacher par <b>interp hide</b> sont recherch<63>es dans le namespace global&nbsp; m<>me si le namespace&nbsp; courant n'est pas le global. Ceci emp<6D>che les esclaves d'abuser un ma<6D>tre interpr<70>teur en cachant les mauvaises commandes, en rendant le namespace courant diff<66>rent du global. Les commandes cach<63>es sont expliqu<71>es plus en d<>tail dans COMMANDES CACHEES , ci-dessous.
</DD>
<DT><br><b>interp</b> <b>hidden</b> <i>path</i>
</DT><DD>Renvoie une liste des noms de toutes les commandes cach<63>es dans l'interpr<70>teur identifi<66> par <i>path</i>.
</DD>
<DT><br><b>interp</b> <b>invokehidden</b> <i>path</i> ?<b>-global</b>? <i>hiddenCmdName</i> ?<i>arg ...</i>?
</DT><DD>Appelle la commande cach<63>e <i>hiddenCmdName</i> avec les arguments fournis dans l'interpr<70>teur d<>sign<67> par <i>path</i>. Aucune substitution ou <20>valuation ne sont appliqu<71>es aux arguments. Si le flag <b>-global</b> est pr<70>sent, la commande cach<63>e est appel<65>e au niveau global dans l'interpr<70>teur cible; autrement elle est appel<65>e dans le cadre d'appel courant et peut acceder aux variables locales dans ce cadre et appeler des cadres externes. Les commandes cach<63>es sont expliqu<71>es plus en d<>tail dans COMMANDES CACHEES , ci-dessous.
</DD>
<DT><br><b>interp issafe</b> ?<i>path</i>?
</DT><DD>Renvoie <b>1</b> si l'interpr<70>teur identifi<66> par le <i>path</i> sp<73>cifi<66> est s<>r, <b>0</b> autrement.
</DD>
<DT><br><b>interp marktrusted</b> <i>path</i>
</DT><DD>Marque l'interpr<70>teur identifi<66> par <i>path</i> comme fiable. Ne montre pas les commande cach<63>es. Cette commande peut seulement <20>tre appel<65>e <20> partir d'un interpr<70>teur de confiance. La commande n'a pas d'effet si l'interpr<70>teur identifi<66> par <i>path</i> est d<>j<EFBFBD> fiable.
</DD>
<DT><br><b>interp</b> <b>share</b> <i>srcPath channelId destPath</i>
</DT><DD>Met en place le partage du canal IO identifi<66> par <i>channelId</i> entre l'interpr<70>teur identifi<66> par <i>srcPath</i> et l'interpr<70>teur identifi<66> par <i>destPath</i>. Les deux interpr<70>teurs ont les m<>me permissions sur le canal IO. Les deux interpr<70>teurs doivent le fermer pour fermer le IO canal sous-jacent; les canaux IO accessibles dans un interpr<70>teur sont automatiquement ferm<72>s quand un interpr<70>teur est d<>truit.
</DD>
<DT><br><b>interp</b> <b>slaves</b> ?<i>path</i>?
</DT><DD>Renvoie une liste Tcl des noms de tous les interpr<70>teurs esclaves associ<63>s <20> l'interpr<70>teur identifi<66> par <i>path</i>. Si <i>path</i> est omis, l'interpr<70>teur appelant est utilis<69>.
</DD>
<DT><br><b>interp</b> <b>target</b> <i>path alias</i>
</DT><DD>Renvoie une liste Tcl d<>crivant l'interpr<70>teur cible d'un alias. L'alias est sp<73>cifi<66> avec un chemin d'interpr<70>teur et le nom de la commande source, juste comme dans <b>interp </b><b>alias</b> plus haut. Le nom de&nbsp; l'interpr<70>teur cible est renvoy<6F> comme un chemin d'interpr<70>teur, relatif <20> l'interpr<70>teur appelant . Si l'interpr<70>teur cible de l'alias est l'interpr<70>teur appelant alors une liste vide est renvoy<6F>e. Si l'interpr<70>teur cible de l'alias n'est pas l'interpr<70>teur appelant ou un de ses descendants alors une erreur est g<>n<EFBFBD>r<EFBFBD>e. La commande cible n'a pas a <20>tre d<>finie <20> l'instant de cet appel.
</DD>
<DT><br><b>interp</b> <b>transfer</b> <i>srcPath channelId destPath</i>
</DT><DD>Rends le canal IO identifi<66> par <i>channelId</i> disponible dans l'interpr<70>teur identifi<66> par <i>destPath</i> et indisponible dans l'interpr<70>teur identifi<66> par <i>srcPath</i>
</DD>
</DL>
</div><br>
<div><b>LA COMMANDE SLAVE </b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Pour chaque interpr<70>teur esclave cr<63><72> avec lA commande<b> interp</b>, une nouvelle commande Tcl est cr<63><72>e dans le ma<6D>tre interpr<70>teur avec le m<>me nom que le nouvel interpr<70>teur. Cette commande peut <20>tre employ<6F>e pour faire des op<6F>rations vari<72>es sur l'interpr<70>teur Elle a la forme g<>n<EFBFBD>rale suivante:
<i>slave command </i>?<i>arg arg ...</i>?</div>
<div ALIGN="LEFT" style="margin-left: 51px;"><i>Slave</i> est le nom de l'interpr<70>teur, et <i>command</i> et <i>arg</i>s determinent le comportement exact de la commande. Les formes valides de cette commande sont:
<DL>
<DT><br><i>slave </i><b>aliases</b>
</DT><DD>Renvoie une liste Tcl dont les <20>l<EFBFBD>ments sont les noms de tous les alias dans <i>slave</i> Les noms renvoy<6F>s sont les valeurs <i>srcCmd</i> utilis<69>es quand les alias ont <20>t<EFBFBD> cr<63><72>s (qui ne peuvent pas <20>tre les m<>me que les noms des commandes courantes, si elles ont <20>t<EFBFBD> renomm<6D>es).
</DD>
<DT><br><i>slave </i><b>alias </b><i>srcCmd</i>
</DT><DD>Renvoie une liste Tcl dont les <20>l<EFBFBD>ments sont les <i>targetCmd</i> et <i>arg</i>s associ<63>s <20> l'alias nomm<6D> <i>srcCmd</i> (toutes sont les valeurs sp<73>cifi<66>es quand l'alias a <20>t<EFBFBD> cr<63><72>e; il est possible que la commande source actuelle dans l'esclave soit diff<66>rente de <i>srcCmd</i> si elle a <20>t<EFBFBD> renomm<6D>e).
</DD>
<DT><br><i>slave </i><b>alias </b><i>srcCmd </i><b>&#123;}</b>
</DT><DD>Efface l'alias de <i>srcCmd</i> dans l'interpr<70>teur esclave. <i>srcCmd</i> se r<>f<EFBFBD>re au nom sous lequel l'alias a <20>t<EFBFBD> cr<63><72> si la commande source a <20>t<EFBFBD> renomm<6D>e, la commande renomm<6D>e sera effac<61>.
</DD>
<DT><br><i>slave </i><b>alias </b><i>srcCmd targetCmd </i>?<i>arg ..</i>?
</DT><DD>Cr<EFBFBD>e un alias tel que chaque fois que <i>srcCmd</i> est appel<65>e dans <i>slave</i>, <i>targetCmd</i> est appel<65>e dans le ma<6D>tre. Les arguments <i>arg</i> seront transmis <20> <i>targetCmd</i> comme arguments suppl<70>mentaires, ajout<75>s avant tout argument transmis dans l'appel de <i>srcCmd</i>. Voir&nbsp; APPEL D'ALIAS ci-dessous pour les d<>tails.
</DD>
<DT><br><i>slave </i><b>eval </b><i>arg </i>?<i>arg ..</i>?</DT><DD>Cette commande concat<61>ne tous les arguments <i>arg</i> de la m<>me fa<66>on que&nbsp; la commande<A HREF="98.htm"><b> concat</b></A>, et <20>value la cha<68>ne r<>sultante comme un script Tcl dans <i>slave</i>. Le r<>sultat de cette <20>valuation (incluant information erreur telle que les variables<b> </b><b>errorInfo</b> et <b>errorCode</b>, si une erreur se produit) est renvoy<6F> <20> l'interpr<70>teur appelant .
</DD>
<DT><br><i>slave </i><b>expose </b><i>hiddenName </i>?<i>exposedCmdName</i>?
</DT><DD>Cette commande expose la commande cach<63>e<i>hiddenName</i>, lui donnant <20>ventuellement un nouveau nom <i>exposedCmdName</i> (ce nom est couramment accept<70> seulement si c'est une nom global valide sans quelconque ::), dans <i>slave</i>. Si une commande visible avec le nom cibl<62> existe d<>j<EFBFBD>, cette commande <20>choue. Pour plus details sur les commande cach<63>es, voir COMMANDES CACHEES , ci-dessous.
</DD>
<DT><br><i>slave </i><b>hide </b><i>exposedCmdName</i> ?<i>hiddenCmdName</i>?
</DT><DD>Cette commande cache la commande visible <i>exposedCmdName</i>, en la renommant en la commande cach<63>e <i>hiddenCmdName</i>, ou gardant le m<>me nom si l'argument n'est pas donn<6E>, dans l'interpr<70>teur<i> slave</i>. Si une commande cach<63>e avec le nom cibl<62> existe d<>j<EFBFBD>, cette commande <20>choue. Autant <i>exposedCmdName</i> que <i>hiddenCmdName</i> ne peuvent contenir de qualificateurs namespace, ou une erreur est lev<65>e. Les commandes a cacher sont recherch<63>e dans le namespace global&nbsp; m<>me si le namespace&nbsp; courant n'est pas le global un . Ceci emp<6D>che les esclaves d'abuser un ma<6D>tre interpr<70>teur en cachant les mauvaises commandes, en rendant le namespace courant diff<66>rent du global. Pour plus details sur les commande cach<63>es, voir COMMANDES CACHEES , ci-dessous.
</DD>
<DT><br><i>slave </i><b>hidden</b></DT><DD>Renvoie une liste des noms de toutes les commande cach<63>es dans <i>slave</i>.
<i>slave </i><b>invokehidden</b> ?<b>-global</b> <i>hiddenName </i>?<i>arg ..</i>?<br>
Cette commande appelle la commande cach<63>e <i>hiddenName</i> avec les arguments fournis, dans <i>slave</i>. Aucune substitutions ou <20>valuations ne sont appliqu<71>es aux arguments. Si le flag <b>-global</b> est donn<6E>, la commande est appel<65>e au niveau global dans l'esclave; autrement elle est appel<65>e dans le cadre d'appel courant et peut acceder <20> ses variables locales ou appeler des cadres externes. Pour plus details sur les commande cach<63>es, voir COMMANDES CACHEES , ci-dessous.
</DD>
<DT><br><i>slave </i><b>issafe</b>
</DT><DD>Renvoie <b>1</b> si l'interpr<70>teur esclave est s<>r, <b>0</b> autrement.
<DT><br><i>slave </i><b>marktrusted</b>
</DT><DD>Marque l'interpr<70>teur esclave comme fiable. Peut seulement <20>tre appel<65>e par un interpr<70>teur de confiance. Cette commande ne rend visible aucune commande cach<63>e dans l'interpr<70>teur esclave. La commande n'a pas d'effet si l'esclave est d<>j<EFBFBD> fiable <br>
</DD>
</DL>
</div><br>
<div><b>SAFE INTERPRETERS</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Un interpr<70>teur s<>r a des fonctionalit<69> restreintes, ainsi il est s<>r d'ex<65>cuter un script arbitraire donn<6E> par votre pire ennemi sans s'inqui<75>ter pour l'application h<>te ou le reste de votre environnement de travail De mani<6E>re <20> rendre un interpr<70>teur s<>r, certaines commandes et variables sont enlev<65>se de l'interpr<70>teur. Par exemple, les commandes pour cr<63>er fichiers sur disque sont enlev<65>es, et la commande <A HREF="105.htm"><b>exec</b></A> est enlev<65>e, car elle pourrait <20>tre utilis<69>e pour faire des d<>gats <20> l'aide de sous-processus. Un acc<63>s limit<69> <20> ces facilit<69>s peut <20>tre fourni, par cr<63>ation d'alias du ma<6D>tre interpr<70>teur pour v<>rifier leurs arguments soigneusement et fournir un acc<63>s restreint <20> une sous ensemble s<>r de facilit<69>s. Par exemple, la cr<63>ation de fichier pourra <20>tre autoris<69> dans un sous r<>pertoire particulier et l'appel de sous-processus pourra <20>tre autoris<69> pour un ensemble soigneusement choisi de programmes. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Un interpr<70>teur s<>r est cr<63><72>e en specifiant le switch <b>-safe</b> <20> la commande<b> interp create</b> N<>anmoins, tout esclave cr<63><72> par un interpr<70>teur s<>r sera aussi s<>r. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Un interpr<70>teur s<>r est cr<63><72>e avec exactement ce jeu de commandes internes: </div><br>
<b><TABLE ALIGN="center" BORDER="0" CELLSPACING="0" CELLPADDING="0" WIDTH="60%">
<TR>
<TD>
after
</TD>
<TD>
append
</TD>
<TD>
array
</TD>
<TD>
binary
</TD>
</TR>
<TR>
<TD>
break
</TD>
<TD>
case
</TD>
<TD>
catch
</TD>
<TD>
clock
</TD>
</TR>
<TR>
<TD>
close
</TD>
<TD>
concat
</TD>
<TD>
continue
</TD>
<TD>
eof
</TD>
</TR>
<TR>
<TD>
error
</TD>
<TD>
eval
</TD>
<TD>
expr
</TD>
<TD>
fblocked
</TD>
</TR>
<TR>
<TD>
fcopy
</TD>
<TD>
fileevent
</TD>
<TD>
flush
</TD>
<TD>
for
</TD>
</TR>
<TR>
<TD>
foreach
</TD>
<TD>
format
</TD>
<TD>
gets
</TD>
<TD>
global
</TD>
</TR>
<TR>
<TD>
history
</TD>
<TD>
if
</TD>
<TD>
incr
</TD>
<TD>
info
</TD>
</TR>
<TR>
<TD>
interp
</TD>
<TD>
join
</TD>
<TD>
lappend
</TD>
<TD>
lindex
</TD>
</TR>
<TR>
<TD>
linsert
</TD>
<TD>
list
</TD>
<TD>
llength
</TD>
<TD>
lrange
</TD>
</TR>
<TR>
<TD>
lreplace
</TD>
<TD>
lsearch
</TD>
<TD>
lsort
</TD>
<TD>
namespace
</TD>
</TR>
<TR>
<TD>
package
</TD>
<TD>
pid
</TD>
<TD>
proc
</TD>
<TD>
puts
</TD>
</TR>
<TR>
<TD>
read
</TD>
<TD>
regexp
</TD>
<TD>
regsub
</TD>
<TD>
rename
</TD>
</TR>
<TR>
<TD>
return
</TD>
<TD>
scan
</TD>
<TD>
seek
</TD>
<TD>
set
</TD>
</TR>
<TR>
<TD>
split
</TD>
<TD>
string
</TD>
<TD>
subst
</TD>
<TD>
switch
</TD>
</TR>
<TR>
<TD>
tell
</TD>
<TD>
trace
</TD>
<TD>
unset
</TD>
<TD>
update
</TD>
</TR>
<TR>
<TD>
uplevel
</TD>
<TD>
upvar
</TD>
<TD>
variable
</TD>
<TD>
vwait
</TD>
</TR>
<TR>
<TD>
while
</TD>
<TD>
<!--R17C2-->
</TD>
<TD>
<!--R17C3-->
</TD>
<TD>
<!--R17C4-->
</TD>
</TR>
</TABLE></b>
<br>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les commandes suivantes sont cach<63>es par <b>interp create</b> quand il cr<63>e un interpr<70>teur s<>r: </div><br>
<TABLE ALIGN="center" BORDER="0" CELLSPACING="0" CELLPADDING="0" WIDTH="60%">
<TR>
<TD>
cd
</TD>
<TD>
exec
</TD>
<TD>
exit
</TD>
<TD>
fconfigure
</TD>
</TR>
<TR>
<TD>
file
</TD>
<TD>
glob
</TD>
<TD>
load
</TD>
<TD>
open
</TD>
</TR>
<TR>
<TD>
pwd
</TD>
<TD>
socket
</TD>
<TD>
source
</TD>
<TD>
vwait
</TD>
</TR>
</TABLE><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Ces commandes peuvent <20>tre recr<63><72>es plus tard comme fonctions ou alias Tcl, ou r<>expos<6F>es avec <b>interp expose</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">De plus, la variable <b>env</b> n'est pas pr<70>sente dans un interpr<70>teur s<>r, donc il ne peut partager des variables d'environnement avec les autres interpr<70>teurs. La variable <b>env</b> pose un probl<62>me de s<>curit<69>, parce que les utilisateurs peuvent stocker de l'information sensible dans une variable d'environnement. Par exemple, le manuel PGP recommende de stocker le mot de passe de protection de la cl<63> PGP priv<69>e dans la variable d'environnement <i>PGPPASS</i>. Rendre cette variable disponible <20> l'ex<65>cution de code <20>tranger dans un interpr<70>teur s<>r induirait une faille de s<>curit<69>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si les extensions sont charg<72>es dans un interpr<70>teur s<>r, elles peuvent aussi restraindre leur propre fonctionalit<69> pour <20>liminer les commandes sensibles. Pour une discussion sur la getion des extensions pour la s<>curit<69> voyez l 'entr<74>e de manuel des commandes Tcl<A HREF="158.htm"><b> Safe</b></A><b>-</b><A HREF="78.htm"><b>Tcl</b></A> et <A HREF="134.htm"><b>load</b></A>
</div><br>
<div><b>APPEL D'ALIAS</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Le m<>canisme alias a <20>t<EFBFBD> soigneusement con<6F>u ainsi il peut <20>tre utilis<69> s<>rement quand un script non fiable est ex<65>cut<75> dans un esclave s<>r et que le cible de l'alias est une ma<6D>tres<65>r Lachose la plus importante pour garantir la s<>curit<69> est de s'assurer qui l'information transmise de l'esclave au ma<6D>tre n'est jamais <20>valu<6C>e ou substitu<74>e dans le ma<6D>tre; si ceci se produisait, cela pourrait activer un script de la mort dans l'esclave qui appelerait des fonctions arbitraires dans le ma<6D>tre, pour compromettre la s<>curit<69>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Quand la source d'un alias est appel<65>e dans l'interpr<70>teur esclave, les substitutions Tcl usuelles sont effectu<74>es <20> l'analyse de la commande. Ces substitutions sont effectu<74>es dans l'interpr<70>teur source juste comme elles seraient faites pour tout autre commande appel<65>e dans cet interpr<70>teur. La fonction de commande de la commande source prend ses arguments et les m<>lange avec les <i>targetCmd</i> et <i>arg</i>s de l'alias pour cr<63>er un nouveau tableau d'arguments Si les mots de <i>srcCmd</i> etaient &quot;<i>srcCmd arg1 arg2 ... argN</i>&quot;, le nouvel ensemble de mots sera &quot;<i>targetCmd arg arg ... arg arg1 arg2 ... argN</i>&quot;, o<> <i>targetCmd</i> et <i>arg</i>s sont les valeurs fournies quand l'alias a <20>t<EFBFBD> cr<63><72>. <i>TargetCmd</i> est alors utilis<69>e pour localiser une fonction de commande dans l'interpr<70>teur cible, et cette fonction de commande est appel<65>e avec le nouveau jeu d'aguments Un erreur se produit s'il n'y a pas commande nomm<6D>e <i>targetCmd</i> dans l'interpr<70>teur cible. Aucunes substitutions suppl<70>mentaires ne sont effectu<74>es sur les mots, la fonction de commande cible est appel<65>e directement, sans passer au travers du m<>canisme evaluation Tcl normal. Les substitutions sont ainsi effectu<74>es sur chaque mot exactement une seule fois: <i>targetCmd</i> et <i>args</i> ont <20>t<EFBFBD> substitu<74>es pendant l'analyse de la commande qui cr<63><72>e l'alias, et <i>arg1 - argN</i> sont substitu<74>es quand la commande source de l'alias est analys<79>e dans l'interpr<70>teur source. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">A l'<27>criture de <i>targetCmd</i>s pour des alias dans des interpr<70>teurs s<>rs, il est tr<74>s important que les arguments de cette commande ne soient jamais <20>valu<6C>s ou substitu<74>s, car ceci fournirait un m<>canisme d'<27>chappement par lequel les interpr<70>teurs esclaves pourraient ex<65>cuter du code arbitraire dans le ma<6D>tre Par cons<6E>quent, ceci pourrait compromettre la s<>curit<69> du syst<73>me
</div><br>
<div><b>COMMANDES CACHEES</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les interpr<70>teurs s<>rs restreignent grandement les fonctionalit<69>s disponibles pour les programmes Tcl qui seraient <20>xecut<75>s. Permettre <20> du code Tcl non fiable un acc<63>s direct <20> ces fonctionalit<69>s est dangeureux, parce que il peut <20>tre utilis<69> pour un grand nombre d'attaques sur l'environnement. N<>anmoins, il y a parfois un besoin legitime d'utiliser les fonctionalit<69>s dangereuses dans le contexte de l'interpr<70>teur s<>r. Par exemple, parfois un programme doit <20>tre <A HREF="163.htm"><b>source</b></A>d dans l'interpr<70>teur. Un autre exemple est Tk, ou des fen<65>tres sont attach<63>es <20> une hi<68>rarchie de fen<65>tres pour un interpr<70>teur sp<73>cifique; quelque potentiellement dangereuse fonctions, ex. gestion de fen<65>tres, doit <20>tre effectu<74>e sur ces fen<65>tres dans le contexte de l'interpr<70>teur. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>interp</b> fournit une solution <20> ce probl<62>me sous la forme des <i>hidden commands</i>. Au lieu d'enlever enti<74>rement les commandes dangereuses d'un interpr<70>teur s<>r, ces commandes sont cach<63>es donc elles deviennent indisponibles pour les l'ex<65>cution de scripts Tcl dans l'interpr<70>teur. N<>anmoins, ces commande cach<63>es peuvent <20>tre appel<65>e par anc<6E>tre fiable de l'interpr<70>teur s<>r, dans le contexte de l'interpr<70>teur s<>r, en utilisant <b>interpinvoke</b>. Les commandes cach<63>es et commandes visibles r<>sident dans des namespaces s<>par<61>s. Il est possible de definir une commande cach<63>e et un commande visible portant les m<>me nom dans un interpr<70>teur. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les commandes cach<63>es dans un interpr<70>teur esclave peuvent <20>tre appel<65>es dans le corps des fonctions appel<65>es dans le ma<6D>tre pendant l'appel d'alias. Par exemple, un alias de <A HREF="163.htm"><b>source</b></A> pourrait <20>tre cr<63><72> dans un interpr<70>teur esclave. Quand elle est appel<65>e dans l'interpr<70>teur esclave, une fonction est appel<65>e dans le ma<6D>tre interpr<70>teur pour v<>rifier si l'op<6F>ration est autoris<69>e (ex. il demande de <i>sourcer</i> un fichier que l'interpr<70>teur esclave est autoris<69> <20> acc<63>der). La fonction alors appelle la commande <A HREF="163.htm"><b>source</b></A> cach<63>e dans l'interpr<70>teur esclave pour <i>sourcer</i> le contenu du fichier. Notez que deux commandes nomm<6D>es <A HREF="163.htm"><b>source</b></A> existent dans l'interpr<70>teur esclave: l'alias, et la commande cach<63>e. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Parcequ'un interpr<70>teur ma<6D>tre peut appeller une commande cach<63>e comme partie de la gestion d'un appel d'alias, grans soin doit <20>tre pris d'<27>viter l'<27>valualuation de tout arguments transmis au travers de l'appel de l'alias. Autrement, un interpr<70>teur esclave malin pourrait faire ex<65>cuter <20> l'interpr<70>teur ma<6D>tre de confiance des commandes dangereuses. Voir la section sur l' APPEL D'ALIAS pour une discussion plus compl<70>te de ce topic. Pour aider <20> <20>viter ce probl<62>me, aucune substitutions ou <20>valuations ne sont appliqu<71>es aux arguments de <b>interp </b><b>invokehidden</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les interpr<70>teurs s<>rs ne sont pas autoris<69>s <20> appeler des commande cach<63>es dans eux-m<>mes ou dans leurs descendants. Ceci emp<6D>che les esclaves s<>r d'acceder aux fonctionalit<69> cach<63>es dans eux-m<>mes ou leurs descendants. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">L'ensemble des commandes cach<63>es dans un interpr<70>teur peut <20>tre manipul<75> par un interpr<70>teur de confiance en utilisant <b>interp expose</b> et <b>interp hide</b>. La commande <b>interp expose</b> d<>place une commande cach<63>e dans le jeu de commande visibles dans l'interpr<70>teur identifi<66> par <i>path</i>, potentiellement renommant la commande dans le processus. Si une commande visible du nom cibl<62> existe d<>j<EFBFBD>, l'op<6F>ration <20>choue. Pareillement, <b>interp hide</b> d<>place une commande visible dans le jeu de commande cach<63>es dans cet interpr<70>teur. Les interpr<70>teurs s<>rs ne sont pas autoris<69>s <20> d<>placer les commandes entre l'ensemble des commandes cach<63>es et visibles, dans soit eux-m<>me ou leurs descendants. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Actuellement, les noms des commande cach<63>es ne peuvent pas contenir de qualificateurs namespace, et vous devez en premier renommer une commande d'un namespace dans le namespace global avant de pouvoir la cacher. Les commandes cach<63>es par <b>interp hide</b> sont recherch<63>e dans le namespace global m<>me si le namespace courant n'est pas le global. Ceci emp<6D>che les esclaves d'abuser un ma<6D>tre interpr<70>teur en cachant les mauvaises commandes, en rendant le namespace courant diff<66>rent du global.
</div><br>
<div><b>CREDITS</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Ce m<>canisme est bas<61> sur le prototype Safe-Tcl impl<70>ment<6E> par Nathaniel Borenstein et Marshall Rose
</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><A HREF="134.htm">load</A>(n), safe(n), Tcl_CreateSlave(3) </div>
<div>Derni<EFBFBD>re r<>vision: 7.6</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="125.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="127.htm"><b>Suivant</b></A></div>
</BODY></HTML>

18
hlp/fr/tcl/join.htm Normal file
View File

@@ -0,0 +1,18 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>join&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">join - Cr<43>e une cha<68>ne en joignant ensemble les <20>l<EFBFBD>ments d'une liste
</div> <br>
<div><b>SYNTAXE</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>join </b><i>list </i>?<i>joinString</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">L'argument <i>list</i> doit <20>tre une liste Tcl valide. Cette commande retourne la cha<68>ne form<72>e en joignant tous les <20>l<EFBFBD>ments de <i>list</i> ensemble avec <i>joinString</i> separant chaque paire d'<27>l<EFBFBD>ments adjacents. L'argument <i>joinString</i> est par d<>faut un caract<63>re espace </div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="126.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="128.htm"><b>Suivant</b></A></div>
</BODY></HTML>

17
hlp/fr/tcl/lappend.htm Normal file
View File

@@ -0,0 +1,17 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>lappend&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">lappend <20> Ajoute les <20>l<EFBFBD>ments d'une liste <20> une variable
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>lappend </b><i>varName </i>?<i>value value value ...</i>?&nbsp; <br>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande traite la variable d<>ign<67>e par <i>varName</i> en tant que liste et ajoute chacun des arguments <i>value</i> de cette liste comme <20>l<EFBFBD>ment s<>par<61>, avec des espaces entre les <20>l<EFBFBD>ments. Si <i>varName</i> n'existe pas, elle est cr<63><72>e comme liste dont les <20>l<EFBFBD>ments sont d<>sign<67>s par les arguments<i> value</i>. <b>Lappend</b> est identique <20> <A HREF="88.htm"><b>append</b></A> except<70> que les <i>value</i>s sont ajout<75>es comme <20>l<EFBFBD>ments de liste plut<75>t que texte pur. Cette commande fournit un moyen relativement efficace de construire de grandes listes Par exemple, &quot;<b>lappend a </b><b>&#36;b</b>&quot; est beaucoup plus efficace que &quot;<b>set a &#91;concat &#36;a &#91;list &#36;b]]</b>&quot; quand <b>&#36;a</b> est long </div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="127.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="129.htm"><b>Suivant</b></A></div>
</BODY></HTML>

119
hlp/fr/tcl/library.htm Normal file
View File

@@ -0,0 +1,119 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>library&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">auto_execok, auto_import, auto_load, auto_mkindex, auto_mkindex_old, auto_qualify, auto_reset, tcl_findLibrary, parray, tcl_endOfWord, tcl_startOfNextWord, tcl_startOfPreviousWord, tcl_wordBreakAfter, tcl_wordBreakBefore - biblioth<74>que standard des fonctions Tcl
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>auto_execok </b><i>cmd</i><br>
<b>auto_import </b><i>pattern</i><br>
<b>auto_load </b><i>cmd</i><br>
<b>auto_mkindex </b><i>dir pattern pattern ...</i><br>
<b>auto_mkindex_old </b><i>dir pattern pattern ...</i><br>
<b>auto_qualify </b><i>command namespace</i><br>
<b>auto_reset</b><br>
<b>tcl_findLibrary </b><i>basename version patch initScript enVarName varName</i><br>
<b>parray </b><i>arrayName</i><br>
<b>tcl_endOfWord </b><i>str start</i><br>
<b>tcl_startOfNextWord </b><i>str start</i><br>
<b>tcl_startOfPreviousWord </b><i>str start</i><br>
<b>tcl_wordBreakAfter </b><i>str start</i><br>
<b>tcl_wordBreakBefore </b><i>str start</i><br>
</div><br>
<div><b>INTRODUCTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Tcl inclut une biblioth<74>que de fonctions d'usage courant. Les fonctions d<>finies dans la biblioth<74>que Tcl sont g<>n<EFBFBD>riques et peuvent <20>tre utilis<69>es par de nombreuses applications diff<66>rentes. L'emplacement de la biblioth<74>que Tcl est renvoy<6F> par la commande<b> </b><b>info library</b>. En plus de la biblioth<74>que Tcl, chaque application doit normalement avoir sa propre biblioth<74>que de fonctions; l'emplacement de cette biblioth<74>que est normalement donn<6E>e par la valeur de la variable<b> </b>globale<b> &#36;</b><i>app</i><b>_library</b>, o<> <i>app</i> est le nom de l'application. Par exemple, l'emplacement de la biblioth<74>que Tk est conserv<72> dans la variable <b>&#36;tk_library</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Pour acc<63>der aux fonctions de la biblioth<74>que Tcl, une application doit &quot; sourcer &quot; le fichier <b>init.tcl</b> dans la biblioth<74>que, par exemple avec la commande Tcl </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>source &#91;file join &#91;info library] init.tcl]</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si la fonction de biblioth<74>que <A HREF="47.htm"><b>Tcl_Init</b></A> est appel<65>e de la fonction d'une application <A HREF="5.htm"><b>Tcl_AppInit</b></A>, ceci se produit automatiquement. Le code de <b>init.tcl</b> d<>finira la fonction <A HREF="174.htm"><b>unknown</b></A> et pr<70>pare les autres fonctions <20> <20>tre charg<72>es <20> la demande en utilisant le m<>canisme auto_load d<>fini ci-dessous.
</div><br>
<div><b>FONCTIONS COMMANDES</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les fonctions suivantes sont fournies dans la biblioth<74>que Tcl:
<DL>
<DT><b>auto_execok </b><i>cmd</i></DT><DD>D<EFBFBD>termine si <i>cmd</i> est un fichier ex<65>cutable ou une commande interne. Si c'est le cas, elle retourne une liste d'arguments <20> transmettre <20> <A HREF="105.htm"><b>exec</b></A> pour ex<65>cuter le fichier ex<65>cutable ou la commande interne d<>sign<67>e par <i>cmd</i>. Sinon, elle retourne une cha<68>ne vide. Cette commande examine les r<>pertoires dans le chemin de recherche courant (donn<6E>s par la variable d'environnement PATH) dans sa recherche d'un fichier ex<65>cutable nomm<6D> <i>cmd</i>. Sur les plateformes Windows, la recherche est <20>t<EFBFBD>ndue avec les m<>mes r<>pertoires et extensions de fichier utilis<69>s par <A HREF="105.htm"><b>exec</b></A>. <b>Auto_exec</b> conserve l'information au sujet des recherches pr<70>cedentes dans un tableau nomm<6D> <b>auto_execs</b>; ceci <20>vite la recherche du chemin dans les appels suivants pour la m<>me <i>cmd</i>. La commande <b>auto_reset</b> peut <20>tre employ<6F>e pour forcer <b>auto_execok</b> <20> vider son cache.
</DD>
<DT><br><b>auto_import </b><i>pattern</i></DT><DD><b>Auto_import</b> est appel<65>e pendant <b>namespace import</b> pour voir si les commandes import<72>es sp<73>cifi<66>es par <i>pattern</i> r<>sident dans une biblioth<74>que auto-charg<72>e. Si vrai, les commandes sont charg<72>es, ainsi elles seront disponibles dans l'interpr<70>teur pour la cr<63>ation des liens d'import. Si les commandes ne r<>sident pas dans une biblioth<74>que auto-charg<72>e, <b>auto_import</b> ne fait rien.
</DD>
<DT><br><b>auto_load </b><i>cmd</i></DT><DD>Cette commande tente de charger la d<>finition d'une commande Tcl nomm<6D>e <i>cmd</i>. Pour ceci elle recherche un <i>auto-load path</i>, qui est une liste d'un ou plusieurs r<>pertoires. Le chemin auto-load est donn<6E>s par la variable globale <b>&#36;auto_path</b> si elle existe. S'il n'y a pas de variable<b> &#36;auto_path</b>, alors la variable d'environnement TCLLIBPATH est utilis<69>e, si elle existe. Autrement le chemin auto-load contient juste le r<>pertoire de la biblioth<74>que Tcl. A l'int<6E>rieur de chaque r<>pertoire dans le chemin auto-load il doit y avoir un fichier <b>tclIndex</b> qui d<>crit une ou plusieurs commandes d<>finies dans ce r<>pertoire et un script <20> <20>valuer pour charger chacune des commandes. Le fichier <b>tclIndex</b> sera g<>n<EFBFBD>r<EFBFBD> avec la commande<b> auto_mkindex</b> Si <i>cmd</i> est trouv<75> dans un fichier index, alors le script appropri<72> est <20>valu<6C> pour cr<63>er la commande. La commande <b>auto_load</b> retourne 1 si <i>cmd</i> est cr<63><72>e avec succ<63>s. La commande retourne 0 si il n'y a pas d'entr<74>e index pour <i>cmd</i> ou si le script ne definit actuellement pas <i>cmd</i> (ex. parce que l'information d'index est p<>rim<69>e). Si une erreur se produit pendant le traitement du script, alors cette erreur est renvoy<6F>e. <b>Auto_load</b> lit seulement l'information d'index une fois et la sauvegarde dans le tableau <b>auto_index</b> les appels suivants <20> <b>auto_load</b> recherchent <i>cmd</i> dans le tableau plut<75>t que de relire les fichiers d'index. L'information d'index mise en cache peut <20>tre effac<61>e avec la commande <b>auto_reset</b>. Ceci forcera la commande <b>auto_load</b> suivante <20> recharger la base de donn<6E>es d'index <20> partir du disque.
</DD>
<DT><br><b>auto_mkindex </b><i>dir pattern pattern ...</i></DT><DD>G<EFBFBD>n<EFBFBD>re un index utilisable par <b>auto_load</b>. La commande recherche <i>dir</i> pour tout fichiers dont les noms correspondent <20> un des arguments <i>pattern</i> (la correspondance est <20>tablie avec la commande <A HREF="119.htm"><b>glob</b></A>), g<>n<EFBFBD>re un index de toutes les fonctions de commande Tcl d<>finies dans tout les fichiers correspondants, et stocke l'information d'index dans un fichier nomm<6D> <b>tclIndex</b> dans <i>dir</i>. Si aucun mod<6F>le n'est pr<70>cis<69>, un mod<6F>le de <b>*.tcl</b> sera suppos<6F>. Par exemple, la commande
<br>&nbsp;&nbsp;&nbsp;<b>auto_mkindex foo *.tcl</b>
<br>lira tout les fichiers<b>.tcl</b> dans le sous-r<>pertoire <b>foo</b> et g<>n<EFBFBD>rera un nouveau fichier d'index <b>foo/tclIndex</b>.
<br><b>Auto_mkindex</b> analyse les scripts Tcl en les &quot;sourcant&quot; dans un interpr<70>teur esclave et en interceptant les commandes proc et namespace qui sont ex<65>cut<75>es Des extensions peuvent utiliser le package (non document<6E>) <b>auto_mkindex_parser</b> pour d<>clarer d'autres commandes qui peuvent collaborer avec auto_load index. Vous pourrez parcourir auto.tcl pour voir comment cela fonctionne.
<br><b>Auto_mkindex_old</b> analyse les scripts Tcl d'une mani<6E>re relativement rustique s'il existe une ligne qui contient le mot <A HREF="147.htm"><b>proc</b></A> en premiers caract<63>res alors c'est suppos<6F> <20>tre une d<>finition de fonction et le mot suivant de la ligne est interpr<70>t<EFBFBD> comme le nom de la fonction. Les d<>finitions de fonction qui n'apparaissent de cette mani<6E>re (ex. elles ont des espaces avant <A HREF="147.htm"><b>proc</b></A>) ne seront pas index<65>es. Si votre script contient du code &quot;dangereux&quot;, tel que du code d'initialisation globale ou des noms de fonction avec des caract<63>res sp<73>ciaux comme <b>&#36;</b>, <A HREF="24.htm"><b>*</b></A>, <b>&#91;</b> ou <b>]</b>, il sera plus sur d'utiliser <b>auto_mkindex_old</b>.
</DD>
<DT><br><b>auto_reset</b></DT><DD>D<EFBFBD>truit toute l'information mise en cache par <b>auto_execok</b> et <b>auto_load</b>. Cette information sera relue <20> partir du disque la prochaine fois que c'est n<>cessaire. <b>Auto_reset</b> efface aussi toutes fonctions list<73>es dans l'index auto_load, ainsi une copie r<>cente sera charg<72>e la fois suivante qu'elles seront utilis<69>es.
</DD>
<DT><br><b>auto_qualify </b><i>command namespace</i>
</DT><DD>Calcule une liste de noms pleinement qualifi<66>s pour <i>command</i>. Cette liste refl<66>te le chemin qu'un interpr<70>teur standard Tcl suit pour la recherche de commande: d'abord il cherche la commande dans le namespace courant, et ensuite dans le namespace global. Conform<72>ment, si <i>command</i> est relatif et que <i>namespace</i> n'est pas <b>::</b>, la liste renvoy<6F>e a deux <20>l<EFBFBD>ments <i>command</i> visible par <i>namespace</i>, comme si c'<27>tait une commande dans le <i>namespace</i> namespace; et <i>command</i> comme si c'<27>tait une commande dans le namespace global. Autrement, si <i>command</i> est absolue (elle commence par <b>::</b>), ou bien que <i>namespace</i> est <b>::</b>, la liste contient seulement <i>command</i> comme si c'etait une commande dans le namespace global.
<br><b>Auto_qualify</b> est utilis<69> par les auto-loading facilit<69>s en Tcl, autant pour produire des index auto-loading tel que <i>pkgIndex.tcl</i>, que pour effectuer l'auto-loading des fonctions <20> l'ex<65>cution.
</DD>
<DT><br><b>tcl_findLibrary </b><i>basename version patch initScript enVarName varName</i>
</DT><DD>Ceci est une fonction de recherche standard <20> utiliser par les extensions pendant leur initialisation. Elles appellent cette fonction pour rechercher leur biblioth<74>que de scripts dans plusieurs r<>pertoires standard. Le dernier composant du nom de r<>pertoire de la biblioth<74>que est normalement <i>basenameversion</i> (ex., tk8.0), mais il pourra <20>tre &quot;library&quot; quand il est situ<74> dans les hi<68>rarchies de construction. Le fichier <i>initScript</i> sera &quot;sourc<EFBFBD>&quot; dans l'interpr<70>teur une fois qu'il est trouv<75>. Le r<>pertoire dans lequel ce fichier est trouv<75> est stock<63> dans la variable globale <i>varName</i>. Si cette variable est d<>j<EFBFBD> d<>finie (ex., par du code C pendant l'initialisation de l'application) alors aucune recherche n'est effectu<74>e. Autrement la recherche se fait dans ces r<>pertoires: le r<>pertoire nomm<6D> par la variable d'environnement <i>enVarName</i>; relatif au r<>pertoire biblioth<74>que Tcl; relatif au fichier ex<65>cutable dans l'installation standard (r<>pertoire bin ou bin/<i>arch)</i>; relatif au fichier ex<65>cutable dans l'arbre de construction courant; relatif au fichier ex<65>cutable dans un arbre de construction parall<6C>le.
</DD>
<DT><br><b>parray </b><i>arrayName</i>
</DT><DD>Affiche sur la sortie standard les noms et valeurs de tous les <20>l<EFBFBD>ments dans le tableau <i>arrayName</i>. <b>ArrayName</b> doit <20>tre un tableau accessible <20> l'appelant de <b>parray</b>. Il peut <20>tre soit local ou global.
</DD>
<DT><br><b>tcl_endOfWord </b><i>str start</i>
</DT><DD>Renvoie l'index du premier emplacement de fin-de-mot qui se trouve apr<70>s un index de d<>part <i>start</i> dans la cha<68>ne <i>str</i>. Un emplacement de fin-de-mot est d<>fini pour <20>tre le premier caract<63>re non-mot suivant le premier caract<63>re mot apr<70>s le point de d<>part. Renvoie -1 si il n'y a plus d'emplacement fin-de-mot apr<70>s le point de d<>part. Voir la description de <b>tcl_wordchars</b> et <b>tcl_nonwordchars</b> ci-dessous pour plus de d<>tails sur comment Tcl d<>termine quels caract<63>res sont des caract<63>re mots.
</DD>
<DT><br><b>tcl_startOfNextWord </b><i>str start</i>
</DT><DD>Renvoie l' index du premier emplacement d<>but-de-mot qui se trouve apr<70>s un index de d<>part <i>start</i> dans la cha<68>ne <i>str</i>. Un emplacement d<>but-de-mot est d<>fini pour <20>tre le premier caract<63>re mot suivant un caract<63>re non-mot. Renvoie -1 si il n'y a plus d'emplacement de d<>but-de-mot apr<70>s le point de d<>part.
</DD>
<DT><br><b>tcl_startOfPreviousWord </b><i>str start</i>
</DT><DD>Renvoie l'index du premier emplacement d<>but-de-mot qui se trouve avant un index de d<>part <i>start</i> dans la cha<68>ne <i>str</i>. Renvoie -1 si il n'y a plus d'emplacement de d<>but-de-mot apr<70>s le point de d<>part.
</DD>
<DT><br><b>tcl_wordBreakAfter </b><i>str start</i>
</DT><DD>Renvoie l'index de la premi<6D>re limite de mot apr<70>s l'index de d<>part <i>start</i> dans la cha<68>ne <i>str</i>. Renvoie -1 si il n'y a pas de plus limites apr<70>s le point de d<>part dans la cha<68>ne donn<6E>e L'index renvoy<6F> se r<>f<EFBFBD>re au second caract<63>re de la paire qui comporte une limite.
</DD>
<DT><br><b>tcl_wordBreakBefore </b><i>str start</i>
</DT><DD>Renvoie l'index de la premi<6D>re limite de mot avant l'index de d<>part <i>start</i> dans la cha<68>ne <i>str</i> Renvoie -1 si il n'y a pas de plus limites avant le point de d<>part dans la cha<68>ne donn<6E>e. L'index renvoy<6F> se r<>f<EFBFBD>re au second caract<63>re de la paire qui comporte une limite.
</DD>
</DL>
</div><br>
<div><b>VARIABLES</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les variables globales suivantes sont d<>finies ou utilis<69>es par les fonctions dans la biblioth<74>que Tcl:
<DL>
<DT><b>auto_execs</b>
</DT><DD>Utilis<EFBFBD>e par <b>auto_execok</b> pour enregistrer si des commandes particuli<6C>res existent comme fichiers ex<65>cutables.
</DD>
<DT><br><b>auto_index</b>
</DT><DD>Utilis<EFBFBD>e par <b>auto_load</b> pour sauvegarder l'information index lue <20> partir du disque.
</DD>
<DT><br><b>auto_noexec</b>
</DT><DD>Si fix<69>e <20> une quelconque valeur, alors <A HREF="174.htm"><b>unknown</b></A> ne tentera pas &quot; d'auto-exec &quot; quelconques commandes.
</DD>
<DT><br><b>auto_noload</b>
</DT><DD>Si fix<69>e <20> une quelconque valeur, alors <A HREF="174.htm"><b>unknown</b></A> ne tentera pas &quot; d'auto-load &quot; quelconque commandes.
</DD>
<DT><br><b>auto_path</b>
</DT><DD>Si fix<69>e, alors doit contenir une liste Tcl valide indiquant les r<>pertoires <20> rechercher pendant les op<6F>rations auto-load. Cette variable est initialis<69>e au d<>marrage pour contenir, dans l'ordre: les r<>pertoires list<73>s dans la variable d'environnement TCLLIBPATH, le r<>pertoire nomm<6D> par la variable &#36;tcl_library, le r<>pertoire parent de &#36;tcl_ library, les r<>pertoires list<73>s dans la variable &#36;tcl_pkgPath.
</DD>
<DT><br><b>env(TCL_LIBRARY)</b>
</DT><DD>Si fix<69>e, alors sp<73>cifie l'emplacement du r<>pertoire contenant la biblioth<74>que des scripts (la valeur de cette variable sera assign<67>s <20> <b>tcl_library</b> variable et therefore renvoy<6F> par la commande <b>info library</b>). Si cette variable n'est pas fix<69>e alors une valeur par d<>faut est utilis<69>e.
</DD>
<DT><br><b>env(TCLLIBPATH)</b>
</DT><DD>Si fix<69>e, alors doit contenir une liste Tcl valide donnant les r<>pertoires <20> rechercher pendant les op<6F>rations auto-load. Les r<>pertoires doivent <20>tre sp<73>cifi<66>s en format Tcl , en utilisant &quot;/&quot; comme s<>parateur de chemin, ind<6E>pendemment de la plateforme. Cette variable est seulement utilis<69>e <20> l'initialisation de la variable <b>auto_path</b> .
</DD>
<DT><br><b>tcl_nonwordchars</b>
</DT><DD>Cette variable contient une expression rationelle qui est utilis<69> par les routines comme <b>tcl_endOfWord</b> pour identifier si un caract<63>re fait partie d'un mot ou non. Si le mod<6F>le correspond <20> un caract<63>re, le caract<63>re est consider<65> comme caract<63>re non-mot. Sur les plateformes Windows, les espaces, tabulations, et saut de lignes sont consider<65>s comme caract<63>res non-mots. Sous Unix, tout sauf les chiffres, lettres et underscores sont consider<65>s comme caract<63>re non-mots.
</DD>
<DT><br><b>tcl_wordchars</b>
</DT><DD>Cette variable contient une expression rationelle qui est utilis<69>e par les routines comme <b>tcl_endOfWord</b> pour identifier si un caract<63>re fait partie d'un mot ou non. Si le mod<6F>le correspond <20> un caract<63>re, le caract<63>re est consider<65> comme caract<63>re d'un mot. Sur les plateformes Windows,les mots comportent tout caract<63>re qui n'est pas un espace, une tabulation, ou une nouvelle ligne. Sous Unix, les mots comportent des chiffres, lettres ou underscores.
</DD>
<DT><br><b>unknown_pending</b>
</DT><DD>Utilis<EFBFBD>e par <A HREF="174.htm"><b>unknown</b></A> pour enregistrer la commande(s) recherch<63>e. Elle est utilis<69>e pour detecter les erreurs o<> <A HREF="174.htm"><b>unknown</b></A> s'appelle r<>cursivement dans une boucle infinie. La variable est d<>truite avant que <A HREF="174.htm"><b>unknown</b></A> retourne.
</DD>
</DL>
</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><A HREF="150.htm">re_syntax</A>(n) </div><br>
<div>Derni<EFBFBD>re r<>vision: 8.0</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="128.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="130.htm"><b>Suivant</b></A></div>
</BODY></HTML>

18
hlp/fr/tcl/lindex.htm Normal file
View File

@@ -0,0 +1,18 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>lindex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">lindex - R<>cup<75>re un <20>l<EFBFBD>ment d'une liste
</div> <br>
<div><b>SYNTAXE</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>lindex </b><i>list index</i>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande traite <i>list</i> comme une liste Tcl et renvoie son <i>index</i>'i<>me <20>l<EFBFBD>ment&nbsp; (0 se r<>f<EFBFBD>re au premier <20>l<EFBFBD>ment de la liste). En extrayant l'<27>l<EFBFBD>ment, <i>lindex</i> observe les m<>me r<>gles concernant les accolades, guillemets et backslashes que l'interpr<70>teur de commande Tcl; n<>anmoins, les substitution de variable&nbsp; et de commandes ne se produisent pas. Si <i>index</i> est n<>gatif ou sup<75>rieur ou <20>gal au nombre d'<27>l<EFBFBD>ments de <i>value</i>, alors une cha<68>ne vide est renvoy<6F>e. Si <i>index</i> a la valeur <b>end</b>, il se r<>f<EFBFBD>re au dernier <20>l<EFBFBD>ment de la liste, et <b>end-</b><i>integer</i> se r<>f<EFBFBD>re au dernier <20>l<EFBFBD>ment de la liste moins l'offset entier sp<73>cifi<66>&nbsp; </div><br>
<div>Derni<EFBFBD>re r<>vision: 8.2</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="129.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="131.htm"><b>Suivant</b></A></div>
</BODY></HTML>

18
hlp/fr/tcl/linsert.htm Normal file
View File

@@ -0,0 +1,18 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>linsert&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">linsert <20> Ins<6E>re des <20>l<EFBFBD>ments dans une liste
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>linsert </b><i>list index element </i>?<i>element element ...</i>?
</div> <br>
<div><b>DESCRIPTION</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande produit une nouvelle liste <20> partir de&nbsp; <i>list</i> en ins<6E>rant tous les arguments <i>element</i> juste avant l'<27>l<EFBFBD>ment <i>index</i> de <i>list</i>. Chaque argument <i>element</i> deviendra un <20>l<EFBFBD>ment s<>par<61> de la nouvelle liste. Si <i>index</i> est inf<6E>rieur ou <20>gal <20> z<>ro, alors les nouveaux <20>l<EFBFBD>ments sont ins<6E>r<EFBFBD>s au d<>but de la liste. Si <i>index</i> a la valeur <b>end</b>, ou s'il est sup<75>rieur ou <20>gal au nombre d'<27>l<EFBFBD>ments dans la liste, alors les nouveaux <20>l<EFBFBD>ments sont ajout<75>s <20> la liste. <b>end-</b><i>integer</i> se r<>f<EFBFBD>re au dernier <20>l<EFBFBD>ment dans la liste moins l'offset entier sp<73>cifi<66> </div><br>
<div>Derni<EFBFBD>re r<>vision: 8.2</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="130.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="132.htm"><b>Suivant</b></A></div>
</BODY></HTML>

23
hlp/fr/tcl/list.htm Normal file
View File

@@ -0,0 +1,23 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>list&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">liste - Cr<43>e une liste
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>list </b>?<i>arg arg ...</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande renvoie une liste comprenant tout les <i>arg</i>s, ou une cha<68>ne vide si aucun <i>arg</i>s n'est sp<73>cifi<66>. Les accolades et backslashes sont ajout<75>s comme n<>cessaire, ainsi la commande <b>index</b> peut <20>tre employ<6F>e sur le r<>sultat pour r<>extraire les arguments originaux, et <A HREF="104.htm"><b>eval</b></A> peut <20>tre aussi employ<6F>e pour ex<65>cuter la liste r<>sultante, avec <i>arg1</i> comme nom de la commande et les autres <i>arg</i>s comme arguments. <b>List</b> produit des r<>sultats l<>g<EFBFBD>rement diff<66>rents de <A HREF="98.htm"><b>concat</b></A> ; <A HREF="98.htm"><b>concat</b></A> enl<6E>ve un niveau de regroupement avant de former la liste, alors que <b>list</b> fonctionne directement <20> partir des arguments originaux. Par exemple, la commande </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>list a b &#123;c d e} &#123;f &#123;g h}}</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">renverra </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>a b &#123;c d e} &#123;f &#123;g h}}</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">alors que <A HREF="98.htm"><b>concat</b></A> avec les m<>mes arguments renverra </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>a b c d e f &#123;g h}</b></div>
<div> </div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="131.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="133.htm"><b>Suivant</b></A></div>
</BODY></HTML>

18
hlp/fr/tcl/llength.htm Normal file
View File

@@ -0,0 +1,18 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>llength&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">llength - Compte le nombre d'<27>l<EFBFBD>ments dans une liste
</div> <br>
<div><b>SYNTAXE</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>llength </b><i>list</i>
</div> <br>
<div><b>DESCRIPTION</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">Traite <i>list</i> en tant que liste et renvoie une cha<68>ne d<>cimale en donnant le nombre d'<27>l<EFBFBD>ments </div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="1322.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="134.htm"><b>Suivant</b></A></div>
</BODY></HTML>

43
hlp/fr/tcl/load.htm Normal file
View File

@@ -0,0 +1,43 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>load&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">load - Charge du code machine et initialise de nouvelles commandes.
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>load </b><i>fileName</i> <br>
<b>load </b><i>fileName packageName</i> <br>
<b>load </b><i>fileName packageName interp</i>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande charge du code binaire <20> partir d'un fichier dans l'espace d'adressage de l'application et appelle une fonction d'initialisation dans le package pour l'incorporer dans un interpr<70>teur. <i>fileName</i> est le nom du fichier contenant le code sa forme exacte varie d'un syst<73>me <20> l'autre mais le plus souvent c'est une biblioth<74>que partag<61>e, tel un fichier<b>.so</b> sous Solaris ou une DLL sous Windows. <i>packageName</i> est le nom du package, et est utilis<69> pour calculer le nom d'une fonction d'initialisation. <i>interp</i> est le nom du chemin de l'interpr<70>teur dans lequel charger le package (voyez la page de manuel <A HREF="126.htm"><b>interp</b></A> pour les d<>tails); si <i>interp</i> est omis, il devient l'interpr<70>teur dans lequel la commande <b>load</b> a <20>t<EFBFBD> appel<65>e. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Une fois le fichier charg<72> dans l'espace d'adressage de l'application, une des deux fonction d'initialisations sera appel<65>e dans le nouveau code. Typiquement la fonction d'initialisation ajoute de nouvelles commandes <20> un interpr<70>teur Tcl. Le nom de la fonction d'initialisation est d<>termin<69> par <i>packageName</i> et si le l'interpr<70>teur cible est s<>r ou non Pour les interpr<70>teurs normaux le nom de la fonction d'initialisation aura le forme <i>pkg</i><b>_Init</b>, o<> <i>pkg</i> est le m<>me que <i>packageName</i> except<70> que la premi<6D>re lettre est convertie en majuscule et tout autre lettres sont converti en minuscule Par exemple, si <i>packageName</i> est <b>foo</b> ou <b>FOo</b>, le nom de la fonction d'initialisation sera <b>Foo_Init</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si l'interpr<70>teur cible est un interpr<70>teur s<>r, alors le nom de la fonction d'initialisation sera <i>pkg</i><b>_SafeInit</b> au lieu de of <i>pkg</i><b>_Init</b>. La fonction <i>pkg</i><b>_SafeInit</b> sera <20>crite soigneusement, ainsi elle initialisera l'interpr<70>teur s<>r avec seulement les fonctionalit<69>s fournies par le package s<>curis<69> pour <20>tre utilis<69> par du code inconnu. Pour plus information sur Safe-Tcl, voyez la page de manuel<b> safe</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La fonction d'initialisation doit correspondre au prototype suivant: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">typedef int Tcl_PackageInitProc(Tcl_Interp *<i>interp</i>);</div>
<div ALIGN="LEFT" style="margin-left: 51px;">L'argument <i>interp</i> identifie l'interpr<70>teur dans lequel le package est charg<72> La fonction d'initialisation retourne <b>TCL_OK</b> ou <b>TCL_ERROR</b> pour indiquer si oui ou non elle s'est compl<70>t<EFBFBD>e avec succ<63>s; dans le cas d'une erreur elle doit fixer le r<>sultat de l'interpr<70>teur <20> pointer vers un message d'erreur. Le r<>sultat de la commande <b>load</b> sera le r<>sultat renvoy<6F> par la fonction d'initialisation. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Le chargement d'un fichier doit <20>tre fait seulement une fois pour chaque <i>fileName</i> dans une application. Si un <i>fileName</i> donn<6E> est charg<72> dans plusieurs interpr<70>teurs, alors le premier <b>load</b> chargera le code et appellera la fonction d'initialisation; le suivant <b>load</b> appelera la fonction d'initialisation sans recharger le code. Il n'est pas possible de d<>charger ou recharger un package. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>load</b> supporte aussi les packages statiquement li<6C>s <20> l'application, si ces packages ont <20>t<EFBFBD> declar<61>s en appelant la fonction<A HREF="74.htm"><b> Tcl_StaticPackage</b></A>. Si <i>fileName</i> est une cha<68>ne vide, alors <i>packageName</i> doit <20>tre sp<73>cifi<66>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si <i>packageName</i> est omis ou sp<73>cifi<66> comme cha<68>ne vide, Tcl essaie de deviner le nom du package. Ceci peut <20>tre fait diff<66>remment sur diff<66>rentes plateformes. La m<>thode divinatoire par d<>faut, qui est utilis<69> sur plusieurs plateformes UNIX, est de prendre le dernier <20>l<EFBFBD>ment de <i>fileName</i>, enlever les premier trois caract<63>res si ils sont <b>lib</b>, et utiliser tout caract<63>res suivants alphab<61>tiques et underline comme le nom du module. Par exemple, la commande <b>load </b><b>libxyz4.2.so</b> utilise le nom de module <b>xyz</b> et la commande <b>load bin/last.so &#123;}</b> utilise le nom de module <b>last</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si <i>fileName</i> est une cha<68>ne vide, alors <i>packageName</i> doit <20>tre sp<73>cifi<66>. La commande <b>load</b> recherche en premier un package charg<72> statiquement (qui a <20>t<EFBFBD> declar<61> en appelant la fonction<A HREF="74.htm"><b> Tcl_StaticPackage</b></A>) par son nom; s'il en trouve un, il est utilis<69>. Autrement, la commande <b>load</b> recherche un package charg<72> dynamiquement par son nom, et l'utilise si trouv<75> Si plusieurs fichiers diff<66>rents ont <20>t<EFBFBD> <b>load</b>ed avec diff<66>rentes versions du package, Tcl prend le fichier qui a <20>t<EFBFBD> charg<72> en premier
</div><br>
<div><b>PROBLEMES DE PORTABILITE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">
<DL>
<DT><b>Windows</b></DT><DD>Quand un load <20>choue avec une erreur &quot;library not found&quot;, il est aussi possible qu'une n'ait <20>t<EFBFBD> trouv<75>e Pour voir les biblioth<74>que d<>pendante, tapez &quot;dumpbin -imports &lt;dllname&gt;&quot; dans une console DOS pour voir les import de la biblioth<74>que. Quand vous chargez une DLL dans le r<>pertoire courant, Windows ignorera &quot;./&quot; comme sp<73>cificateur de chemin et utilisera une recherche heuristique pour trouver la DLL. Pour <20>viter cela, chargez la DLL avec
<br>&nbsp;&nbsp;&nbsp; load &#91;file join &#91;pwd] mylib.DLL]
</DD>
</DL>
</div>
<div><b>BUGS</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Si le m<>me fichier est <b>load</b><EFBFBD> par diff<66>rent <i>fileName</i>s, il sera charg<72> plusieurs fois dans l'espace d'adressage du processus . Ce comportement peut varier d'un syst<73>me <20> un autre (certains syst<73>mes peuvent detecter le chargement redondant, d'autres non) <br>
</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><A HREF="125.htm"><b>info</b></A><b> sharedlibextension</b>, Tcl_StaticPackage, s<>r(n)</div><br>
<div>Derni<EFBFBD>re r<>vision: 7.5</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="133.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="135.htm"><b>Suivant</b></A></div>
</BODY></HTML>

18
hlp/fr/tcl/lrange.htm Normal file
View File

@@ -0,0 +1,18 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>lrange&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">lrange - Retourne&nbsp; un ou plusieurs <20>l<EFBFBD>ments adjacents d'une liste
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>lrange </b><i>list first last</i>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><i>List</i> doit <20>tre une liste Tcl valide. Cette commande renverra une nouvelle liste consistant des <20>l<EFBFBD>ments <i>first</i> <20> <i>last</i>, inclus. <i>First</i> ou <i>last</i> peuvent <20>tre <b>end</b> (ou quelconque de ses abr<62>viations) pour se r<>f<EFBFBD>rer au dernier <20>l<EFBFBD>ment de la liste. Si <i>first</i> est inf<6E>rieur <20> z<>ro, il est trait<69> comme z<>ro. Si <i>last</i> est sup<75>rieur <20> ou <20>gal au nombre d'<27>l<EFBFBD>ments dans la liste, alors il est trait<69> comme <b>end</b>. Si <i>first</i> est sup<75>rieur <20> <i>last</i> alors une cha<68>ne vide est renvoy<6F>e. Note: &quot;<b>lrange</b><i>list first first</i>&quot; ne produit pas toujours le m<>me r<>sultat que &quot;<A HREF="130.htm"><b>lindex</b></A> <i>list first</i>&quot; (bien que souvent le fait pour les champs qui ne sont pas entour<75>s d'accolades); il produit , n<>anmoins, exactement le m<>me r<>sultat que &quot;<b>list &#91;lindex</b><i>list first</i><b>]</b>&quot; </div><br>
<div>Derni<EFBFBD>re r<>vision: 7.4</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="134.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="136.htm"><b>Suivant</b></A></div>
</BODY></HTML>

18
hlp/fr/tcl/lreplace.htm Normal file
View File

@@ -0,0 +1,18 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>lreplace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">lreplace - Remplace les <20>l<EFBFBD>ments d'une liste avec de nouveaux <20>l<EFBFBD>ments
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>lreplace </b><i>list first last </i>?<i>element element ...</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>lreplace</b> retourne une nouvelle liste form<72>e en rempla<6C>ant un ou plusieurs <20>l<EFBFBD>ments de <i>list</i> avec les arguments<i> element</i>. <i>first</i> et <i>last</i> sp<73>cifient le premier et dernier index de l'intervalle d'<27>l<EFBFBD>ments <20> remplacer 0 se r<>f<EFBFBD>re au premier <20>l<EFBFBD>ment de la liste, et <b>end</b> (ou toutes ses abr<62>viations) peut <20>tre employ<6F> pour se r<>f<EFBFBD>rer au dernier <20>l<EFBFBD>ment de la liste. Si <i>list</i> est vide, alors <i>first</i> et <i>last</i> sont ignor<6F>s. Si <i>first</i> est inf<6E>rieur <20> z<>ro, il est consider<65> se r<>f<EFBFBD>rer au premier <20>l<EFBFBD>ment de la liste. Pour les listes non-vides, l'<27>l<EFBFBD>ment indiqu<71> par <i>first</i> doit exister. Si <i>last</i> est inf<6E>rieur <20> z<>ro mais sup<75>rieur <20> <i>first</i>, alors tout <20>l<EFBFBD>ment sp<73>cifi<66> sera ajout<75> <20> la liste. Si <i>last</i> est inf<6E>rieur <20> <i>first</i> alors aucun <20>l<EFBFBD>ments ne sont effac<61>s; les nouveaux <20>l<EFBFBD>ments sont simplement ins<6E>r<EFBFBD>s avant <i>first</i>. Les arguments <i>element</i> sp<73>cifient z<>ro ou plusieurs nouveaux arguments <20> ajouter <20> la liste <20> la place de ceux qui ont <20>t<EFBFBD> effac<61>s. Chaque argument <i>element</i> deviendra un <20>l<EFBFBD>ment s<>par<61> de la liste. Si aucun argument <i>element</i> n'est sp<73>cifi<66>, alors les <20>l<EFBFBD>ments entre <i>first</i> et <i>last</i> sont simplement effac<61>s. Si <i>list</i> est vide, tous les arguments <i>element</i> sont ajout<75>s <20> fin de la liste. </div><br>
<div>Derni<EFBFBD>re r<>vision: 7.4</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="135.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="137.htm"><b>Suivant</b></A></div>
</BODY></HTML>

28
hlp/fr/tcl/lsearch.htm Normal file
View File

@@ -0,0 +1,28 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>lsearch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">lsearch - Recherche un <20>l<EFBFBD>ment particulier dans une liste.
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>lsearch </b>?<i>mode</i>? <i>list pattern</i>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande recherche les <20>l<EFBFBD>ments de <i>list</i> pour voir si l'un d'eux correspond <20> <i>pattern</i>. Si c'est le cas, la commande retourne l'index du premier <20>l<EFBFBD>ment correspondant. Sinon, la commande retourne <b>-1</b>. L'argument <i>mode</i> indique comment les <20>l<EFBFBD>ments de la liste doivent correspondre <20> <i>pattern</i> et il doit avoir une des valeurs suivantes:
<DL>
<DT><b>-exact</b></DT><DD>L'<27>l<EFBFBD>ment de la liste doit contenir exactement la m<>me cha<68>ne que <i>pattern</i>.
</DD>
<DT><br><b>-glob</b></DT><DD><i>Pattern</i> est un mod<6F>le glob-style qui est compar<61> <20> chaque <20>l<EFBFBD>ment de liste en utilisant les m<>me r<>gles que la commande <b>string match</b> .
</DD>
<DT><br><b>-regexp</b></DT><DD><i>Pattern</i> est trait<69> comme un expression rationelle et compar<61> <20> chaque <20>l<EFBFBD>ment de laliste en utilisant les r<>gles d<>crites dans la page de r<>f<EFBFBD>rence<A HREF="150.htm"><b> re_syntax</b></A>.
</DD>
</DL>
</div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Si <i>mode</i> est omis alors il est par d<>faut de <b>-</b><A HREF="119.htm"><b>glob</b></A> </div><br>
<div>Derni<EFBFBD>re r<>vision: 7.0</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="136.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="138.htm"><b>Suivant</b></A></div>
</BODY></HTML>

47
hlp/fr/tcl/lsort.htm Normal file
View File

@@ -0,0 +1,47 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>lsort&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">lsort - Trie les <20>l<EFBFBD>ments d'une liste
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>lsort </b>?<i>options</i>? <i>list</i>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande trie les <20>l<EFBFBD>ments de <i>list</i>, retournant une nouvelle liste tri<72>e. L'impl<70>mentation de la commande <b>lsort</b> utilise l'algorithme merge-sort qui est un tri stable ayant pour performance caract<63>ristique O(n log n). </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Par d<>faut un tri ASCII est utilis<69> avec le r<>sultat renvoy<6F> en ordre ascendant N<>anmoins, quelconque des options suivantes peut <20>tre sp<73>cifi<66>e avant <i>list</i> pour contr<74>ler le processusde tri (les abr<62>viations uniques sont accept<70>es):
<DL>
<DT><b>-ascii</b></DT><DD>Utilise comparaison de cha<68>ne avec tri ASCII. Par d<>faut.
</DD>
<DT><br><b>-dictionary</b></DT><DD>Utilise une comparaison dictionary-style. Identique <20> <b>-ascii</b> except<70> que (a) la casse est ignor<6F>e sauf pour diff<66>rencier et que (b) si deux cha<68>nes contiennent des nombres, les nombres sont compar<61>s comme des entiers, pas des caract<63>res Par exemple, en mode<b> </b><b>-dictionary</b>, <b>bigBoy</b> est entre <b>bigbang</b> et <b>bigboy</b>, et <b>x10y</b> entre <b>x9y</b> et <b>x11y</b>.
</DD>
<DT><br><b>-integer</b></DT><DD>Convertit les <20>l<EFBFBD>ments de la liste en entiers et utilise la comparaison enti<74>re.
</DD>
<DT><br><b>-real</b></DT><DD>Convertit les <20>l<EFBFBD>ments de la liste en valeurs flottantes et utilise la comparaison flottante.
</DD>
<DT><br><b>-command </b><i>command</i>
</DT><DD>Utilise <i>command</i> comme commande de comparaison. Pour comparer deux <20>l<EFBFBD>ments, <20>value un script Tcl consistant de <i>command</i> avec les deux <20>l<EFBFBD>ments ajout<75>s comme arguments suppl<70>mentaires. Le script renverra un entier inf<6E>rieur <20>, <20>gal <20>, ou sup<75>rieur <20> z<>ro si le premier <20>l<EFBFBD>ment est consider<65> inf<6E>rieur <20>, <20>gal <20>, ou sup<75>rieur au second, respectivement.
</DD>
<DT><br><b>-increasing</b>
</DT><DD>Trie la liste en ordre croissant (&quot;plus petit&quot; articles en premier). Par d<>faut.
</DD>
<DT><br><b>-decreasing</b>
</DT><DD>Trie la liste en ordre d<>croissant (&quot;plus grand &quot; articles en premier).
</DD>
<DT><br><b>-index </b><i>index</i>
</DT><DD>Si cette option est sp<73>cifi<66>e, chacun des <20>l<EFBFBD>ments de <i>list</i> doit lui-m<>me <20>tre une sous liste Tcl correcte. Au lieu de tris bas<61>s sur des sous listes compl<70>tes, <b>lsort</b> extrait l'<i>index</i>'i<>me <20>l<EFBFBD>ment de chaque sous liste et trie en se basant sur l'<27>l<EFBFBD>ment indiqu<71>. Le mot-cl<63> <b>end</b> est autoris<69> pour l'<i>index</i> <20> trier sur le dernier <20>l<EFBFBD>ment de la sous-liste. Par exemple,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lsort -integer -index 1 &#123;&#123;First 24} &#123;Second 18} &#123;Third 30}}
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retourne <b>&#123;Second 18} &#123;First 24} &#123;Third 30}</b>.
<br>Cette option est beaucoup plus efficace que l'utilisation de <b>-command</b> pour atteindre le m<>me but.
</DD>
<DT><br><b>-unique</b></DT><DD><br><b>-unique</b>Si cette option est sp<73>cifi<66>e, alors seulement le dernier jeu d'<27>l<EFBFBD>ments dupliqu<71>s trouv<75> dans la liste sera retenu. Notez que les doublons sont d<>termin<69>s relativement <20> la comparaison utilis<69>e dans le tri. Ainsi si <i>-index 0</i> est utilis<69>, <b>&#123;1 a}</b> et <b>&#123;1 b}</b> seront consider<65>s dupliqu<71>s et seulement le second <20>l<EFBFBD>ment, <b>&#123;1 b}</b>, sera retenu. </DD>
</DL>
</div>
<br>
<div>Derni<EFBFBD>re r<>vision: 8.3</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="137.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="139.htm"><b>Suivant</b></A></div>
</BODY></HTML>

43
hlp/fr/tcl/memory.htm Normal file
View File

@@ -0,0 +1,43 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>memory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">memory - Contr<74>le les possibilit<69>s Tcl de debugging m<>moire.
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>memory </b><i>option </i>?<i>arg arg ...</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>memory</b> donne au developpeur Tcl le contr<74>le des possibilit<69>s Tcl de debugging m<>moire La commande memory a plusieurs sous-options, qui sont d<>crites ci-dessous Elle sont seulement disponibles quand Tcl a <20>t<EFBFBD> compil<69> avec le debugging m<>moire activ<69> (quand <A HREF="77.htm"><b>TCL_MEM_DEBUG</b></A> est d<>fini <20> la compilation ).
<DL>
<DT><b>memory info</b>
</DT><DD>Produit un rapport contenant le total allou<6F> et lib<69>re les blocs allou<6F>s depuis que Tcl <20> <20>t<EFBFBD> lanc<6E>(le nombre courant d'appels <20> <b>ckalloc</b> auquel ne correspond pas un appel <20> <b>ckfree</b>), les octets courant allou<6F>s, et le nombre maximum de blocs et d'octets allou<6F>s.
</DD>
<DT><br><b>memory trace &#91;on|off]</b>
</DT><DD>Active/d<>sactive le tra<72>age m<>moire Quand le tra<72>age m<>moire est activ<69>, tout appel de <b>ckalloc</b> cause l'<27>criture d'une ligne de trace vers <i>stderr</i>, consistant du mot <i>ckalloc</i>, suivi par l'adresse renvoy<6F>e, le total de m<>moire allou<6F>e, et le nom de fichier C et num<75>ro de ligne de le code qui a effectu<74> l'allocation Par exemple:
<br>ckalloc 40e478 98 tclProc.c 1406
<br>Les appels <20> <b>ckfree</b> sont trac<61>s de la m<>me mani<6E>re.
</DD>
<DT><br><b>memory validate &#91;on|off]</b>
</DT><DD>Active/d<>sactive la validation m<>moire. Quand la validation m<>moire est activ<69>e, <20> tout appel de <b>ckalloc</b> ou <b>ckfree</b>, les zone gard<72>es sont v<>rifi<66>es pour toute pi<70>ce de m<>moire couramment existante qui a <20>t<EFBFBD> allou<6F>e par <b>ckalloc</b>. Ceci a un grand impact sur la performance et doit seulement <20>tre utilis<69> quand des probl<62>mes d'<27>crasement sont s<>rieusement suspect<63>s. L'avantage d'activer la validation m<>moire est qu'une zone gard<72>e <20>cras<61>e peut <20>tre d<>tect<63>e au premier appel de <b>ckalloc</b> ou <b>ckfree</b> suivant l'<27>crasement, plut<75>t que quand la m<>moire sp<73>cifique avec la zone gard<72>e(s) ecras<61>e(s) est lib<69>r<EFBFBD>e, ce qui peut arriver longtemps apr<70>s l'<27>crasement.
</DD>
<DT><br><b>memory trace_on_at_malloc</b> <i>count</i>
</DT><DD>Active le tra<72>age m<>moire apr<70>s <i>count</i> <b>ckalloc</b> aient <20>t<EFBFBD> effectu<74>s. Par exemple, si vous tapez <b>memory trace_on_at_malloc 100</b>, apr<70>s le 100<30>me appel de <b>ckalloc</b>, l'information de trace m<>moire sera affich<63>e pour toute allocations et lib<69>ration. Comme il peut y avoir une grande activit<69> m<>moire avant qu'un probl<62>me se produise, un usage judicieux de cette option peut reduire le ralentissement caus<75> par le tra<72>age (et le volume de trace produit), si vous pouvez identifier un nombre d'allocations effectu<74>es avant le probl<62>me. Le nombre courant d'allocations m<>moire qui se sont produites depuis que Tcl a <20>t<EFBFBD> lanc<6E> est <20>crit dans une zone pr<70>serv<72>e des echecs.
</DD>
<DT><br><b>memory break_on_malloc</b> <i>count</i>
</DT><DD>Apr<EFBFBD>s que <i>count</i> allocations aient <20>t<EFBFBD> effectu<74>es, <b>ckalloc</b> emet un message <20> cet effet et qui signale <20>galement qu'il tente de lancer le debugger C Tcl emet alors un signal <i>SIGINT</i> vers lui-m<>me. Si vous ex<65>cutez Tcl sous un debugger C, le debugger doit alors entrer en mode commande.
</DD>
<DT><br><b> memory display</b> <i>file</i>
</DT><DD>Ecrit une liste de toute la m<>moire couramment allou<6F>e dans le fichier sp<73>cifi<66>
</DD>
</DL>
</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">ckalloc, ckfree, Tcl_ValidateAllMemory, Tcl_DumpActiveMemory, TCL_MEM_DEBUG&nbsp; </div><br>
<div>Derni<EFBFBD>re r<>vision: 8.1</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="138.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="140.htm"><b>Suivant</b></A></div>
</BODY></HTML>

117
hlp/fr/tcl/msgcat.htm Normal file
View File

@@ -0,0 +1,117 @@
<HTML><HEAD><TITLE>msgcat</TITLE>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><b><H3>msgcat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</H3></b></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">msgcat - catalogue de messages Tcl
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>::msgcat::mc </b><i>src-string</i> <br>
<b>::msgcat::mclocale </b>?<i>newLocale</i>? <br>
<b>::msgcat::mcpreferences</b> <br>
<b>::msgcat::mcload </b><i>dirname</i> <br>
<b>::msgcat::mcset </b><i>locale src-string </i>?<i>translate-string</i>? <br>
<b>::msgcat::mcunknown </b><i>locale src-string</i>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Le package <b>msgcat</b> fournit un ensemble de fonctions qui peuvent <20>tre utilis<69>es pour g<>rer des interfaces utilisateur multi-linguales. Les cha<68>nes de texte sont d<>finies dans un &quot;catalogue de messages&quot; qui est ind<6E>pendant de l'application, et qui peut <20>tre edit<69> ou localis<69> sans modifier le code source de l'application. Les nouvelles langues ou locales sont fournies en ajoutant un nouveau fichier au catalogue de messages. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">L'usage du catalogue de messages est optionnel pour quelconque application ou package, mais est encourag<61> si l'application ou package souhaite <20>tre pr<70>t pour les applications multi-langues.
</div><br>
<div><b>COMMANDES</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">
<DL>
<DT><b>::msgcat::mc </b><i>src-string</i> ?<i>arg arg ...</i>?
</DT><DD>Renvoie une traduction de <i>src-string</i> en accord avec la locale de l'utilisateur courant. Si des arguments suppl<70>mentaire apr<70>s <i>src-string</i> sont donn<6E>s, la commande <A HREF="117.htm"><b>format</b></A> est utilis<69>e pour substituer les arguments suppl<70>mentaires dans la traduction de <i>src-string</i> <b>::msgcat::mc</b> recherchera les messages d<>finis dans le namespace courant pour une traduction de <i>src-string</i>; si aucun n'est trouv<75>, il recherchera dans le parent du namespace courant, et ainsi de suite jusqu'a ce qu'il atteigne le namespace global. Si aucune cha<68>ne de traduction n'existe, <b>::msgcat::mcunknown</b> est appel<65> et la cha<68>ne renvoy<6F>e par <b>::msgcat::mcunknown</b> est renvoy<6F>e.
<br><b>::msgcat::mc</b> est la fonction principale utilis<69>e pour localiser une application. Au lieu d'utiliser une cha<68>ne Anglaise directement, une application peut passer la cha<68>ne Anglaise au travers de <b>::msgcat::mc</b> et utiliser le r<>sultat. Si une application est <20>crite pour une seule langue de cette fa<66>on, il est facile d'ajouter un support pour des langues suppl<70>mentaires plus tard simplement en d<>finissant une nouvelle entr<74>e de catalogue de messages.
</DD>
<DT><br><b>::msgcat::mclocale </b>?<i>newLocale</i>?
</DT><DD>Cette fonction fixe locale <20> <i>newLocale</i> Si <i>newLocale</i> est omise, la locale courante est renvoy<6F>e, autrement la locale courante est fix<69>e <20> <i>newLocale</i>. La locale initiale est par d<>faut la locale sp<73>cifi<66>e dans l'environnement utilisateur. Voir <b>SPECIFICATIONS LOCALE ET SUBLOCALE </b>ci-dessous pour une description du format cha<68>ne locale.
</DD>
<DT><br><b>::msgcat::mcpreferences</b>
</DT><DD>Renvoie une liste ordonn<6E>e des locales pref<65>r<EFBFBD>es des utilisateurs, bas<61>e sur la sp<73>cification de langue de l'utilisateur. La liste est ordonn<6E>e de la preference la plus sp<73>cifique <20> la moins sp<73>cifique. Si l'utilisateur a sp<73>cifi<66> LANG=en_US_funky, cette fonction retournera &#123;en_US_funky en_US en}.
</DD>
<DT><br><b>::msgcat::mcload </b><i>dirname</i>
</DT><DD>Recherche dans le r<>pertoire sp<73>cifi<66> les fichiers qui correspondent au sp<73>cifications de langue renvoy<6F>es par <b>::msgcat::mcpreferences</b>. Chaque fichier trouv<75> est &quot;sourc<EFBFBD>&quot;. L'extension de fichier est &quot;.msg&quot;. Le nombre de fichiers message qui satisfont la sp<73>cification et ont <20>t<EFBFBD> charg<72>s est renvoy<6F>.</DD>
<DT><br><b>::msgcat::mcset </b><i>locale src-string </i>?<i>translate-string</i>?
</DT><DD>Fixe la traduction de <i>src-string</i> en <i>translate-string</i> dans la <i>locale</i> sp<73>cifi<66>e Si <i>translate-string</i> n'est pas sp<73>cifi<66>e, <i>src-string</i> est utilis<69> pour les deux La fonction retourne <i>translate-string</i>.
</DD>
<DT><br><b>::msgcat::mcunknown </b><i>locale src-string</i>
</DT><DD>Cette routine est appel<65>e par <b>::msgcat::mc</b> dans le cas o<> une traduction de <i>src-string</i> n'est pas d<>finie dans la locale courante L'action par d<>faut est de renvoyer <i>src-string</i> Cette fonction peut <20>tre red<65>finie par les applications, par exemple pour mettre dans un journal de message d'erreurs chaque cha<68>ne inconnue. La fonction<b>::msgcat::mcunknown</b> est appel<65>e dans le m<>me contexte de pile que l'appel de <b>::msgcat::mc</b> La valeur de retour de <b>::msgcat::mcunknown</b> est utilis<69>e comme la valeur de retour de l'appel de <b>::msgcat::mc</b>.
</DD>
</DL>
</div>
<br>
<div><b>SPECIFICATIONS LOCALE ET SUBLOCALE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La locale est sp<73>cifi<66>e par une cha<68>ne locale. La cha<68>ne locale consiste en un code de langue, un code optionnel de pays, et un code optionnel sp<73>cifique au syst<73>me, chacun s<>par<61>s par &quot;_&quot;. Les codes de pays et de langue sont sp<73>cifi<66> dans les standards ISO-639 et ISO-3166. Par exemple, la locale &quot;en&quot; sp<73>cifie Anglais et &quot;en_US&quot; sp<73>cifie Anglais U.S.. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La locale prend la valeur par d<>faut de <b>env(LANG)</b> <20> l'instant o<> le package <b>msgcat</b> est charg<72>. Si <b>env(LANG)</b> n'est pas d<>fini, alors la locale prend la valeur par d<>faut de &quot;C&quot;. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Quand une locale est sp<73>cifi<66>e par les utilisateurs, une recherche &quot;meilleure correspondance&quot; est effectu<74>e pendant la traduction de la cha<68>ne Par exemple, si un utilisateur sp<73>cifie en_UK_Funky, les locales &quot;en_UK_Funky&quot;, &quot;en_UK&quot;, et &quot;en&quot; sont recherch<63>es dans l'ordre jusqu'a ce qu'une cha<68>ne de traduction correspondante soit trouv<75>e Si aucune cha<68>ne traduction n'est disponible, alors <b>::msgcat::unknown</b> est appel<65>
</div><br>
<div><b>NAMESPACES ET CATALOGUES DE MESSAGES</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les cha<68>nes stock<63>es dans le catalogue de messages sont stock<63>es relativement au namespace auquel elles ont <20>t<EFBFBD> ajout<75>es. Ceci permet <20> de multiple packages d'utiliser les m<>me cha<68>nes sans craindre de collisions avec d'autre packages. Cela permet aussi <20> la cha<68>ne source d'<27>tre plus courte et moins sujette aux fautes de frappes. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Par exemple, l'ex<65>cution du code </div>
<div ALIGN="LEFT" style="margin-left: 102px;">mcset en hello &quot;hello from ::&quot;<br>
namespace eval foo &#123;mcset en hello &quot;hello from ::foo&quot;}<br>
puts &#91;mc hello]<br>
namespace eval foo &#123;puts &#91;mc hello]}</div>
<div ALIGN="LEFT" style="margin-left: 51px;">affichera </div>
<div ALIGN="LEFT" style="margin-left: 102px;">hello from ::<br>
hello from ::foo</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Quand il cherche la traduction d'un message, le catalogue de messages recherchera en premier dans le namespace courant, ensuite le parent du namespace courant, et ainsi de suite jusqu'a ce que le namespace global&nbsp; soit atteint Ceci permet aux namespaces enfants d'h<>riter les messages de leurs namespace parents. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Par exemple, l'ex<65>cution du code </div>
<div ALIGN="LEFT" style="margin-left: 102px;">mcset en m1 &quot;:: message1&quot;<br>
mcset en m2 &quot;:: message2&quot;<br>
mcset en m3 &quot;:: message3&quot;<br>
namespace eval ::foo &#123;<br>
&nbsp;&nbsp;&nbsp; mcset en m2 &quot;::foo message2&quot;<br>
&nbsp;&nbsp;&nbsp; mcset en m3 &quot;::foo message3&quot;<br>
}<br>
namespace eval ::foo::bar &#123;<br>
&nbsp;&nbsp;&nbsp; mcset en m3 &quot;::foo::bar message3&quot;<br>
}<br>
puts &quot;&#91;mc m1]; &#91;mc m2]; &#91;mc m3]&quot;<br>
namespace eval ::foo &#123;puts &quot;&#91;mc m1]; &#91;mc m2]; &#91;mc m3]&quot;}<br>
namespace eval ::foo::bar &#123;puts &quot;&#91;mc m1]; &#91;mc m2]; &#91;mc m3]&quot;}</div>
<div ALIGN="LEFT" style="margin-left: 51px;">affichera</div>
<div ALIGN="LEFT" style="margin-left: 102px;">:: message1; :: message2; :: message3<br>
:: message1; ::foo message2; ::foo message3<br>
:: message1; ::foo message2; ::foo::bar message3</div>
<div ALIGN="LEFT" style="margin-left: 51px;">
</div><br>
<div><b>EMPLACEMENT ET FORMAT DES FICHIERS DE MESSAGE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les fichiers message peuvent <20>tre situ<74>s dans n'importe quel r<>pertoire, soumis aux conditions suivantes: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tous les fichiers message d'un package sont dans le m<>me r<>pertoire. </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;2]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Le nom de chemin du message est un sp<73>cificateur de locale suivi par &quot;.msg&quot; Par exemple: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;es.msg&nbsp;&nbsp;&nbsp; -- spanish<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;en_UK.msg -- UK English</div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;3]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Le fichier contient une series d'appels <20> mcset, qui fixent les cha<68>nes de traduction n<>cessaires pour la langue. Par exemple: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::msgcat::mcset es &quot;Free Beer!&quot; &quot;Cerveza Gracias!&quot;</div>
<div ALIGN="LEFT" style="margin-left: 51px;">
</div><br>
<div><b>PARAMETRAGE DES MESSAGES DANS LES PACKAGES</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Si un package est install<6C> dans un sous r<>pertoire de&nbsp; <b>tcl_pkgPath</b> et charg<72> via <b>package </b><b>require</b>, les proc<6F>dures suivantes sont recommand<6E>es. </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Durant l'installation du package, cr<63>er un sous r<>pertoire <b>msgs</b> sous votre r<>pertoire de package. </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;2]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copiez vos fichiers *.msg dans ce r<>pertoire. </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;3]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ajoutez les commandes suivantes <20> votre script d'initialisation de package: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# charge les fichiers de langue, stock<63>s dans le sous r<>pertoire msgs<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::msgcat::mcload &#91;file join &#91;file dirname &#91;info script]] msgs]</div>
<br>
<div><b>CODES DE POSITION POUR LES COMMANDES FORMAT ET SCAN</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Il est possible qu'un message cha<68>ne utilis<69> comme argument <20> <A HREF="format.htm"><b>format</b></A> ait des param<61>tres d<>pendants de la position qui auraient besoin d'<27>tre repositionn<6E>s. Par exemple, il pourra <20>tre syntaxiquement d<>sirable de r<>arranger la structure de cette phrase <20> la traduction. </div>
<div ALIGN="LEFT" style="margin-left: 102px;">format &quot;Nous produisons %d unit<69>s sur le site %s&quot; &#36;num &#36;city<br>
format &quot;Sur le site %s nous produisons %d unit<69>s&quot; &#36;city &#36;num</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Ceci peut <20>tre g<>r<EFBFBD> en utilisant les param<61>tres positionels: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">format &quot; Nous produisons %1&#92;&#36;d unit<69>s sur le site %2&#92;&#36;s&quot; &#36;num &#36;city<br>
format &quot; Sur le site %2&#92;&#36;s nous produisons %1&#92;&#36;d unit<69>s&quot; &#36;num &#36;city</div>
<div ALIGN="LEFT" style="margin-left: 51px;">De m<>me, les param<61>tres positionels peuvent <20>tre utilis<69>s avec <A HREF="scan.htm"><b>scan</b></A> pour extraire des valeurs <20> partir de cha<68>nes internationalis<69>es <br>
</div><br>
<div><b>CREDITS</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Le code du catalogue de messages a <20>t<EFBFBD> developp<70> par Mark Harrison
</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><A HREF="format.htm">format</A>(n), <A HREF="scan.htm">scan</A>(n), <A HREF="namespace.htm">namespace</A>(n), <A HREF="package.htm">package</A>(n) </div><br>
<div>Derni<EFBFBD>re r<>vision: 8.1</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="memory.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="namespace.htm"><b>Suivant</b></A></div>
</BODY></HTML>

195
hlp/fr/tcl/namespace.htm Normal file
View File

@@ -0,0 +1,195 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>namespace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">namespace - cr<63>e et manipule des contextes pour les commandes et variables
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>namespace </b>?<i>option</i>? ?<i>arg ...</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>namespace</b> vous permet de cr<63>er, d'acceder, et de d<>truire des contextes s<>par<61>s pour les commandes et variables. Voir la section <b>QU'EST CE QU'UN NAMESPACE?</b> ci-dessous pour un bref aper<65>u des namespaces. Les <i>option</i>s l<>gales sont list<73>es ci-dessous. Notez que vous pouvez abr<62>ger les <i>option</i>s.
<DL>
<DT><br><b>namespace children </b>?<i>namespace</i>? ?<i>pattern</i>?
</DT><DD>Renvoie une liste de tous les namespaces enfants qui appartiennent <20> <i>namespace</i>. Si <i>namespace</i> n'est pas sp<73>cifi<66>, alors les enfants sont renvoy<6F>s pour le namespace courant. Cette commande retourne des noms pleinement qualifi<66>s, qui commencent avec <b>::</b>. Si l'option <i>pattern</i> est donn<6E>e, alors cette commande retourne seulement les noms qui correspond au mod<6F>le glob-style. Le mod<6F>le actuel utilis<69> est d<>termin<69> comme suit: un mod<6F>le qui commence avec <b>::</b> est utilis<69> directement, autrement le namespace <i>namespace</i> (ou le nom pleinement qualifi<66> du namespace courant) est ajout<75> au mod<6F>le.
</DD>
<DT><br><b>namespace code </b><i>script</i>
</DT><DD>Capture le contexte namespace courant pour une ex<65>cution ult<6C>rieure du script <i>script</i>. Retourne un nouveau script dans lequel <i>script</i> aura <20>t<EFBFBD> englob<6F> dans une commande<b> </b><b>namespace code</b>. Le nouveau script a deux propri<72>t<EFBFBD>s importantes. D'abord, il peut <20>tre <20>valu<6C> dans tout namespace et provoquera l'<27>valuation de <i>script</i> dans le namespace courant (celui o<> la commande <b>namespace code</b> a <20>t<EFBFBD> appel<65>e).
Deuxi<EFBFBD>mement, des arguments suppl<70>mentaires peuvent <20>tre ajout<75>s au script r<>sultant et ils seront transmis <20> <i>script</i> comme arguments additionels. Par exemple, supposez que la commande <b>set script &#91;namespace code &#123;foo bar}]</b> est appel<65>e dans le namespace <b>::a::b</b>. Ensuite <b>eval &quot;&#36;script x y&quot;</b> peut <20>tre ex<65>cut<75> dans tout namespace (en supposant que la valeur de <b>script</b> lui ait <20>t<EFBFBD> transmise correctement) et aura le m<>me effet que la commande <b>namespace eval ::a::b &#123;foo bar x y}</b>. Cette commande est n<>cessaire parce que les extensions comme Tk ex<65>cutent normalement les scripts callback dans le namespace global . Une commande visible capture une commande et son contexte namespace de fa<66>on <20> l'ex<65>cuter correctement plus tard. Voir la section <b>VALEURS VISIBLES</b> pour quelques exemples montrant comment l'utiliser pour cr<63>er des scripts callback.
</DD>
<DT><br><b>namespace current</b>
</DT><DD>Renvoie le nom pleinement qualifi<66> pour le namespace courant. Le nom actuel du namespace global est &quot;&quot; (ex., une cha<68>ne vide), mais cette commande retourne <b>::</b> pour le namespace global par conv<6E>nience pour les programmeurs.
</DD>
<DT><br><b>namespace delete </b>?<i>namespace namespace ...</i>?
</DT><DD>Chaque namespace <i>namespace</i> est effac<61> et toutes variables, fonctions, et namespaces enfants contenus dans le namespace sont effac<61>s. Si une fonction est en cours d'ex<65>cution dans le namespace, le namespace sera maintenu jusqu'a ce que la fonction retourne; n<>anmoins, le namespace est marqu<71> pour emp<6D>cher tout autre code de le rechercher par son nom. Si un namespace n'existe pas, cette commande retourne une erreur. Si aucuns noms de namespace ne sont donn<6E>s, cette commande ne fait rien.
</DD>
<DT><br><b>namespace eval</b> <i>namespace arg</i> ?<i>arg ...</i>?
</DT><DD>Active un namespace appel<65> <i>namespace</i> et <20>value tout code dans ce contexte. Si le namespace n'existe pas d<>j<EFBFBD>, il est cr<63><72>. Si plus d'un argument <i>arg</i> est sp<73>cifi<66>, les arguments sont concat<61>n<EFBFBD>s, s<>par<61>s par des espaces de la m<>me fa<66>on qu'avec la commande<A HREF="104.htm"><b> eval</b></A>, et le r<>sultat est <20>valu<6C>.
<br>Si <i>namespace</i> a des qualificateurs namespace en t<>te et que les namespaces en t<>te n'existent pas, ils sont automatiquement cr<63><72>s.
</DD>
<DT><br><b>namespace export </b>?-<b>clear</b>? ?<i>pattern pattern ...</i>?
</DT><DD>Sp<EFBFBD>cifie quelles commandes sont export<72>es par un namespace. Le commandes export<72>es sont celles qui peuvent <20>tre plus tard import<72>es dans un autre namespace en utilisant une commande<b> namespace import</b>. L'ensembles des commandes d<>finies dans un namespace et des commandes que le namespace a pr<70>cedemment import<72> peut <20>tre export<72> par un namespace. La commandes n'ont pas <20> <20>tre d<>finies <20> l'instant o<> la commande <b>namespace export</b> est ex<65>cut<75>e. Chaque <i>pattern</i> peut contenir des caract<63>res sp<73>ciaux glob-style, mais il ne peut pas inclure quelconque qualificateurs namespace. Ainsi, le mod<6F>le peut seulement sp<73>cifier des commandes dans le namespace courant (exportant). Chaque <i>pattern</i> est ajout<75> <20> la liste de mod<6F>les d'export du namespace. Si le flag -<b>clear</b> est donn<6E>, la liste de mod<6F>les d'export du namespace est r<>initialis<69>e en cha<68>ne vide avant que quelconques <i>pattern</i> arguments soient ajout<75>s. Si aucuns <i>pattern</i>s ne sont donn<6E>s et que le flag -<b>clear</b> n'est pas fourni, cette commande retourne la liste d'export du namespace courant.
</DD>
<DT><br><b>namespace forget </b>?<i>pattern pattern ...</i>?
</DT><DD>Red<EFBFBD>place les commandes pr<70>cedemment import<72>es d'un namespace. Chaque <i>pattern</i> est un nom qualifi<66> tel que <b>foo::x</b> ou <b>a::b::p*</b>. Les noms qualifi<66>s contiennent des <b>::</b>s et qualifient un nom avec le nom d'un ou plusieurs namespaces. Chaque <i>pattern</i> est qualifi<66> avec le nom d'un namespace exportant et peut avoir des caract<63>res sp<73>ciaux glob-style dans le nom de commande <20> la fin du nom qualifi<66>. Les caract<63>res glob ne peuvent pas apparaitre dans un nom de namespace. Cette commande trouve en premier les commandes export<72>es correspondantes. Elle v<>rifie ensuite si une ou plusieurs de ces commandes ont <20>t<EFBFBD> pr<70>cedemment import<72>es par le namespace courant. Si c'est le cas, cette commande efface les commandes import<72>es correspondantes. Ceci annule effectivement l'action d'une commande<b> namespace import</b>.
</DD>
<DT><br><b>namespace import </b>?<b>-force</b>? ?<i>pattern</i> <i>pattern ...</i>?
</DT><DD>Importe des commandes dans un namespace. Chaque <i>pattern</i> est un nom qualifi<66> comme <b>foo::x</b> ou <b>a::p*</b>. Ainsi, elle inclut le nom d'un namespace exportant et peut avoir des caract<63>res sp<73>ciaux <i>glob-style </i>dans le nom de commande <20> la fin du nom qualifi<66>. Les caract<63>res <i>glob</i> ne peuvent pas apparaitre dans un nom de namespace. Toutes les commandes qui correspondent <20> une cha<68>ne <i>pattern</i> et qui sont couramment export<72>es de leurs namespace sont ajout<75>es au namespace courant. Ceci est fait par cr<63>ation d'une nouvelle commande dans le namespace courant qui pointe vers la commande export<72>e dans son namespace original; quand la nouvelle commande import<72>e est appel<65>e, elle appelle la commande export<72>e. Cette commande normalement retourne une erreur si une commande import<72>e rentre en conflit avec une commande existante. N<>anmoins, si l'option -<b>force</b> est donn<6E>e, les commandes import<72>es remplaceront silencieusement les commandes existantes. La commande <b>namespace import</b> a une s<>mantique photographique: ainsi, seulement les commandes requises couramment d<>finies dans le namespace exportant sont import<72>es. En d'autres mots, vous pouvez importer seulement les commandes qui sont dans un namespace <20> l'instant o<> la commande <b>namespace import</b> est ex<65>cut<75>e. Si une autre commande est d<>finie et export<72>e dans ce namespace plus tard, elle ne sera pas import<72>e.
</DD>
<DT><br><b>namespace inscope</b> <i>namespace arg</i> ?<i>arg ...</i>?
</DT><DD>Execute un script dans le contexte d'un namespace particulier. Cette commande n'est pas sens<6E>e <20>tre utilis<69> directement par les programmeurs; des appels sont g<>n<EFBFBD>r<EFBFBD>s implicitement quand les applications utilisent la commande <b>namespace code</b> pour cr<63>er scripts callback que l'applications alors enregistre avec, par ex., des widgets Tk. La commande <b>namespace inscope</b> ressemble plus <20> la commande <b>namespace eval</b> except<70> qu'elle a une s<>mantique <A HREF="128.htm"><b>lappend</b></A> et que le namespace doit d<>j<EFBFBD> exister. Elle traite le premier argument comme une liste, et ajoute tout argument apr<70>s le premier jusqu'<27> la fin comme des <20>l<EFBFBD>ments de liste correcte. <b>namespace inscope ::foo a x y z</b> est <20>quivalent <20> <b>namespace eval ::foo &#91;concat a &#91;list x y z]]</b> Cette s<>mantique <A HREF="128.htm"><b>lappend</b></A> est importante parce que de nombreux scripts callback sont actuellement des pr<70>fixes.
</DD>
<DT><br><b>namespace origin </b><i>command</i>
</DT><DD>Renvoie le nom pleinement qualifi<66> de la commande originale <20> laquelle la commande import<72>e <i>command</i> se r<>f<EFBFBD>re. Quand une commande est import<72>e dans un namespace, une nouvelle commande est cr<63><72>e dans ce namespace qui pointe vers la commande actuelle dans le namespace exportant. Si une commande est import<72>e dans une s<>quence de namespaces <i>a, b,...,n</i> o<> chaque namespace successif importe juste la commande du pr<70>cedent namespace, cette commande retourne le nom pleinement qualifi<66> de la commande originale dans le premier namespace, <i>a</i>. Si <i>command</i> ne se ref<65>re pas <20> une commande import<72>e, le propre nom pleinement qualifi<66> de la commande est renvoy<6F>.
</DD>
<DT><br><b>namespace parent</b> ?<i>namespace</i>?
</DT><DD>Renvoie le nom pleinement qualifi<66> du namespace parent de <i>namespace</i>. Si <i>namespace</i> n'est pas sp<73>cifi<66>, le nom pleinement qualifi<66> du parent du namespace courant est renvoy<6F>.
</DD>
<DT><br><b>namespace qualifiers</b> <i>string</i>
</DT><DD>Renvoie tous les qualificateurs namespace en t<>te de <i>string</i>. Les qualificateurs sont les noms de namespace s<>par<61>es par <b>::</b>. Pour la <i>string</i> <b>::foo::bar::x</b>, cette commande retourne <b>::foo::bar</b>, et pour <b>::</b> elle retourne une cha<68>ne vide. Cette commande est le compl<70>ment de la commande<b> namespace tail</b>. Notez qu'elle ne v<>rifie pas si les noms de namespace sont, en fait, les noms des namespaces couramment d<>finis.
</DD>
<DT><br><b>namespace tail</b> <i>string</i>
</DT><DD>Renvoie le simple nom <20> la fin d'une cha<68>ne qualifi<66>e. Les qualificateurs sont les noms de namespace s<>par<61>es par <b>::</b>. Pour la <i>string</i> <b>::foo::bar::x</b>, cette commande retourne <b>x</b>, et for <b>::</b> elle retourne une cha<68>ne vide. Cette commande est le complement de la commande<b> namespace qualifiers</b>. Elle ne v<>rifie pas si les noms de namespace sont, en fait, les noms des namespaces couramment d<>finis.
</DD>
<DT><br><b>namespace which</b> ?-<b>command</b>? ?-<b>variable</b>? <i>name</i>
</DT><DD>Recherche <i>name</i> soit comme commande ou variable et retourne son nom pleinement qualifi<66>. Par exemple, si <i>name</i> n'existe pas dans le namespace courant mais existe dans le namespace global, cette commande retourne un nom pleinement qualifi<66> dans le namespace global. Si la commande ou variable n'existe pas, cette commande retourne une cha<68>ne vide. Si la variable a <20>t<EFBFBD> cr<63><72>e mais non d<>finie, tel qu'avec la commande <A HREF="179.htm"><b>variable</b></A> ou au travers d'une <A HREF="173.htm"><b>trace</b></A> sur la variable, cette commande renverra le nom pleinement qualifi<66> de la variable. Si aucun flag n'est donn<6E>, <i>name</i> est trait<69> comme un nom de commande. Voir la section <b>RESOLUTION</b> <b>DE</b> <b>NOM </b>ci-dessous pour une explication des r<>gles concernant la r<>solution de nom.
</DD>
</DL>
</div> <br>
<div><b>QU'EST CE QU'UN NAMESPACE?</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">Un namespace est une collection de commandes et de variables. Il encapsule les commandes et variables pour s'assurer qu'elles ne vont pas interf<72>rer avec les commandes et variables des autres namespaces. Tcl a toujours eu une telle collection, <20> laquelle nous nous r<>f<EFBFBD>rerons comme le <i>namespace global</i>. Le namespace global contient toutes les variables globales et commandes. La commande <b>namespace eval</b> vous permet de cr<63>er de nouveaux namespaces. Par exemple, </div>
<div ALIGN="LEFT" style="margin-left: 102px;">
<b>namespace eval Counter &#123;<br>
</b><b>namespace export bump<br>
</b><b>variable num 0<br>
</b><b><br>
</b><b>proc bump &#123;} &#123;<br>
</b><b>variable num<br>
</b><b>incr num<br>
</b><b>}<br>
</b><b>}</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">cr<EFBFBD>e un nouveau namespace contenant la variable <b>num</b> et la fonction <b>bump</b>. Les commandes et les variables dans ce namespace sont s<>par<61>es des autres commandes et variables dans le m<>me programme. S'il y a une commande nomm<6D>e <b>bump</b> dans le namespace global , par exemple, elle sera diff<66>rente de la commande <b>bump</b> dans le namespace<b> Counter</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les variables namespace ressemblent aux variables globales en Tcl. Elles existent en dehors des fonctions dans un namespace mais peuvent <20>tre acc<63>d<EFBFBD>es dans une fonction via la commande<A HREF="179.htm"><b> variable</b></A>, comme montr<74> dans l'exemple ci-dessus.</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les namespaces sont dynamiques. Vous pouvez ajouter et effacer des commandes et des variables <20> tout instant, et vous pouvez construire le contenu d'un namespace au fur et <20> mesure en utilisant une s<>rie de commandes<b> namespace eval</b>. Par exemple, les s<>ries suivantes de commandes ont le m<>me effet que les d<>finitions namespace montr<74>es plus haut: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">
<b>namespace eval Counter &#123;<br>
</b><b>variable num 0<br>
</b><b>proc bump &#123;} &#123;<br>
</b><b>variable num<br>
</b><b>return &#91;incr num]<br>
</b><b>}<br>
</b><b>}<br>
</b><b>namespace eval Counter &#123;<br>
</b><b>proc test &#123;args} &#123;<br>
</b><b>return &#36;args<br>
</b><b>}<br>
</b><b>}<br>
</b><b>namespace eval Counter &#123;<br>
</b><b>rename test &quot;&quot;<br>
</b><b>}</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">Notez que la fonction <b>test</b> est ajout<75>e au namespace<b> Counter</b>, et enlev<65>e plus tard via la commande<A HREF="155.htm"><b> rename</b></A>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les namespaces peuvent contenir d'autres namespaces, donc <20>tre imbriqu<71>s hi<68>rarchiquement. Un namespace imbriqu<71> est encapsul<75> dans son namespace parent et ne peut pas interf<72>rer avec d'autres namespaces. <br>
</div><br>
<div><b>NOMS QUALIFIES</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Chaque namespace a un nom textuel tel que <A HREF="121.htm"><b>history</b></A> ou <b>::safe::interp</b>. Comme les namespaces peuvent s'imbriquer, les noms qualifi<66>s sont utilis<69>s pour se r<>f<EFBFBD>rer <20> des commandes, variables, et namespaces enfants contenus dans les namespaces. Les noms qualifi<66>s sont semblables aux noms de chemin hi<68>rarchique des fichiers Unix ou des widgets Tk, except<70> que <b>::</b> est utilis<69> comme s<>parateur au lieu de '<b>/</b>' ou '<b>.</b>'. Le namespace global a pour nom &quot;&quot; (ex., une cha<68>ne vide), bien que <b>::</b> soit un synonyme. Comme exemple, le nom <b>::safe::interp::create</b> se r<>f<EFBFBD>re <20> la commande <b>create</b> dans le namespace <A HREF="126.htm"><b>interp</b></A> qui est un enfant du namespace <b>::safe</b>, qui <20> son tour est un enfant du namespace global <b>::</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si vous voulez <20> acceder aux commandes et variables <20> partir d'un autre namespace, vous devez utiliser une syntaxe suppl<70>mentaire. Les noms doivent <20>tre qualifi<66>s par les namespace qui les contiennent. A partir du namespace global , nous acc<63>derions <20> la fonction <b>Counter</b> comme ceci: </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><br>
<b>Counter::bump 5<br>
</b><b>Counter::Reset</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Nous acc<63>derions au compte courant comme ceci: </div><br>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>puts &quot;count = &#36;Counter::num&quot;</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Quand un namespace en contient un autre, vous pouvez avoir besoin de plus d'un qualificateur pour atteindre ses <20>l<EFBFBD>ments. Si nous avions un namespace <b>Foo</b> qui contenait le namespace <b>Counter</b>, vous pourriez appeller sa fonction <b>bump</b> <20> partir du namespace global comme ceci: </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>Foo::Counter::bump 3</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">Vous pouvez aussi utiliser les noms qualifi<66>s quand vous cr<63>ez et renommez des commandes. Par exemple, vous pouvez ajouter une fonction au namespace <b>Foo</b> comme ceci: </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>proc Foo::Test &#123;args} &#123;return &#36;args}</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">Et vous pourriez d<>placer la m<>me fonction vers un autre namespace comme ceci: </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>rename Foo::Test Bar::Test</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">Il y a quelques points restants au sujet des noms qualifi<66>s que nous devons couvrir. Les namespaces ont des noms non-vides except<70> le namespace global . '<b>::</b>' est interdit dans une simple commande, variable, et les noms de namespace except<70> comme s<>parateur namespace. Les '<b>:</b>' suppl<70>mentaires dans un nom qualifi<66> sont ignor<6F>s; ainsi, deux ou plus '<b>:</b>' sont trait<69>s comme s<>parateur namespace. Deux '<b>::</b>' <20> la fin d'une variable qualifi<66>e ou d'un nom de commande se r<>f<EFBFBD>rent <20> une variable ou commande nomm<6D>e &#123;}. N<>anmoins, <b>::</b> <20> la fin d'un nom de namespace qualifi<66> est ignor<6F>.
</div> <br>
<div><b>RESOLUTION DE NOM</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">En g<>n<EFBFBD>ral, toute commande Tcl qui attend des noms de variable et de commande supporte les noms qualifi<66>s. Ceci signifie que vous pouvez donner des noms qualifi<66>s <20> des commandes comme <A HREF="161.htm"><b>set</b></A>, <A HREF="147.htm"><b>proc</b></A>, <A HREF="155.htm"><b>rename</b></A>, et <b>interp alias</b>. Si vous fournissez un nom pleinement qualifi<66> qui commence avec <b>::</b>, il n'y a pas d'ambiguit<69> sur le sens de la commande, la variable, ou le namespace. N<>anmoins, si le nom ne commence pas avec <b>::</b> (ex., est <i>relatif</i>), Tcl suit une r<>gle pr<70>cise pour la recherche: Les noms de commandes et nom de variables sont toujours r<>solus en cherchant en premier dans le namespace courant, et ensuite dans le namespace global . Les noms de namespace, d'un autre point de vue, sont toujours r<>solus en recherchant seulement dans le namespace courant. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Dans les exemples suivants, </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>set traceLevel 0<br>
</b><b>namespace eval Debug &#123;<br>
</b><b>printTrace &#36;traceLevel<br>
</b><b>}</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">Tcl recherche <b>traceLevel</b> dans le namespace <b>Debug</b> et ensuite dans le namespace global. Il recherche la commande <b>printTrace</b> de la m<>me fa<66>on. Si un nom de variable ou de commande n'est pas trouv<75> dans ce contexte, le nom est ind<6E>fini. Pour rendre ce point tout <20> fait clair, examinez les exemples suivants: </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>set traceLevel 0<br>
</b><b>namespace eval Foo &#123;<br>
</b><b>variable traceLevel 3<br>
</b><b><br>
</b><b>namespace eval Debug &#123;<br>
</b><b>printTrace &#36;traceLevel<br>
</b><b>}<br>
</b><b>}</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">Ici, Tcl recherche <b>traceLevel</b> en premier dans le namespace <b>Foo::Debug</b>. Comme il n'est pas trouv<75> l<>, Tcl le recherche alors dans le namespace global . La variable <b>Foo::traceLevel</b> est compl<70>tement ignor<6F>e pendant le processus de r<>solution de nom. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Vous pouvez utiliser la commande <b>namespace which</b> pour repondre aux questions au sujet de la r<>solution de nom. Par exemple, la commande: </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>namespace eval Foo::Debug &#123;namespace which-variable traceLevel}</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">retourne <b>::traceLevel</b>. d'une autre mani<6E>re, la commande, </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>namespace eval Foo &#123;namespace which-variable traceLevel}</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">retourne <b>::Foo::traceLevel</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Comme mentionn<6E> plus haut, les noms de namespace sont recherch<63>s diff<66>remment des noms de variables et commandes. Les noms de namespace sont toujours r<>solus dans le namespace courant. Ceci signifie que, par exemple, une commande <b>namespace eval</b> qui cr<63>e un nouveau namespace cr<63>e toujours un enfant du namespace courant <20> moins que le nouveau nom de namespace commence avec un <b>::</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Tcl n'a pas de contr<74>le pour limiter quelles variables, commandes, ou namespaces vous pouvez r<>f<EFBFBD>rencer. Si vous fournissez un nom qualifi<66> qui resolve un <20>l<EFBFBD>ment par les r<>gles de r<>solution de nom plus haut, vous pouvez acc<63>der <20> l'<27>l<EFBFBD>ment. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Vous pouvez acc<63>der <20> une variable namespace <20> partir d'une fonction dans le m<>me namespace en utilisant la commande<A HREF="179.htm"><b> variable</b></A>. Comme la commande<A HREF="120.htm"><b> global</b></A>, elle cr<63>e un lien local vers une variable namespace. Si n<>cessaire, elle cr<63>e aussi la variable dans le namespace courant et l'initialise. Notez que la commande <A HREF="120.htm"><b>global</b></A> cr<63>e seulement des liens vers les variables dans le namespace global . Il n'est pas n<>cessaire d'utiliser une commande <A HREF="179.htm"><b>variable</b></A> si vous vous referez toujours <20> une variable namespace en utilisant un nom qualifi<66> appropri<72>.
</div><br>
<div><b>IMPORTATION DE COMMANDES</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les namespaces sont souvent utilis<69>s pour repr<70>senter des biblioth<74>ques. Certaines commandes de biblioth<74>que sont utilis<69>es si souvent que c'est une corv<72>e de taper leurs noms qualifi<66>s. Par exemple, supposez que toutes les commandes dans un package comme BLT soient contenues dans un namespace appel<65> <b>Blt</b>. Ensuite vous acc<63>derez <20> ces commandes comme ceci: </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>Blt::graph .g-background red<br>
</b><b>Blt::table . .g 0,0</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si vous utilisez les commandes <b>graph</b> et <b>table</b> fr<66>quemment, vous pouvez vouloir y acceder sans le pr<70>fixe<b> Blt::</b>. Vous pouvez faire cela en important les commandes dans le namespace courant, comme ceci: </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>namespace import Blt::*</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">Ceci ajoute toutes les commandes export<72>es du namespace <b>Blt</b> dans le contexte du namespace courant, donc vous pouvez <20>crire du code comme ceci: </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>graph .g-background red<br>
</b><b>table . .g 0,0</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>namespace import</b> importe seulement des commandes d'un namespace export<72> avec une commande <b>namespace export</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Importer <i>toutes</i> les commandes d'un namespace est g<>n<EFBFBD>ralement une mauvaise id<69>e car vous ne savez pas ce que vous r<>cup<75>rez. Il vaut mieux importer juste les commandes sp<73>cifiques dont vous avez besoin. Par exemple, la commande </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>namespace import Blt::graph Blt::table</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">importe seulement les commandes <b>graph</b> et <b>table</b> dans le contexte courant. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si vous essayez d'importer une commande qui existe d<>j<EFBFBD>, vous aurez une erreur. Ceci vous emp<6D>che d'importer la m<>me commande <20> partir de deux packages diff<66>rent. Mais de temps en temps (peut-<2D>tre en debuggant), vous pouvez vouloir contourner cette restriction. Vous pouvez vouloir relancer la commande <b>namespace import</b> pour profiter de nouvelles commandes qui ont apparu dans un namespace. Dans ce cas, vous pouvez utiliser l'option<b> </b><b>-force</b>, et les commandes existantes seront ecras<61>es silencieusement: </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>namespace import-force Blt::graph Blt::table</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si pour quelque raison, vous voulez cesser d'utiliser les commandes import<72>es, vous pouvez les enlever avec une commande<b> namespace forget</b>, comme ceci: </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>namespace forget Blt::*</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">Ceci recherche dans le namespace courant toutes commandes import<72>es de <b>Blt</b>. Si elle en trouve une, elle l'enl<6E>ve. Autrement, elle ne fait rien. Apr<70>s cela, les commandes <b>Blt</b> doivent <20>tre acc<63>d<EFBFBD>es avec le pr<70>fixe<b> Blt::</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Quand vous effacez une commande du namespace exportant comme ceci: </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>rename Blt::graph &quot;&quot;</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">la commande est automatiquement enlev<65>e de tous les namespaces qui l'importaient.
</div><br>
<div><b>EXPORTATION DE COMMANDES</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Vous pouvez exporter des commandes d'un namespace comme ceci: </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>namespace eval Counter &#123;<br>
</b><b>namespace export bump reset<br>
</b><b>variable Num 0<br>
</b><b>variable Max 100<br>
</b><b><br>
</b><b>proc bump &#123;&#123;by 1}} &#123;<br>
</b><b>variable Num<br>
</b><b>incr Num &#36;by<br>
</b><b>Check<br>
</b><b>return &#36;Num<br>
</b><b>}<br>
</b><b>proc reset &#123;} &#123;<br>
</b><b>variable Num<br>
</b><b>set Num 0<br>
</b><b>}<br>
</b><b>proc Check &#123;} &#123;<br>
</b><b>variable Num<br>
</b><b>variable Max<br>
</b><b>if &#123;&#36;Num &gt; &#36;Max} &#123;<br>
</b><b>error &quot;too high!&quot;<br>
</b><b>}<br>
</b><b>}<br>
</b><b>}</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les fonctions <b>bump</b> et <b>reset</b> sont export<72>es, donc elles sont inclues quand vous importez du namespace<b> Counter</b>, comme ceci: </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>namespace import Counter::*</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">N<EFBFBD>anmoins, la fonction <b>Check</b> n'est pas export<72>e, donc elle est ignor<6F>e par les op<6F>rations d'import. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>namespace import</b> importe seulement les commandes qui ont <20>t<EFBFBD> declar<61>s comme export<72>es par leurs namespace. La commande <b>namespace export</b> sp<73>cifie quelles commandes peuvent <20>tre import<72>es par d'autres namespaces. Si une commande <b>namespace </b><b>import</b> sp<73>cifie une commande qui n'est pas export<72>e, la commande n'est pas import<72>e.
</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><A HREF="179.htm">variable</A>(n) </div><br>
<div>Derni<EFBFBD>re r<>vision: 8.0</div><br>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="140.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="142.htm"><b>Suivant</b></A></div>
</BODY></HTML>

93
hlp/fr/tcl/open.htm Normal file
View File

@@ -0,0 +1,93 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>open&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">open - Ouvre un canal bas<61> fichier ou un pipeline
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><br>
<b>open </b><i>fileName</i> <br>
<b>open </b><i>fileName access</i> <br>
<b>open </b><i>fileName access permissions</i>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande ouvre un fichier, un port s<>rie, ou un pipeline de commandes et retourne un identificateur de canal qui peut <20>tre employ<6F> dans les appels suivants des commandes comme <A HREF="151.htm"><b>read</b></A>, <A HREF="148.htm"><b>puts</b></A>, et <A HREF="97.htm"><b>close</b></A>. Si le premier caract<63>re de <i>fileName</i> n'est pas <b>|</b> alors la commande ouvre un fichier: <i>fileName</i> donne le nom du fichier <20> ouvrir, et il doit se conformer aux conventions d<>crite dans la page de manuel<A HREF="113.htm"><b> filename</b></A>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">L'argument<i> access</i>, si pr<70>sent, indique la fa<66>on de laquelle le fichier (ou commande pipeline) sera acc<63>d<EFBFBD>. Dans la premi<6D>re forme <i>access</i> peut avoir quelconque des valeurs suivantes:
<DL>
<DT><b>r</b></DT><DD>Ouvre le fichier pour la lecture seulement; le fichier doit d<>j<EFBFBD> exister. C'est la valeur par d<>faut si <i>access</i> n'est pas sp<73>cifi<66>.
</DD>
<DT><b>r+</b></DT><DD>Ouvre le fichier pour la lecture et l'<27>criture; le fichier doit d<>j<EFBFBD> exister.
</DD>
<DT><b>w</b></DT><DD>Ouvre le fichier pour l'<27>criture seulement. Le tronque s'il existe. S'il n'existe pas, cr<63>e un nouveau fichier.
</DD>
<DT><b>w+</b></DT><DD>Ouvre le fichier pour la lecture et l'<27>criture. Le tronque s'il existe. S'il n'existe pas, cr<63>e un nouveau fichier.
</DD>
<DT><b>a</b></DT><DD>Ouvre le fichier pour l'<27>criture seulement. Si le fichier n'existe pas, cr<63>e un nouveau fichier vide. Positionne le curseur <20> la fin du fichier.
</DD>
<DT><b>a+</b></DT><DD>Ouvre le fichier pour la lecture et l'<27>criture. Si le fichier n'existe pas, cr<63>e un nouveau fichier vide. Positionne le curseur <20> la fin du fichier.
</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Dans la seconde forme, <i>access</i> consiste en une liste de quelconque des flags suivants, chacun d'eux ayant la signification standard POSIX. Un des flags doit <20>tre soit <b>RDONLY</b>, <b>WRONLY</b> ou <b>RDWR</b>.
<DL>
<DT><b>RDONLY</b></DT><DD>Ouvre le fichier pour la lecture seulement. </DD>
<DT><b>WRONLY</b></DT><DD>Ouvre le fichier pour l'<27>criture seulement.</DD>
<DT><b>RDWR</b></DT><DD>Ouvre le fichier en lecture et <20>criture.</DD>
<DT><b>APPEND</b></DT><DD>Positionne le curseur <20> la fin du fichier avant chaque <20>criture. </DD>
<DT><b>CREAT</b></DT><DD>Cr<EFBFBD>e le fichier s'il n'existe pas d<>j<EFBFBD>.</DD>
<DT><b>EXCL</b></DT><DD>Si <b>CREAT</b> est <20>galement sp<73>cifi<66>, une erreur est g<>n<EFBFBD>r<EFBFBD>e si le fichier existe d<>j<EFBFBD>.
</DD>
<DT><b>NOCTTY</b></DT><DD>Si le fichier est un terminal, ce flag emp<6D>che le fichier de devenir le terminal de contr<74>le du processus.
</DD>
<DT><b>NONBLOCK</b></DT><DD>Emp<EFBFBD>che le processus de bloquer pendant l'ouverture du fichier, et eventuellement pendant les op<6F>rations I/O suivantes. Le comportement exact de ce flag est syst<73>me- et p<>riph<70>rique-dependant; son emploi est d<>conseill<6C> (il vaut mieux utiliser la commande <A HREF="109.htm"><b>fconfigure</b></A> pour mettre un fichier en mode non bloquant). Pour des d<>tails se referer <20> la documentation de votre syst<73>me sur le flag<b> O_NONBLOCK </b>de l'appel syst<73>me<b> open</b>
</DD>
<DT><b>TRUNC</b></DT><DD>Si le fichier existe il est tronqu<71> <20> longueur z<>ro.
</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si un nouveau fichier est cr<63><72> en m<>me temps qu'ouvert, <i>permissions</i> (un entier) est utilis<69> pour fixer les permissions pour le nouveau fichier en conjonction avec le masque de cr<63>ation fichier. <i>Permissions</i> est par d<>faut de 0666.
</div><br>
<div><b>PIPELINES</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Si le premier caract<63>re de <i>fileName</i> est &quot;|&quot; alors les caract<63>res restants de <i>fileName</i> sont trait<69>s comme une liste d'arguments qui decrivent un pipeline <20> appeler, dans le m<>me style que les arguments <20> <A HREF="105.htm"><b>exec</b></A>. Dans ce cas, l'identificateur de canal renvoy<6F> par <b>open</b> peut <20>tre employ<6F> pour <20>crire <20> l'entr<74>e du pipe ou lire de sa sortie, d<>pendant de la valeur de <i>access</i>. Si un acc<63>s <20>criture-seule est utilis<69> (ex. <i>access</i> est <b>w</b>), alors la sortie standard du pipeline est dirig<69>e vers la sortie standard courante sauf si ecras<61> par la commande. Si un acc<63>s lecture-seule est utilis<69> (ex. <i>access</i> est <b>r</b>), l'entr<74>e standard du pipeline est prise de l'entr<74>e standard courante sauf si ecras<61> par la commande.
</div><br>
<div><b>COMMUNICATIONS SERIE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Si <i>fileName</i> se ref<65>re <20> un port s<>rie, alors le port s<>rie sp<73>cifi<66> est ouvert et initialis<69> d'une mani<6E>re plateforme-dependante. Les valeurs acceptables de <i>fileName</i> pour ouvrir un port s<>rie sont d<>crites dans la section<b> PROBLEMES DE PORTABILITE</b>.
</div><br>
<div><b>OPTIONS DE CONFIGURATION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <A HREF="109.htm"><b>fconfigure</b></A> peut <20>tre utilis<69>e pour consulter et fixer les options de configuration suivantes pour ouvrir un port s<>rie:
<DL>
<DT><b>-mode </b><i>baud</i><b>,</b><i>parity</i><b>,</b><i>data</i><b>,</b><i>stop</i></DT><DD>Cette option est un ensemble de 4 valeurs s<>par<61>es par des virgules: le baud rate, parit<69>, nombre de bits de donn<6E>es, et nombre de bits stop pour ce port s<>rie. Le <i>baud</i> rate est un simple entier qui sp<73>cifie la vitesse de connection. <i>Parity</i> est une des lettres suivantes: <b>n</b>, <b>o</b>, <b>e</b>, <b>m</b>, <b>s</b>; signifiant respectivement les options de parit<69> &quot;aucune&quot;, &quot;impaire&quot;, &quot;paire&quot;, &quot;marque&quot;, ou &quot;espace&quot;. <i>Data</i> est le nombre de bits de donn<6E>es et sera un entier de 5 <20> 8, alors que <i>stop</i> est le nombre de bits de stop et sera l'entier 1 ou 2.
</DD>
<DT><b>-pollinterval </b><i>msec</i><br></DT><DD>Cette option, disponible seulement sous Windows pour les port s<>ries, est utilis<69>e pour fixer le temps maximum entre l'ecoute d'<27>v<EFBFBD>nements fichier. Ceci affecte le intervalle de temps de v<>rification d'<27>v<EFBFBD>nements par l'interpr<70>teur Tcl (la plus petite valeur l'emporte toujours). Utilisez cette option seulement si vous voulez <20>couter le port s<>rie plus souvent que 10 msec (la valeur par d<>faut).
</DD>
<DT><b>-lasterror</b><br></DT><DD>Cette option est disponible seulement sous Windows pour les port s<>ries, et est en lecture seule (ne peut <20>tre que signal<61>e). En cas d'une erreur de communication s<>rie, <A HREF="151.htm"><b>read</b></A> ou <A HREF="148.htm"><b>puts</b></A> retourne une erreur Tcl g<>n<EFBFBD>rale I/O fichier. <b>fconfigure -lasterror</b> peut <20>tre appel<65>e pour obtenir une liste des details d'erreur (ex. FRAME RXOVER).
</DD>
</DL>
</div><br>
<div><b>PROBLEMES DE PORTABILITE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">
<DL>
<DT><b>Windows </b>(toutes versions)</DT><DD>Les valeurs valides de <i>fileName</i> pour ouvrir un port s<>rie sont de la forme <b>com</b><i>X</i><b>:</b>, where <i>X</i> est un nombre, g<>n<EFBFBD>ralement de 1 <20> 4. Cette notation fonctionne seulement pour les port s<>ries de 1 <20> 9, si le syst<73>me en a plus que quatre. Une tentative d'ouvrir un port s<>rie qui n'existe pas ou a un nombre sup<75>rieur <20> 9 <20>chouera. Une forme alternative d'ouvrir des port s<>ries est d'utiliser le nom de fichier <b>&#92;&#92;.&#92;comX</b>, o<> X est un nombre quelconque qui correspond <20> un port s<>rie; veuillez noter que cette m<>thode est considerablement plus lente sous Windows 95 et Windows 98.
</DD>
<DT><b>Windows NT</b></DT><DD>Quand vous ex<65>cutez Tcl interactivement, il peut y avoir des interactions <20>tranges entre la console r<>elle, si elle est pr<70>sente, et une commande pipeline qui utilise l'entr<74>e ou la sortie standard. Si une commande pipeline est ouverte pour la lecture, toutes les lignes entr<74>es sur la console seront envoy<6F>es <20> la commande pipeline puis <20> l'evaluateur Tcl. Si une commande pipeline est ouverte pour l'<27>criture, les frappes de touches entr<74>es sur la console ne seront pas visible jusqu'a ce que le le pipe soit ferm<72>. Ce comportement se produit si la commande pipeline est une application 16-bit ou 32-bit. Ces probl<62>mes se produisent seulement parce que <20> la fois Tcl et application enfant essayent d'acceder <20> la console en m<>me temps. Si la commande pipeline est lanc<6E>e <20> partir d'un script, Tcl n'acc<63>de pas <20> la console, ou si la commande pipeline n'utilise pas l'entr<74>e ou la sortie, standard mais est redirig<69>e <20> partir ou vers un fichier, alors les probl<62>mes vus plus haut ne se produisent pas. </DD>
<DT><b>Windows 95</b> </DT><DD>Une commande pipeline qui ex<65>cute une application DOS 16-bit ne peut pas <20>tre ouvert en lecture et <20>criture, car les applications DOS 16-bit qui recoivent l'entr<74>e standard d'un pipe et envoient la sortie standard dans un pipe sont ex<65>cut<75>es de mani<6E>re synchrone. Les commande pipelines qui n'ex<65>cutent pas d'applications DOS 16-bit sont ex<65>cut<75>es de mani<6E>re asynchrone et peuvent <20>tre ouvertes en lecture et <20>criture. <br>
Quand vous ex<65>cutez Tcl interactivement, il peut y avoir des interactions <20>tranges entre la console r<>elle, si elle est pr<70>sente, et une commande pipeline qui utilise l'entr<74>e ou la sortie standard. Si une commande pipeline est ouvert pour la lecture <20> partir d'une application 32-bit, , les frappes de touches entr<74>es sur la console seront envoy<6F>es <20> la commande pipeline et puis <20> l'evaluateur Tcl. Si une commande pipeline est ouvert pour l'<27>criture sur une application 32-bit, aucune sortie n'est visible sur la console jusqu'a ce que le le pipe soit ferm<72>. Ces probl<62>mes se produisent seulement parce que <20> la fois Tcl et application enfant essayent d'acceder <20> la console en m<>me temps. Si la commande pipeline est lanc<6E>e <20> partir d'un script, Tcl n'acc<63>de pas <20> la console, ou si la commande pipeline n'utilise pas l'entr<74>e ou la sortie, standard mais est redirig<69>e <20> partir ou vers un fichier, alors les probl<62>mes vus plus haut ne se produisent pas.
Que Tcl s'ex<65>cute interactivement ou non, si une commande pipeline est ouvert pour la lecture <20> partir une application 16-bit DOS, l'appel de <b>open</b> ne retourne pas jusqu'a ce que la fin-de-fichier avoir <20>t<EFBFBD> transmise <20> la sortie standard du pipeline. Si un pipeline est ouvert pour l'<27>criture sur une application 16-bit DOS, aucune donn<6E>e ne sera envoy<6F>es <20> la sortie standard du pipeline jusqu'a ce que le pipe soit ferm<72>. Ce probl<62>me se produit parce que les applications 16-bit DOS sont ex<65>cut<75>es de mani<6E>re synchrone, comme d<>crit plus haut.
</DD>
<DT><b>Macintosh</b></DT><DD>Ouvrir un port s<>rie n'est pas encore impl<70>ment<6E> sous Macintosh. <br>
Ouvrir un pipeline n'est pas support<72> sous Macintosh, car les applications ne supportent pas le concept d'entr<74>e ou de sortie standard.
</DD>
<DT><b>Unix</b></DT><DD>Les valeurs valides de <i>fileName</i> pour ouvrir un port s<>rie sont g<>n<EFBFBD>ralement de la forme <b>/dev/tty</b><i>X</i>, o<> <i>X</i> est <b>a</b> ou <b>b</b>, mais le nom de tout pseudo-fichier qui pointe vers un port s<>rie peut <20>tre employ<6F>. <br>
Quand vous ex<65>cutez Tcl interactivement, il peut y avoir des interactions <20>tranges entre la console r<>elle, si elle est pr<70>sente, et une commande pipeline qui utilise l'entr<74>e ou la sortie standard. Si une commande pipeline est ouvert pour la lecture, toutes lignes entr<74>es sur la console seront envoy<6F>es au pipeline et puis <20> l'evaluateur Tcl. Ces probl<62>mes se produisent seulement parce que <20> la fois Tcl et application enfant essayent d'acceder <20> la console en m<>me temps. Si la commande pipeline lanc<6E>e <20> partir d'un script, Tcl n'acc<63>de pas <20> la console, ou si la commande pipeline n'utilise pas l'entr<74>e ou la sortie, standard mais est redirig<69>e <20> partir ou vers un fichier, alors les probl<62>mes vus plus haut ne se produisent pas. Voir la section <b>PROBLEMES DE PORTABILITE</b> de la commande <A HREF="105.htm"><b>exec</b></A> pour une information suppl<70>mentaire non sp<73>cifique au pipelines au sujet de l'ex<65>cution d'applications sur les diff<66>rentes plateformes
</DD>
</DL>
</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><A HREF="97.htm">close</A>(n), <A HREF="113.htm">filename</A>(n), <A HREF="118.htm">gets</A>(n), <A HREF="151.htm">read</A>(n), <A HREF="148.htm">puts</A>(n), <A HREF="105.htm">exec</A>(n) </div>
<div>Derni<EFBFBD>re r<>vision: 7.6</div><br>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="141.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="143.htm"><b>Suivant</b></A></div>
</BODY></HTML>

56
hlp/fr/tcl/package.htm Normal file
View File

@@ -0,0 +1,56 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>package&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">package - Utilit<69>s pour le chargement et le contr<74>le de version de package
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>package forget ?</b><i>package package ...</i>?<br>
<b>package ifneeded </b><i>package version</i> ?<i>script</i>?<br>
<b>package names</b><br>
<b>package present </b>?<b>-exact</b>? <i>package </i>?<i>version</i>?<br>
<b>package provide </b><i>package </i>?<i>version</i>?<br>
<b>package require </b>?<b>-exact</b>? <i>package </i>?<i>version</i>?<br>
<b>package unknown </b>?<i>command</i>?<br>
<b>package vcompare </b><i>version1 version2</i><br>
<b>package versions </b><i>package</i><br>
<b>package vsatisfies </b><i>version1 version2</i><br>
</div> <br>
<div><b>DESCRIPTION</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande maintient une base de donn<6E>es simple des packages disponibles pour l'interpr<70>teur courant et comment les charger dans l'interpr<70>teur. Elle supporte plusieurs versions de chaque package et pr<70>pare la version correcte d'un package <20> <20>tre charg<72>e en se basant sur ce qui est n<>cessaire pour l'application. Cette commande detecte et rapporte aussi les conflits de version. Typiquement, seules les commandes <b>package require</b> et <b>package </b><b>provide</b> sont appel<65>es dans les scriptsTcl normaux, les autres commandes sont utilis<69>es par les scripts syst<73>me qui maintiennent la base de donn<6E>es des packages. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Le comportement de la commande <b>package</b> est d<>termin<69> par son premier argument. Les formes suivantes sont permises:
<DL>
<DT><b>package forget ?</b><i>package package ...</i>?</DT><DD>Efface toute information concernant chaque package sp<73>cifi<66> de cet interpr<70>teur, incluant l'information fournie par <b>package ifneeded</b> et <b>package provide</b>.
</DD>
<DT><b>package ifneeded </b><i>package version</i> ?<i>script</i>?</DT><DD>Cette commande apparait seulement dans les scripts de configuration syst<73>me pour r<>parer la base de donn<6E>es des packages. Elle indique qu'une version particuli<6C>re d'un package est disponible si besoin, et que le package peut <20>tre ajout<75> <20> l'interpr<70>teur par l'ex<65>cution de <i>script</i>. Le script est sauvegard<72>s dans une base de donn<6E>es pour <20>tre utilis<69> par les commandes suivantes <b>package require</b> typiquement, <i>script</i> parm<72>tre l'auto-loading pour les commandes dans le package (ou appelle <A HREF="134.htm"><b>load</b></A> et/ou <A HREF="163.htm"><b>source</b></A> directement), et ensuite appelle <b>package provide</b> pour indiquer que le package est pr<70>sent. Il peut y avoir l'information dans la base de donn<6E>es pour plusieurs versions diff<66>rentes d'un seul package. Si la base de donn<6E>es contient d<>j<EFBFBD> l'information pour <i>package</i> et <i>version</i>, le nouveau <i>script</i> remplace l'existant. Si l'argument <i>script</i> est omis, le script courant pour la version <i>version</i> du package <i>package</i> est renvoy<6F>, ou une cha<68>ne vide si aucune commande <b>package ifneeded</b> a <20>t<EFBFBD> appel<65>e pour ces <i>package</i> et <i>version</i>.
</DD>
<DT><b>package names</b></DT><DD>Renvoie une liste des noms de tous les packages dans l'interpr<70>teur pour lequel une version a <20>t<EFBFBD> fournie (via <b>package provide</b>) ou pour lequel un script <b>package ifneeded</b> est disponible. L'ordre des <20>l<EFBFBD>ments dans la liste est arbitraire.
</DD>
<DT><b>package present </b>?<b>-exact</b>? <i>package </i>?<i>version</i>?</DT><DD>Cette commande est <20>quivalente <20> <b>package require</b> except<70> qu'elle n'essaye pas et charge le package s'il n'est pas d<>j<EFBFBD> charg<72>.
</DD>
<DT><b>package provide </b><i>package </i>?<i>version</i>?</DT><DD>Cette commande est appel<65>e pour indiquer quelle version <i>version</i> du package <i>package</i> est maintenant pr<70>sente dans l'interpr<70>teur. Elle est typiquement appel<65>e une fois comme partie d'un script<b> ifneeded</b>, et de nouveau par les package lui-m<>me quand il est finalement charg<72>. Un erreur se produit si une version diff<66>rente de <i>package</i> a <20>t<EFBFBD> fournie par une pr<70>c<EFBFBD>dente commande <b>package provide</b>. Si l'argument <i>version</i> est omis, alors la commande retourne le num<75>ro de version qui est couramment fourni, ou une cha<68>ne vide si aucune commande <b>package provide</b> n'a <20>t<EFBFBD> appel<65>e pour <i>package</i> dans cet interpr<70>teur.
</DD>
<DT><b>package require </b>?<b>-exact</b>? <i>package </i>?<i>version</i>?</DT><DD>Cette commande est typiquement appel<65>e par le code Tcl qui souhaite utiliser une version particuli<6C>re d'un package. Les arguments indiquent quel package est demand<6E>, et la commande assure qu'une version convenable du package est charg<72> dans l'interpr<70>teur. Si la commande r<>ussit, elle retourne le num<75>ro de version qui est charg<72> autrement elle g<>n<EFBFBD>re une erreur. Si le switch <b>-</b> <b>exact</b> et l'argument <i>version</i> sont sp<73>cifi<66>s alors seulement la version donn<6E>e est admise. Si <b>-exact</b> est omis mais que <i>version</i> est sp<73>cifi<66>, alors les versions sup<75>rieures <20> <i>version</i> sont aussi admises tant qu'elles ont le m<>me num<75>ro de version majeure que <i>version</i>. Si <b>-exact</b> et <i>version</i> sont omis alors toute version est acceptable. Si une version de <i>package</i> a d<>j<EFBFBD> <20>t<EFBFBD> fournie (en appelant l commande<b> package provide</b>), alors son num<75>ro de version doit satisfaire les crit<69>res donn<6E>s par <b>-exact</b> et <i>version</i> et la commande retourne imm<6D>diatement. Autrement, la commande recherche la base de donn<6E>es d'information fournie par les pr<70>cedentes commandes <b>package ifneeded</b> pour voir si une version acceptable du package est disponible. Si c'est le cas, le script avec le num<75>ro de version acceptable le plus <20>lev<65> est appel<65>; elle doit faire tout ce qui est n<>cessaire pour charger le package, incluant l'appel de <b>package provide</b> pour le package. Si la base de donn<6E>es <b>package ifneeded</b> ne contient pas de version acceptable du package et qu'une commande <b>package unknown</b> a <20>t<EFBFBD> sp<73>cifi<66>e pour l'interpr<70>teur alors cette commande est appel<65>e;<3B> quand elle se termine, Tcl v<>rifie de nouveau si le package est maintenant fourni ou s'il y a un script <b>package ifneeded</b> pour celui-ci. Si toutes ces <20>tapes <20>chouent pour fournir une version acceptable du package, alors la commande retourne une erreur.
</DD>
<DT><b>package unknown </b>?<i>command</i>?</DT><DD>Cette commande apporte une commande &quot;de la derni<6E>re chance&quot; <20> appeler pendant <b>package require</b> si aucune version convenable d'un package ne peut <20>tre trouv<75>e dans la base de donn<6E>es<b> package ifneeded</b>. Si l'argument <i>command</i> est fourni, il contient la premi<6D>re partie<69> d'une commande;<3B> quand la commande est appel<65>e pendant une commande<b> package require</b>, Tcl ajoute deux arguments suppl<70>mentaires donnant les nom et version du package d<>sir<69>. Par exemple, si <i>command</i> est <b>foo bar</b> et que plus tard la commande <b>package require test 2.4</b> est appel<65>e, alors Tcl ex<65>cutera la commande <b>foo bar test 2.4</b> pour charger le package. Si aucun num<75>ro de version n'est donn<6E> <20> la commande<b> package require</b>, alors l'argument version pour la commande appel<65>e sera une cha<68>ne vide. Si la commande <b>package unknown </b>est appel<65>e sans argument <i>command</i>, alors le courant script <b>package unknown </b>est renvoy<6F>, ou une cha<68>ne vide s'il n'existe pas. Si <i>command</i> est sp<73>cifi<66> comme cha<68>ne vide, alors le courant script <b>package unknown </b>est enlev<65>, s'il existe.
</DD>
<DT><b>package vcompare </b><i>version1 version2</i></DT><DD>Compare les num<75>ros de versions donn<6E>s par <i>version1</i> et <i>version2</i>. Renvoie -1 si <i>version1</i> est une version pr<70>c<EFBFBD>dente <20> <i>version2</i>, 0 si ils sont <20>gal, et 1 si <i>version1</i> est plus r<>cente que <b>version2</b>.
</DD>
<DT><b>package versions </b><i>package</i></DT><DD>Renvoie une liste de tout les num<75>ros de versions de <i>package</i> pour lequel l'information a <20>t<EFBFBD> fournie par des commandes<b> package ifneeded</b>.
</DD>
<DT><b>package vsatisfies </b><i>version1 version2</i></DT><DD>Renvoie 1 si les scripts <20>crits pour <i>version2</i> fonctionneront avec <i>version1</i> (ex. <i>version1</i> est <20>gal <20> ou sup<75>rieur <20> <i>version2</i> et elles ont le m<>me num<75>ro de version majeure), 0 autrement.
</DD>
</DL>
</div>
<div><b>NUMEROS DE VERSION </b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les num<75>ros de version consistent en un ou plusieurs nombres d<>cimaux s<>par<61>s par des points, tel que 2 ou 1.162 ou 3.1.13.1. Le premier nombre est appel<65> le num<75>ro de version majeure. Des nombres sup<75>rieurs correspondent<6E> <20> des versions ult<6C>rieures d'un package, avec le nombre le plus <20> gauche plus significatif. Par exemple, la version 2.1 est ult<6C>rieure <20> 1.3 et version 3.4.6 est ult<6C>rieure <20> 3.3.5. Les champs manquants sont <20>quivalent <20> z<>ros:<3A> la version 1.3 est la m<>me que la version 1.3.0 et 1.3.0.0, donc elle est ant<6E>rieure <20> 1.3.1 ou 1.3.0.2. Un num<75>ro de version ult<6C>rieur est suppos<6F> <20>tre compatible avec un num<75>ro de version pr<70>c<EFBFBD>dent tant que les deux versions ont le m<>me num<75>ro de version majeure. Par exemple, les scripts Tcl <20>crits pour la version 2.3 d'un package devraient fonctionner sous les versions 2.3.2, 2.4, et 2.5.1. Les changements dans le num<75>ro de version majeure signifient des changements incompatible: si le code est <20>crit pour utiliser la version 2.1 d'un package, it n'est pas garanti qu'il fonctionne non modifi<66> avec soit la version 1.7.3 soit la version 3.1.<2E> <br>
</div><br>
<div><b>INDEX DE PACKAGES </b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La mani<6E>re recommand<6E>e d'utiliser les packages en Tcl est d'appeler les commandes <b>package </b><b>require</b> et <b>package provide</b> dans les scripts, et d'utiliser la fonction <A HREF="146.htm"><b>pkg_mkIndex</b></A> pour cr<63>er des fichiers index de package. Une fois que vous avez fait ceci, les packages seront charg<72>s automatiquement en r<>ponse aux commandes<b> package require</b>. Voir la documentation d <A HREF="146.htm"><b>pkg_mkIndex</b></A> pour les d<>tails. </div><br>
<div>Derni<EFBFBD>re r<>vision: 7.5</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="142.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="144.htm"><b>Suivant</b></A></div>
</BODY></HTML>

View File

@@ -0,0 +1,30 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>pkg::create&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">pkg::create <20> Construit une commande <b>package ifneeded</b> appropri<72>e pour un package donn<6E>
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>::pkg::create </b><i>-name packageName</i> <i>-version packageVersion</i> ?<i>-load filespec</i>? ... ?<i>-source </i><i>filespec</i>? ...
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>::pkg::create</b> est une fonction utilitaire qui fait partie de la biblioth<74>que standard Tcl. Elle est utilis<69>e pour cr<63>er une commande <b>package ifneeded</b> appropri<72>e pour une sp<73>cification de package donn<6E>e. Elle peut <20>tre utilis<69>e pour construire un fichier <b>pkgIndex.tcl</b> utilis<69> avec le m<>canisme<A HREF="143.htm"><b> package</b></A>.
</div><br>
<div><b>OPTIONS</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les param<61>tres support<72>s sont:
<DL>
<DT><b>-name</b> <i>packageName</i></DT><DD>Ce param<61>tre sp<73>cifie le nom du package. Il est requis. </DD>
<DT><b>-version</b> <i>packageVersion</i></DT><DD>Ce param<61>tre sp<73>cifie la version du package. Il est requis. </DD>
<DT><b>-load</b> <i>filespec</i><br></DT><DD>Ce param<61>tre sp<73>cifie une biblioth<74>que binaire qui doit <20>tre charg<72> avec la commande <A HREF="134.htm"><b>-load</b></A>. <i>filespec</i> est une liste de deux <20>l<EFBFBD>ments. Le premier <20>l<EFBFBD>ment est le nom du fichier <20> charger. Le second, l'<27>l<EFBFBD>ment optionnel est une liste de commandes fournies en chargeant ce fichier. Si la liste des fonctions est vide ou omise, <b>::pkg::create</b> pr<70>pare la biblioth<74>que <20> un chargement direct (voir <A HREF="146.htm"><b>pkg_mkIndex</b></A>). N'importe quel nombre de param<61>tres <A HREF="134.htm"><b>-load</b></A> peut <20>tre sp<73>cifi<66>.
</DD>
<DT><b>-source</b> <i>filespec</i><br></DT><DD>Ce param<61>tre est semblable au param<61>tre <A HREF="134.htm"><b>-load </b></A>, except<70> qu'il sp<73>cifie une biblioth<74>que Tcl qui doit <20>tre charg<72>e avec la commande<A HREF="163.htm"><b> source</b></A>. N'importe quel nombre de param<61>tres <A HREF="163.htm"><b>-source</b></A> peut <20>tre sp<73>cifi<66>. </DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Au moins un param<61>tre<A HREF="134.htm"><b>-load</b></A> ou <A HREF="163.htm"><b>-source</b></A> doit <20>tre donn<6E>. </div><br>
<div>Derni<EFBFBD>re r<>vision: 8.3</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="143.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="145.htm"><b>Suivant</b></A></div>
</BODY></HTML>

18
hlp/fr/tcl/pid.htm Normal file
View File

@@ -0,0 +1,18 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>pid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">pid <20> R<>cup<75>re l'id(s) de processus
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>pid </b>?<i>fileId</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Si l'argument <i>fileId</i> est donn<6E> alors il doit normalement se r<>ferer <20> un processus pipeline cr<63><72> avec la commande<A HREF="142.htm"><b> open</b></A>. Dans ce cas la commande <b>pid</b> renverra une liste dont les <20>l<EFBFBD>ments sont les identificateurs de processus de tout les processus dans le pipeline, dans l'ordre. La liste sera vide si <i>fileId</i> se ref<65>re <20> un fichier ouvert qui n'est pas un processus pipeline. Si aucun argument <i>fileId</i> n'est donn<6E> alors <b>pid</b> retourne le identificateur processus du processus courant. Tous les identificateurs de processus sont renvoy<6F>s comme cha<68>nes d<>cimales. </div><br>
<div>Derni<EFBFBD>re r<>vision: 7.0</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="144.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="146.htm"><b>Suivant</b></A></div>
</BODY></HTML>

View File

@@ -0,0 +1,58 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>pkg_mkIndex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">pkg_mkIndex - Construit un index pour le chargement automatique des packages
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>pkg_mkIndex ?</b><i>-lazy</i>? ?<i>-load pkgPat</i>? ?<i>-verbose</i>? <i>dir</i> ?<i>pattern pattern ...</i>?<br>
</div><br>
<div><b>DESCRIPTION</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>Pkg_mkIndex</b> est une fonction utilitaire qui fait partie de la biblioth<74>que standard Tcl. Elle est utilis<69>e pour cr<63>er des fichiers index qui permettent aux packages <20> <20>tre charg<72>s automatiquement quand des commandes <b>package require</b> sont ex<65>cut<75>es. Pour utiliser <b>pkg_mkIndex</b>, suivre ces <20>tapes:
<DL>
<DT>&#91;1]</DT><DD>Cr<EFBFBD>er le(s) package(s). Chaque package peut consister en un ou plusieurs fichiers script Tcl ou fichiers binaires. Les fichiers binaires doivent <20>tre compatibles pour le chargement avec la commande <A HREF="134.htm"><b>load</b></A> avec un seul argument; par exemple, si le fichier est <b>test.so</b> il doit <20>tre possible de charger ce fichier avec la commande <b>load test.so</b>. Chaque fichier script doit contenir une commande <b>package provide</b> pour d<>clarer le package et son num<75>ro de version, et chaque fichier binaire doit contenir un appel <20> <A HREF="59.htm"><b>Tcl_PkgProvide</b></A>. </DD>
<DT>&#91;2]</DT><DD>Cr<EFBFBD>er l'index en appelant <b>pkg_mkIndex</b>. L'argument <i>dir</i> donne le nom d'un r<>pertoire et chaque argument <i>pattern</i> est un mod<6F>le <A HREF="119.htm"><b>glob</b></A>-style qui choisit les scripts ou fichiers binaires dans <i>dir</i>. Le mod<6F>le par d<>faut est <b>*.tcl</b> et <b>*.&#91;info </b><b>sharedlibextension]</b>. <br>
<b>Pkg_mkIndex</b> cr<63>era un fichier <b>pkgIndex.tcl</b> dans <i>dir</i> avec l'information de package au sujet de tous les fichiers donn<6E>s par les arguments<i> pattern</i>. Ceci est fait par chargement de chaque fichier dans un interpr<70>teur esclave et constatation de quels packages et nouvelles commandes apparaissent (c'est pourquoi il est essentiel d'avoir des commandes <b>package provide</b> ou un appel <20> <A HREF="59.htm"><b>Tcl_PkgProvide</b></A> dans le fichier, comme d<>crit plus haut). Si vous avez un package divis<69> en scripts et fichiers binaires, ou si vous avez des d<>pendances entre les fichiers, vous pouvez utiliser l'option <b>-</b><A HREF="134.htm"><b>load</b></A> ou ajuster l'ordre dans lequel <b>pkg_mkIndex</b> traite les fichiers. Voir CAS COMPLEXES ci-dessous.
</DD>
<DT>&#91;3]</DT><DD>Installer le package dans un sous r<>pertoire d'un des r<>pertoires donn<6E>s par la variable<b> tcl_pkgPath</b>. Si <b>&#36;tcl_pkgPath</b> contient plus d'un r<>pertoire, les packages d<>pendants de la machine (ex., ceux qui contient libraries partag<61>es binaires) doivent normalement <20>tre install<6C>s sous le premier r<>pertoire et les packages ind<6E>pendants de la machine (ex., ceux qui contiennent seulement des scripts Tcl) seront install<6C>s sous le second r<>pertoire. Le sous r<>pertoire doit inclure le script du package et/ou les fichiers binaires aussi bien que le fichier<b> pkgIndex.tcl</b>. Tant que le package est install<6C> dans un sous r<>pertoire d'un r<>pertoire de <b>&#36;tcl_pkgPath</b> il sera automatiquement trouv<75> pendant les commandes<b> package require</b>. <br>
Si vous installez le package nulle part ailleurs, alors vous devez vous assurer que le r<>pertoire contenant le package est dans la variable globale <b>auto_path</b> ou un sous r<>pertoire imm<6D>diat d'un des r<>pertoires de <b>auto_path</b>. <b>Auto_path</b> contient une liste de r<>pertoires qui sont recherch<63> par le auto-loader et le package loader; qui par d<>faut inclut <b>&#36;tcl_pkgPath</b>. Le package loader v<>rifie aussi tous les sous r<>pertoire des r<>pertoires dans <b>auto_path</b>. Vous pouvez ajouter un r<>pertoire <20> <b>auto_path</b> explicitement dans votre application, ou vous pouvez ajouter le r<>pertoire <20> votre variable d'environnement<b> TCLLIBPATH</b>: si cette variable d'environnement est pr<70>sente, Tcl initialise <b>auto_path</b> avec pendant le d<>marrage de l'application. </DD>
<DT>&#91;4]</DT><DD>Une fois les <20>tapes pr<70>cedentes accomplies, tout ce que vous avez besoin de faire pour utiliser le package est d'appeler <b>package require</b>. Par exemple, si les versions 2.1, 2.3, et 3.1 du package <b>Test</b> ont <20>t<EFBFBD> index<65>es par <b>pkg_mkIndex</b>, la commande <b>package require Test</b> rendra la version 3.1 disponible et la commande <b>package </b><b>require-exact Test 2.1</b> rendra la version 2.1 disponible. Il peut y avoir de nombreuses versions d'un package dans les fichiers d'index de <b>auto_path</b>, mais seulement un sera actuellement charg<72> dans un interpr<70>teur donn<6E>, en se basant sur le premier appel de <b>package require</b>. Diff<66>rentes versions d'un package peuvent <20>tre charg<72>es dans diff<66>rents interpr<70>teurs.
</DD>
</DL>
</div><br>
<div><b>OPTIONS</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les commutateurs optionnels sont:
<DL>
<DT><b>-lazy</b></DT><DD>L'index g<>n<EFBFBD>r<EFBFBD> retardera le chargement du package jusqu'<27> l'utilisation d'une des commandes fourni par le package, au lieu de le charger imm<6D>diatement avec <b>package require</b>.
</DD>
<DT><b>-load </b><i>pkgPat</i></DT><DD>Le processus d'index prechargera tous les packages existants dans l'interpr<70>teur courant et correspondants <20> <i>pkgPat</i> dans l'interpr<70>teur esclave utilis<69> pour g<>n<EFBFBD>rer l' index. La correspondance de mod<6F>le utilise les r<>gles de cha<68>ne de correspondance. Voir CAS COMPLEXES ci-dessous.
</DD>
<DT><b>-verbose</b></DT><DD>G<EFBFBD>n<EFBFBD>re une sortie pendant le processus d'indexage. La sortie se fait via la fonction<b> tclLog</b>, qui par d<>faut affiche sur stderr.
</DD>
<DT><b>--</b></DT><DD>Termine les flags, dans les cas ou <i>dir</i> commence avec un tiret.
</DD>
</DL>
</div><br>
<div><b>PACKAGES ET AUTO-LOADER</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les utilit<69>s de gestion de package font double emploi avec l'auto-loader, dans le sens ou ils pr<70>parent tous les deux les fichiers <20> <20>tre charg<72>s <20> la demande. N<>anmoins, la gestion package est un m<>canisme de plus haut niveau qui utilise l'auto-loader pour la derni<6E>re <20>tape dans le processus de chargement. Il est g<>n<EFBFBD>ralement meilleur d'indexer un package avec <b>pkg_mkIndex</b> plut<75>t que <A HREF="129.htm"><b>auto_mkindex</b></A> parce que le m<>canisme de package fournit un contr<74>le de version: plusieurs versions d'un package peuvent <20>tre rendues disponibles dans les fichiers d'index, avec diff<66>rentes applications utilisant diff<66>rentes versions bas<61>es sur des commandes<b> package require</b>. Au contraire, <A HREF="129.htm"><b>auto_mkindex</b></A> ne reconna<6E>t pas les versions donc il peut seulement g<>rer une seule version de chaque package. Ce n'est probablement pas une bonne id<69>e d'indexer un package donn<6E> avec <b>pkg_mkIndex</b> et <A HREF="129.htm"><b>auto_mkindex</b></A>. Si vous utilisez <b>pkg_mkIndex</b> pour indexer un package, ses commandes ne peuvent pas appel<65>es jusqu'a ce que <b>package require</b> ait <20>t<EFBFBD> utilis<69> pour choisir une version; au contraire, les packages index<65>s avec <A HREF="129.htm"><b>auto_mkindex</b></A> peuvent <20>tre utilis<69>s imm<6D>diatement car il n'y a pas de contr<74>le de version.
</div> <br>
<div><b>COMMENT CA MARCHE ?</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>Pkg_mkIndex</b> depend de la commande<b> package unknown</b>, de la commande<b> package ifneeded</b>, et de l'auto-loader. la premi<6D>re fois qu'une commande <b>package require</b> est appel<65>e, le script <b>package unknown</b> est appel<65>. Ceci est fix<69> par l'initialisation Tcl dans un script qui <20>value tous les fichiers <b>pkgIndex.tcl</b> dans le <b>auto_path</b>. Les fichiers <b>pkgIndex.tcl</b> contiennent des commandes <b>package ifneeded</b> pour chaque version de chaque package disponible; ces commandes appellent <b>package provide</b> pour annoncer la disponibilit<69> du package, et elles <20>crivent l'information d'auto-loader pour charger les fichiers du package. Si le flag <i>-lazy</i> a <20>t<EFBFBD> fourni quand <b>pkgIndex.tcl</b> a <20>t<EFBFBD> g<>n<EFBFBD>r<EFBFBD>, un fichier donn<6E> d'une version donn<6E>s d'un package donn<6E> n'est pas charg<72> jusqu'au premier appel d'une de ses commandes dans l'interpr<70>teur, mais vous pourrez appeler les commandes et elles seront auto-charg<72>es. <br>
</div> <br>
<div><b>CHARGEMENT DIRECT</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">Certains packages, par exemple packages qui utilisent les namespaces et exportent descommandes ou ceux qui exigent une initialisation sp<73>ciale, peuvent choisir que leurs fichiers package seront charg<72>s imm<6D>diatement <20> <b>package require</b> au lieu de retarder le chargement <20> la premi<6D>re utilisation d'une commande du package. C'est le mode par d<>faut pendant la g<>n<EFBFBD>ration de l'index de package. Ceci peut <20>tre surcharg<72> en specifiant l'argument<i> </i><i>-lazy</i>.
</div><br>
<div><b>CAS COMPLEXES </b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La plupart des cas complexes de d<>pendances entre scripts et fichiers binaires, et packages divis<69>s entre scripts et fichiers binaires sont g<>r<EFBFBD>es correctement. N<>anmoins, vous pouvez avoir <20> ajuster l'ordre dans lequel les fichiers sont trait<69>s par <b>pkg_mkIndex</b>. Ce probl<62>me est d<>crit en d<>tail ci-dessous. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si chaque script ou fichier contient un package, et que les packages sont contenus dans un seul fichier, alors les choses sont faciles. Vous sp<73>cifiez simplement tous les fichiers <20> indexer dans n'importe quel ordre avec quelques mod<6F>les glob. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">En general, il est OK pour les scripts d'avoir des d<>pendances avec d'autres packages. Si les scripts contiennent des commandes<b> package require</b>, elles sont extraites dans l'interpr<70>teur utilis<69> pour traiter les scripts, donc elles ne causent pas de probl<62>mes. Si les scripts appellent d'autre packages dans le code global, ces appels sont g<>r<EFBFBD>s par une commande<A HREF="174.htm"><b> unknown</b></A>. N<>anmoins, si les scripts font r<>f<EFBFBD>rence <20> des variables d'un autre package dans le code global, cela causera des erreurs. C'est aussi un mauvais style de codage. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si les fichiers binaires ont des d<>pendances avec d'autres packages, les choses peuvent devenir compliqu<71>es parcequ'il n'est pas possible d'extraire des API niveau C telle que <A HREF="59.htm"><b>Tcl_PkgRequire</b></A> en chargeant un fichier binaire. Par exemple, supposez que le package BLT exige Tk, et exprime ceci avec un appel de <A HREF="59.htm"><b>Tcl_PkgRequire</b></A> dans sa routine<b> Blt_Init</b>. Pour supporter ceci, vous devez ex<65>cuter <b>pkg_mkIndex</b> dans un interpr<70>teur qui aura charg<72> Tk . Vous pouvez accomplir ceci avec l'option<b> -</b><A HREF="134.htm"><b>load</b></A><i>pkgPat</i>. Si vous sp<73>cifiez cette option, <b>pkg_mkIndex</b> chargera tous les packages list<73>s par <b>info loaded</b> et qui correspondent <20> <i>pkgPat</i> dans l'interpr<70>teur utilis<69> pour traiter les fichiers. Dans la plupart des cas ceci satisfera l'appel <20> <A HREF="59.htm"><b>Tcl_PkgRequire</b></A> fait par les fichiers binaires. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si vous indexez deux fichiers binaires et qu'un d<>pend de l'autre, vous devez sp<73>cifier celui qui a les d<>pendances en dernier. De cette fa<66>on, celui sans d<>pendances sera charg<72> et index<65>, et alors le package qu'il fournit sera disponible quand le second fichier sera trait<69>. Vous pouvez aussi avoir besoin de charger le premier package dans un interpr<70>teur temporaire utilis<69> pour cr<63>er l'index en utilisant le flag <A HREF="134.htm"><b>-load</b></A>; vous pourrez sp<73>cifier des mod<6F>les package qui ne sont pas encore charg<72>s. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si vous avez un package qui est divis<69> en scripts et fichiers binaires, alors vous devez <20>viter le flag <A HREF="134.htm"><b>-load</b></A>. Le probl<62>me est que si vous chargez un package avant de calculer l'index, il masque tout autre fichier qui fait partie du m<>me package. Si vous devez utiliser <A HREF="134.htm"><b>-load</b></A>, alors vous devez sp<73>cifier les scripts en premier; autrement le package charg<72> du fichier binaire peut masquer le package d<>fini par les scripts. </div><br>
<div>Derni<EFBFBD>re r<>vision: 8.3</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="145.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="147.htm"><b>Suivant</b></A></div>
</BODY></HTML>

20
hlp/fr/tcl/proc.htm Normal file
View File

@@ -0,0 +1,20 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>proc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">proc - Cr<43>e une fonction Tcl
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>proc </b><i>name args body</i>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>proc</b> cr<63>e une nouvelle fonction Tcl nomm<6D>e <i>name</i>, rempla<6C>ant toute commande ou fonction existante de ce nom. Chaque fois que la nouvelle commande est appel<65>e, le contenu de <i>body</i> sera ex<65>cut<75> par l'interpr<70>teur Tcl. Normalement, <i>name</i> est non qualifi<66> (n'inclut pas les noms des namespaces contenant), et la nouvelle fonction est cr<63><72>e dans le namespace courant. Si <i>name</i> inclut un quelconque qualificateurs namespace, la fonction est cr<63><72>e dans le namespace sp<73>cifi<66> . <i>Args</i> sp<73>cifie les arguments formels <20> la fonction. Ils consiste d'une liste, qui peur <20>tre vide, dont chaque <20>l<EFBFBD>ments sp<73>cifie un argument. Chaque sp<73>cificateur d'argument est aussi une liste avec soit un ou deux champs. S'il y a seul champ dans le sp<73>cificateur alors c'est le nom de l'argument; s'il y a deux champs, alors le premier est le nom de l'argument et le second est sa valeur par d<>faut. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Quand <i>name</i> est appel<65>e une variable locale sera cr<63><72>e pour chacun des arguments formel <20> la fonction; leur valeur sera la valeur de l'argument correspondant dans la commande appel<65>e ou la valeur par d<>faut de l'argument. Les arguments avec une valeur par d<>faut n'ont pas besoin <20>tre sp<73>cifi<66>s dans un appel de fonction. N<>anmoins, il doit y avoir assez d'arguments pour tous les arguments qui n'ont pas de valeur par d<>faut, et il ne doit pas y avoir d'arguments suppl<70>mentaires. Il y a un cas sp<73>cial pour permettre les fonctions avec un nombre variable d'arguments. Si le dernier argument a le nom <b>args</b>, alors un appel <20> la fonction peut contenir plus d'arguments que la fonction en a. Dans ce cas, tous les arguments <20> partir de celui qui serait assign<67> <20> <b>args</b> sont combin<69>s en une liste (comme si la commande <A HREF="132.htm"><b>list</b></A> avait <20>t<EFBFBD> utilis<69>e); ces valeurs combin<69>es sont assign<67>es <20> la variable locale <b>args</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Quand <i>body</i> est ex<65>cut<75>,les noms de variables normalement se ref<65>rent aux variables locales, qui sont cr<63><72>es automatiquement quand r<>f<EFBFBD>renc<6E>es et effac<61>es quand la fonction retourne. Une variable locale est automatiquement cr<63><72>e pour chacun de ses arguments de fonction. Les variables globales peuvent seulement <20>tre acc<63>d<EFBFBD>e en appelant la commande <A HREF="120.htm"><b>global</b></A> ou la commande<A HREF="178.htm"><b> upvar</b></A>. Les variables namespace peuvent seulement <20>tre acc<63>d<EFBFBD>es en appelant la commande <A HREF="179.htm"><b>variable</b></A> ou la commande<A HREF="178.htm"><b> upvar</b></A>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>proc</b> retourne une cha<68>ne vide. Quand une fonction est appel<65>e, la valeur de retour de la fonction est la valeur sp<73>cifi<66>e dans une instruction<A HREF="157.htm"><b> return</b></A>. Si la fonction n'ex<65>cute pas un <A><b>return</b></A> explicite , alors sa valeur de retour est la valeur de la derni<6E>re commande ex<65>cut<75>e dans le corps de la fonction. Si une erreur se produit pendant l'ex<65>cution du corps la fonction, alors la fonction renverra cette m<>me erreur. </div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="146.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="148.htm"><b>Suivant</b></A></div>
</BODY></HTML>

25
hlp/fr/tcl/puts.htm Normal file
View File

@@ -0,0 +1,25 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>puts&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">puts - Ecrit dans un canal
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>puts </b>?<b>-nonewline</b>? ?<i>channelId</i>? <i>string</i>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Ecrit les caract<63>res donn<6E>s par <i>string</i> dans le canal donn<6E> par <i>channelId</i>. <i>ChannelId</i> doit <20>tre un identificateur de canal tel que celui renvoy<6F> par un pr<70>c<EFBFBD>dent appel de <A HREF="142.htm"><b>open</b></A> ou <A HREF="162.htm"><b>socket</b></A>. It doit avoir <20>t<EFBFBD> ouvert pour une sortie. Si aucun <i>channelId</i> n'est sp<73>cifi<66> alors il est par defaut de <b>stdout</b>. <b>Puts</b> normalement emet un caract<63>re newline apr<70>s <i>string</i>, mais cette fonctionnalit<69> peut <20>tre supprim<69> en specifiant le switch<b> -</b> <b>nonewline</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les caract<63>res newline dans la sortie sont traduits par <b>puts</b> en s<>quences fin de ligne sp<73>cifique <20> la plate-forme en accord avec la valeur courante de l'option <b>-translation</b> pour le canal (par exemple, sur les PCs les saut de lignes sont normalement remplac<61> avec carriage-return-linefeed s<>quences;&nbsp; sur Macintosh les saut de lignes sont normalement remplac<61> avec carriage- return). Voir la page de manuel <A HREF="109.htm"><b>fconfigure</b></A> pour une discussion sur la mani<6E>re dans laquelle <A HREF="109.htm"><b>fconfigure</b></A> modifie la sortie. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Tcl met la sortie en tampon en interne, donc les caract<63>res <20>crits avec <b>puts</b> peuvent ne pas apparaitre imm<6D>diatement sur le fichier ou p<>riph<70>rique de sortie;&nbsp; Tcl retarde normalement la sortie jusqu'a ce que le tampon soit plein ou le canal ferm<72>. Vous pouvez forcer la sortie <20> apparaitre imm<6D>diatement avec la commande<A HREF="114.htm"><b> flush</b></A>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Quand le tampon de sortie est plein, la commande <b>puts</b> bloquera&nbsp; normalement jusqu'a ce que toutes les donn<6E>es en tampon aient <20>t<EFBFBD> accept<70>es pour sortie par le syst<73>me d'exploitation. Si <i>channelId</i> est en mode non bloquant alors la commande <b>puts</b> ne bloquera pas m<>me si le syst<73>me d'exploitation ne peut pas accepter&nbsp; les donn<6E>es. Par contre, Tcl continue <20> mettre les donn<6E>es en tampon et les <20>crit en arri<72>re-plan aussi vite que le sous-jacent fichier ou p<>riph<70>rique peut les accepter. L'application doit utiliser la boucle d'<27>v<EFBFBD>nement Tcl pour que la sortie non bloquante fonctionne; autrement Tcl ne voit jamais que le fichier ou le p<>riph<70>rique est pr<70>t <20> sortir plus de donn<6E>es. Il est possible pour une arbitrairement large quantit<69> de donn<6E>es d'<27>tre en tampon pour un canal en mode non bloquant, ce qui peut consommer une large quantit<69> de m<>moire. Pour <20>viter de gaspiller la m<>moire, les I/O nonbloquantes doivent normalement <20>tre utilis<69>es d'une fa<66>on pilot<6F>e par <20>v<EFBFBD>nement avec la commande <A HREF="112.htm"><b>fileevent</b></A> (n'appellez pas <b>puts</b> <20> moins que vous ayez recemment notifi<66> via un <20>v<EFBFBD>nement fichier que le canal est pr<70>t <20> afficher plus de donn<6E>es).
</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><A HREF="112.htm">fileevent</A>(n)</div><br>
<div>Derni<EFBFBD>re r<>vision: 7.5</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="147.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="149.htm"><b>Suivant</b></A></div>
</BODY></HTML>

15
hlp/fr/tcl/pwd.htm Normal file
View File

@@ -0,0 +1,15 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>pwd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">pwd - Retourne le r<>pertoire de travail courant
</div> <br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>pwd</b></div><br>
<b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Renvoie le nom de chemin du r<>pertoire de travail courant. </div><br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="148.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="150.htm"><b>Suivant</b></A></div>
</BODY></HTML>

399
hlp/fr/tcl/re_syntax.htm Normal file
View File

@@ -0,0 +1,399 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>re_syntax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">re_syntax <20> Syntaxe des expressions rationelles Tcl
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Une <i>regular expression</i> (expression rationelle) d<>crit des cha<68>nes de caract<63>res. C'est un mod<6F>le qui correspond <20> certaines cha<68>nes et ne correspond pas <20> d'autres
</div><br>
<div><b>DIFFERENTES SORTES DE REs</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les expressions rationelles (&quot;RE&quot;s), comme d<>fini par POSIX, existent de deux sortes: <i><EFBFBD>tendue</i> REs (&quot;EREs&quot;) et <i>basiques</i> REs (&quot;BREs&quot;). Les EREs sont celles du <i>egrep</i> traditionel, alors que BREs sont celles du <i>ed</i> traditionel. Cette impl<70>mentation ajoute une troisi<73>me sorte, <i>advanced</i> REs (&quot;AREs&quot;), EREs avec quelques extensions significatives. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette page de manueluel d<>crit d'abord les AREs. Les BREs existent principalement pour compatibilit<69> ascendante avec quelques anciens programmes; elles seront vues <20> la fin. Les EREs POSIX sont presque un sous ensemble exact des AREs. Les fonctionnalit<69>s des AREs qui ne sont pas pr<70>sentes dans les EREs seront indiqu<71>es <br>
</div><br>
<div><b>SYNTAXE DES EXPRESSIONS RATIONELLES </b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les expressions Tcl rationelles sont impl<70>ment<6E>es en utilisant le package <20>crit par Henry Spencer, bas<61> sur les spec 1003.2 et quelques unes (pas toutes) des extensions Perl5 (thanks, Henry!) la plus grande partie de la description des expressions rationelles ci-dessous est copi<70>e texto de sa page de manuel. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Une ARE est compos<6F>e d'une ou plusieurs <i>branches</i>, s<>par<61>es par `<b>|</b>', <20>gales <20> tout ce qui correspond <20> quelconque des <i>branches</i>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Une <i>branche</i> est z<>ro ou plusieurs <i>contraintes</i> ou <i>atomes quantifi<66></i>, concat<61>n<EFBFBD>s. C'est une correspondance au premier, suivi par une correspondance au second, etc; une <i>branche </i>vide correspond <20> la cha<68>ne vide. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Un <i>atome quantifi<66></i> est un <i>atome</i> eventuellement suivi d'un <i>quantificateur</i>. Sans <i>quantificateur</i>, c'est une correspondance <20> <i>l'atome</i>. Les <i>quantificateurs</i>, et leur <i>atome</i> correspondant, sont: </div>
<div ALIGN="LEFT" style="margin-left: 120px;">
<DL>
<DT><b>*</b></DT><DD>une s<>quence de 0 ou plus correspondances <20> <i>l'atome</i>
</DD>
<DT><br><b>+</b>
</DT><DD>une s<>quence de 1 ou plus correspondances <20> <i>l'atome</i>
</DD>
<DT><br><b>?</b>
</DT><DD>une s<>quence de 0 ou 1 correspondance <20> <i>l'atome</i>
</DD>
<DT><br><b>&#123;</b><i>m</i><b>}</b>
</DT><DD>une s<>quence de exactement <i>m</i> correspondances <20> <i>l'atome</i>
</DD>
<DT><br><b>&#123;</b><i>m</i><b>,}</b>
</DT><DD>une s<>quence de <i>m</i> ou plus correspondances <20> <i>l'atome</i>
</DD>
<DT><br><b>&#123;</b><i>m</i><b>,</b><i>n</i><b>}</b>
</DT><DD>une s<>quence de <i>m</i> <20> <i>n</i> (incluses) correspondances <20> <i>l'atome</i>; <i>m</i> inf<6E>rieur <20> <i>n</i>
</DD>
<DT><br><b>*?&nbsp; +?&nbsp; ??&nbsp; &#123;</b><i>m</i><b>}?&nbsp; &#123;</b><i>m</i><b>,}?&nbsp; &#123;</b><i>m</i><b>,</b><i>n</i><b>}?</b>
</DT><DD><i>quantificateurs non-greedy</i>, qui correspondent au m<>me possibilit<69>s, mais se ref<65>rent au plus petit nombre plut<75>t qu'au plus grand nombre de correspondances (voir CORRESPONDANCES)
</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les formes utilisant <b>&#123;</b> et <b>}</b> sont appel<65>es <i>limites</i>. Les nombres <i>m</i> et <i>n</i> sont des entiers d<>cimaux non sign<67>s avec des valeurs autoris<69>es de 0 <20> 255 inclus. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Un <i>atome</i> est l'un de: </div>
<div ALIGN="LEFT" style="margin-left: 120px;">
<DL>
<DT><b>(</b><i>re</i><b>)</b></DT><DD>(o<> <i>re</i> est toute expression rationelle) correspond une correspondance <20> <i>re</i>, avec la correspondance marqu<71>e pour rapport
</DD>
<DT><br><b>(?:</b><i>re</i><b>)</b>
</DT><DD>comme pr<70>cedent, mais sans reporting (une &quot;non-capturing&quot; ensemble de parenth<74>ses)
</DD>
<DT><br><b>()</b>
</DT><DD>correspond <20> une cha<68>ne vide, marqu<71>e pour rapport.
</DD>
<DT><br><b>(?:)</b>
</DT><DD>correspond <20> une cha<68>ne vide, sans rapport
</DD>
<DT><br><b>&#91;</b><i>chars</i><b>]</b>
</DT><DD>une <i>bracket expression</i>, correspondante <20> un quelconque <i>chars</i> (voir BRACKET EXPRESSIONS pour plus de d<>tail)
</DD>
<DT><br><b>.</b>
</DT><DD>correspond <20> un seul caract<63>re quelconque
</DD>
<DT><br><b>&#92;</b><i>k</i>
</DT><DD>(o<> <i>k</i> est un caract<63>re non-alphanum<75>rique) correspond au caract<63>re interpr<70>t<EFBFBD> comme un caract<63>re ordinaire, e.x &#92;&#92; correspond un caract<63>re antislash
</DD>
<DT><br><b>&#92;</b><i>c</i>
</DT><DD>o<EFBFBD> <i>c</i> est alphanum<75>rique (<28>ventuellement suivi par autre caract<63>res), un <i>escape</i> (AREs seulement), voir ESCAPES ci-dessous
</DD>
<DT><br><b>&#123;</b>
</DT><DD>quand suivi par un caract<63>re autre qu'un chiffre, correspond <20> l'accolade ouvrante `<b>&#123;</b>'; quand suivi par un chiffre, c'est le d<>but d'un <i>intervalle</i> (voir plus haut)
</DD>
<DT><br><i>x</i>
</DT><DD>o<EFBFBD> <i>x</i> est un simple caract<63>re sans autre signification, correspond <20> ce caract<63>re.
</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Une <i>contrainte</i> correspond <20> une cha<68>ne vide quand des conditions sp<73>cifique sont rencontr<74>es. Une <i>contrainte</i> ne peut pas <20>tre suivie par un <i>quantificateur</i>. Les <i>contraintes</i> simples sont comme suit; quelques autres sont d<>crite plus tard, sous ESCAPES. </div>
<div ALIGN="LEFT" style="margin-left: 120px;">
<DL>
<DT><b>^</b></DT><DD>correspond au d<>but d'une ligne
</DD>
<DT><br><b>&#36;</b>
</DT><DD>correspond <20> la fin d'une ligne
</DD>
<DT><br><b>(?=</b><i>re</i><b>)</b>
</DT><DD><i>positive lookahead</i> (AREs seulement), correspond au point quelconque o<> une sous cha<68>ne correspondante <20> <i>re</i> commence
</DD>
<DT><br><b>(?!</b><i>re</i><b>)</b>
</DT><DD><i>negative lookahead</i> (AREs seulement), correspond au point quelconque o<> aucune sous cha<68>ne correspondante <20> <i>re</i> ne commence</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les <i>contraintes</i> <i>lookahead</i> ne peuvent pas contenir de r<>f<EFBFBD>rences arri<72>res (voir plus loin), et toutes parenth<74>ses <20> l'int<6E>rieur sont consider<65>es non-capturantes. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Une RE ne peut pas finir avec `<b>&#92;</b>'
</div><br>
<div><b>BRACKET EXPRESSIONS</b> (EXPRESSIONS CROCHETS)</div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Une <i>expression crochets </i> est une liste de caract<63>res entour<75>e de `<b>&#91;]</b>'. Elle correspond normalement <20> tout caract<63>re de la liste (mais voir ci-dessous). Si la liste commence avec `<b>^</b>', elle correspond <20> tout caract<63>re (mais voir ci-dessous) <i>non inclus</i> dans la liste. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si deux caract<63>res de la liste sont s<>par<61>s par `<b>-</b>', c'est un raccourci pour l'<i>intervalle </i> complet des caract<63>res entre les deux (inclus) dans la s<>quence ordonn<6E>e, ex. <b>&#91;0-9]</b> en ASCII correspond <20> tout chiffre d<>cimal. Deux intervalles ne peuvent pas partager une limite, donc par ex. <b>a-c-e</b> est ill<6C>gal. Les intervalles sont tr<74>s d<>pendant de l'ordre de tri, et les programmes portables ne peuvent s'appuyer dessus. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Pour inclure un <b>]</b> ou <b>-</b> literal dans la liste, la m<>thode la plus simple est de l'entourer de <b>&#91;.</b> et <b>.]</b> pour en faire un&nbsp; <20>l<EFBFBD>ment d'assemblage (voir ci-dessous). Alternativement, placez le en premier (suivant un `<b>^</b>' eventuel), ou (AREs seulement) faites le preceder de `<b>&#92;</b>'. Alternativement, pour `<b>-</b>', faites en le dernier caract<63>re, ou le second point d'un intervalle. Pour utiliser un <b>-</b> literal comme le premier point d'un intervalle, faites en un <20>l<EFBFBD>ment d'assemblage ou (AREs seulement) faites le preceder de `<b>&#92;</b>'. A l'exception de ceux-ci, de toutes combinaisons utilisant <b>&#91;</b> (voir paragraphes suivant), et les echappements, tout autres des caract<63>res sp<73>ciaux perdent leur signification sp<73>ciale <20> l'int<6E>rieur d'une expression crochet. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Dans une expression crochet, un <20>l<EFBFBD>ment d'assemblage (un caract<63>re, une s<>quence multi-caract<63>re qui est assembl<62>e comme si c'etait un simple caract<63>re, ou un nom de s<>quence d'assemblage pour les deux) entour<75> de <b>&#91;.</b> et <b>.]</b> <20>quivaut <20> la s<>quence de caract<63>res de cet <20>l<EFBFBD>ment d'assemblage. La s<>quence est un seul <20>l<EFBFBD>ment de liste de l'expression crochet. Une expression crochet dans une locale qui a des <20>l<EFBFBD>ments d'assemblages multi-caract<63>re peut donc correspondre <20> plus d'un caract<63>re. Ainsi (insidieusement), une expression crochet qui commence avec <b>^</b> peut correspond <20> des <20>l<EFBFBD>ment d'assemblages multi-caract<63>re m<>me si aucun d'eux n'apparait dans l'expression crochet! (<i>Note:</i> Tcl n'a pas d'<27>l<EFBFBD>ment d'assemblages multi-caract<63>re. Cette information est seulement pr<70>sente pour&nbsp; illustration.) </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Par exemple, supposez une s<>quence d'assemblage incluant un <20>l<EFBFBD>ment d'assemblage<b> ch</b> multi-caract<63>re. Ensuite la RE <b>&#91;&#91;.ch.]]*c</b> (z<>ro ou plus <b>ch</b>'s suivi par <b>c</b>) correspond les cinq premiers caract<63>res de `<b>chchcc</b>'. Egalement, la RE <b>&#91;^c]b</b> correspond <20> tout de `<b>chb</b>' (parce que <b>&#91;^c]</b> correspond au multi-caract<63>re <b>ch</b>). </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Dans une expression crochet, un <20>l<EFBFBD>ment d'assemblage entour<75> de <b>&#91;=</b> et <b>=]</b> est une classe d'<27>quivalence, rempla<6C>ant la s<>quence de caract<63>res de tout <20>l<EFBFBD>ment d'assemblage <20>quivalent <20> celui-ci, incluant lui-m<>me. (Si il n'y a pas d'autre <20>l<EFBFBD>ment d'assemblage <20>quivalent, le traitement est le m<>me que si les d<>limiteurs&nbsp; <20>taient `<b>&#91;.</b>' et `<b>.]</b>'.) Par exemple, si <b>o</b> et <b><EFBFBD></b> sont les membres d'une classe d'<27>quivalence, alors `<b>&#91;&#91;=o=]]</b>', `<b>&#91;&#91;=<3D>=]]</b>', et `<b>&#91;o<EFBFBD>]</b>' sont tous synonymes. Une classe d'<27>quivalence ne peut pas <20>tre le point final d'un intervalle. (<i>Note:</i>&nbsp; Tcl impl<70>mente seulement la locale Unicode. Il ne definit aucune classes d'<27>quivalence. Les exemples pr<70>c<EFBFBD>dents sont juste des illustrations.) </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Dans une expression crochet, le nom d'une <i>character class</i> entour<75>e de <b>&#91;:</b> et <b>:]</b> <20>quivaut <20> la liste de tous les caract<63>res (pas tous les <20>l<EFBFBD>ments d'assemblage!) appartenant <20> cette classe. Les classes standard de caract<63>res sont: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">
<FONT FACE="Times New Roman, Times, Serif" SIZE="-5"><TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
<b>alpha</b>
</TD>
<TD>
Une lettre.
</TD>
</TR>
<TR>
<TD>
<b>upper</b>
</TD>
<TD>
Une lettre majuscule.
</TD>
</TR>
<TR>
<TD>
<A HREF="290.htm"><b>lower</b></A>
</TD>
<TD>
Une lettre minuscule.
</TD>
</TR>
<TR>
<TD>
<b>digit</b>
</TD>
<TD>
Un chiffre d<>cimal.
</TD>
</TR>
<TR>
<TD>
<b>xdigit</b>
</TD>
<TD>
Un chiffre hexad<61>cimal.
</TD>
</TR>
<TR>
<TD>
<b>alnum</b>
</TD>
<TD>
Un caract<63>re alphanum<75>rique (lettre ou chiffre).
</TD>
</TR>
<TR>
<TD>
<b>print</b>
</TD>
<TD>
Un caract<63>re alphanum<75>rique (m<>me que <b>alnum</b>).
</TD>
</TR>
<TR>
<TD>
<b>blank</b>
</TD>
<TD>
Un espace ou tabulation.>
</TD>
</TR>
<TR>
<TD>
<b>space</b>
</TD>
<TD>
Un caract<63>re produisant un espace dans du texte affich<63>.
</TD>
</TR>
<TR>
<TD>
<b>punct</b>
</TD>
<TD>
Un caract<63>re de ponctuation.
</TD>
</TR>
<TR>
<TD>
<b>graph</b>
</TD>
<TD>
Un caract<63>re avec une repr<70>sentation visible. </TD>
</TR>
<TR>
<TD>
<b>cntrl</b>
</TD>
<TD>
Un caract<63>re de contr<74>le. </TD>
</TR>
</TABLE>
</FONT>
</div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Une locale peut en fournir d'autres. (Notez que l'impl<70>mentation Tcl courante a seulement une locale: la locale Unicode.) Une classe de caract<63>re ne peut pas <20>tre utilis<69>e comme point final d'un intervalle. </div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Il y a deux cas sp<73>ciaux d'expressions crochet: les expressions crochet <b>&#91;&#91;:&lt;:]]</b> et <b>&#91;&#91;:&gt;:]]</b> sont des contraintes, correspondant <20> des cha<68>ne vides respectivement au d<>but et <20> la fin d'un mot. Un mot est d<>fini comme une s<>quence de mots caract<63>res qui est ni pr<70>c<EFBFBD>d<EFBFBD>e&nbsp; ni suivie par des mots caract<63>res. Un mot caract<63>re est un caract<63>re <i>alnum</i> ou un underscore (<b>_</b>). Ces expressions crochet sp<73>ciales sont obsol<6F>tes; les utilisateurs d'AREs devraient utiliser les contraintes <20>chappement <20> la place (voir ci-dessous).
</div><br>
<div><b>ECHAPPEMENTS</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les echappements (AREs seulement), qui commencent avec un <b>&#92;</b> suivi d'un caract<63>re alphanum<75>rique, existent de plusieurs sortes: entr<74>e caract<63>re, classe, constraint escapes, et back r<>f<EFBFBD>rences. Un <b>&#92;</b> suivi par un caract<63>re alphanum<75>rique mais ne constituant pas un echappement valide est ill<6C>gal dans une ARE. Dans les EREs, il n'y a pas d'echappements: en dehors d'une expression crochet, un <b>&#92;</b> suivi par un caract<63>re alphanum<75>rique <20>quivaut simplement <20> cecaract<63>re comme un caract<63>re ordinaire, et dans une expression crochet, <b>&#92;</b> est un caract<63>re ordinaire. (Le dernier est une incompatibilit<69> entre les EREs et les AREs.) </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les echappements entr<74>e caract<63>re (AREs seulement) existent pour faciliter la sp<73>cification de caract<63>res non imprimables et autrement inutilisables dans REs: </div>
<div ALIGN="LEFT" style="margin-left: 120px;">
<DL>
<DT><b>&#92;a</b>
</DT><DD>caract<EFBFBD>re bip (bell), comme en C
</DD>
<DT><b>&#92;b</b></DT><DD>backspace, comme en C
</DD>
<DT><b>&#92;B</b>
</DT><DD>synonyme pour <b>&#92;</b> reduire la r<>p<EFBFBD>tition des backslash dans quelques applications ou il y a des niveaux multiples de traitement des backslash
</DD>
<DT><b>&#92;c</b><i>X</i>
</DT><DD>(o<> X est un caract<63>re quelconque) le caract<63>re dont les 5 bits de poids faible sont les m<>me que ceux de <i>X</i>, et dont les autres bits sont tous <20> z<>ro
</DD>
<DT><b>&#92;e</b>
</DT><DD>caract<EFBFBD>re dont le nom de s<>quence d'assemblage est `<b>ESC</b>', ou le caract<63>re avec une valeur octale de 033
</DD>
<DT><b>&#92;f</b>
</DT><DD>formfeed, comme en C
</DD>
<DT><b>&#92;n</b>
</DT><DD>newline, comme en C
</DD>
<DT><b>&#92;r</b>
</DT><DD>retour chariot, comme en C
</DD>
<DT><b>&#92;t</b>
</DT><DD>tabulation horizontale, comme en C
</DD>
<DT><b>&#92;u</b><i>wxyz</i>
</DT><DD>(o<> <i>wxyz</i> est exactement quatre chiffres hexad<61>cimaux) le caract<63>re Unicode <b>U+</b><i>wxyz</i> dans l' ordre d'octet local
</DD>
<DT><b>&#92;U</b><i>stuvwxyz</i>
</DT><DD>(o<> <i>stuvwxyz</i> est exactement huit chiffres hexad<61>cimaux) reserv<72> pour une extension Unicode hypoth<74>tiquel <20> 32 bits
</DD>
<DT><b>&#92;v</b>
</DT><DD>tabulation verticale, comme en C.
</DD>
<DT><b>&#92;x</b><i>hhh</i>
</DT><DD>(o<> <i>hhh</i> est une s<>quence quelconque de chiffres hexad<61>cimaux) le caract<63>re dont la valeur hexad<61>cimale est <b>0x</b><i>hhh</i> (un simple caract<63>re sans tenir compte de combien de chiffres hexad<61>cimaux sont utilis<69>s).
</DD>
<DT><b>&#92;0</b>
</DT><DD>le caract<63>re dont la valeur est <b>0</b>
</DD>
<DT><b>&#92;</b><i>xy</i></DT><DD>(o<> <i>xy</i> est exactement deux chiffres octal, et n'est pas une <i>back reference</i> (voir ci-dessous)) le caract<63>re dont la valeur octale est <b>0</b><i>xy</i>
</DD>
<DT><b>&#92;</b><i>xyz</i></DT><DD>(o<> <i>xyz</i> est exactement trois chiffres octaux, et n'est pas une back r<>f<EFBFBD>rence (voir ci-dessous)) le caract<63>re dont la valeur octale est <b>0</b><i>xyz</i>
</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les chiffres Hexadecimaux sont `<b>0</b>'-`<b>9</b>', `<b>a</b>-`<b>f</b>', et `<b>A</b>'-`<b>F</b>'. Les chiffres Octaux sont `<b>0</b>'-`<b>7</b>'. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les echappements caract<63>re-entr<74>e sont toujours interpr<70>t<EFBFBD>s comme des caract<63>res ordinaires. Par exemple, <b>&#92;135</b> est <b>]</b> en ASCII, mais <b>&#92;135</b> ne peut terminer une expression crochet. Attention, n<>anmoins, que quelque application (ex.,un compilateur C) n'interpr<70>te ces s<>quences elle-m<>me avant le package regular-expression, qui peut exiger le doublage (quadruplage, etc.) du `<b>&#92;</b>'. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les echappements Class-shorthand (AREs seulement) fournissent des raccourcis pour certaines classes de caract<63>re commun<75>ment utilis<69>es: </div>
<div ALIGN="LEFT" style="margin-left: 120px;">
<DL>
<DT><b>&#92;d</b></DT><DD><b>&#91;&#91;:digit:]]</b> </DD>
<DT><b>&#92;s</b></DT><DD><b>&#91;&#91;:space:]]</b>
</DD>
<DT><b>&#92;w</b>
</DT><DD><b>&#91;&#91;:alnum:]_]</b> (notez l'underscore)
</DD>
<DT><b>&#92;D</b>
</DT><DD><b>&#91;^&#91;:digit:]]</b> </DD>
<DT><b>&#92;S</b>
</DT><DD><b>&#91;^&#91;:space:]]</b>
</DD>
<DT><b>&#92;W</b>
</DT><DD><b>&#91;^&#91;:alnum:]_]</b> (notez l'underscore)
</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Dans les expressions crochets, `<b>&#92;d</b>', `<b>&#92;s</b>', et `<b>&#92;w</b>' perdent leurs crochets externes, et `<b>&#92;D</b>', `<b>&#92;S</b>', et `<b>&#92;W</b>' sont ill<6C>gaux. (Ainsi, par exemple, <b>&#91;a-c&#92;d]</b> est <20>quivalent <20> <b>&#91;a-c&#91;:digit:]]</b>. Egalement, <b>&#91;a-c&#92;D]</b>, qui est <20>quivalent <20> <b>&#91;a-c^&#91;:digit:]]</b>, est illegal.) </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Un constraint escape (AREs seulement) est une contrainte, correspondant <20> la cha<68>ne vide si des conditions sp<73>cifiques sont rencontr<74>es, <20>crite comme un echappement: </div>
<div ALIGN="LEFT" style="margin-left: 120px;">
<DL>
<DT><b>&#92;A</b>
</DT><DD>correspond seulement au d<>but de la cha<68>ne (voir CORRESPONDANCES, ci-dessous, pour comment ceci diff<66>re de `<b>^</b>')
</DD>
<DT><b>&#92;m</b>
</DT><DD>correspond seulement au d<>but d'un mot
</DD>
<DT><b>&#92;M</b>
</DT><DD>correspond seulement <20> la fin d'un mot
</DD>
<DT><b>&#92;y</b>
</DT><DD>correspond seulement au d<>but ou <20> la fin d'un mot
</DD>
<DT><b>&#92;Y</b>
</DT><DD>correspond seulement <20> un point qui n'est pas le d<>but ou la fin d'un mot
</DD>
<DT><b>&#92;Z</b>
</DT><DD>correspond seulement <20> la fin de la cha<68>ne (voir CORRESPONDANCES, ci-dessous, pour comment ceci diff<66>re de `<b>&#36;</b>')
</DD>
<DT><b>&#92;</b><i>m</i>
</DT><DD>(o<> <i>m</i> est un chiffre non nul) une <i>back reference</i>, voir ci-dessous
</DD>
<DT><b>&#92;</b><i>mnn</i>
</DT><DD>(o<> <i>m</i> est un chiffre non nul, et <i>nn</i> sont d'autres chiffres, et la valeur d<>cimale <i>mnn</i> n'est pas sup<75>rieure au nombre de parenth<74>ses fermantes) une <i>back reference</i>, voir ci-dessous
</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Un mot est d<>fini comme dans la sp<73>cification de&nbsp; <b>&#91;&#91;:&lt;:]]</b> et <b>&#91;&#91;:&gt;:]]</b> plus haut. Constraint escapes sont ill<6C>gales dans les expressions crochets. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Une back r<>f<EFBFBD>rence (AREs seulement) correspond <20> la m<>me cha<68>ne que celle qui correspond aux sous expressions entre parenth<74>ses sp<73>cifi<66> par les nombres, ainsi <b>(&#91;bc])&#92;1</b> correspond <b>bb</b> ou <b>cc</b> mais pas `<b>bc</b>'. La sous expression doit enti<74>rement pr<70>c<EFBFBD>der la back r<>f<EFBFBD>rence dans la RE. Les sous expressions sont num<75>rot<6F>es dans l'ordre de leur premi<6D>res parenth<74>ses. Les parenth<74>ses non-capturantes ne d<>finissent pas de sous expressions. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Il y a une ambiguit<69> inh<6E>rente historique entre les <20>chappements caract<63>re-entr<74>e octal et les back r<>f<EFBFBD>rences, qui est r<>solue par heuristique, comme d<>voil<69> plus haut. Un z<>ro en t<>te indique toujours un <20>chappement octal. Un seul chiffre diff<66>rent de z<>ro, non suivi par un autre chiffre, est toujours interpr<70>t<EFBFBD> comme une back r<>f<EFBFBD>rence. Une s<>quence multi-chiffre ne commen<65>ant pas avec un z<>ro est interpr<70>t<EFBFBD>e comme une back r<>f<EFBFBD>rence si elle est situ<74>e apr<70>s une sous expression convenable (ex. le nombre est dans l'intervalle l<>gal pour une back r<>f<EFBFBD>rence), et autrement est interpr<70>t<EFBFBD>e comme octale. </div><br>
<div><b>METASYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">En plus de la syntaxe principale d<>crite plus haut, il y a quelques formes sp<73>ciales et diverses facilit<69>s syntaxiques disponibles. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Normalement la sorte de RE utilis<69>e est sp<73>cifi<66>e par l'application. N<>anmoins, ceci peut <20>tre modifi<66> par un <i>director</i>. Si un RE d'une sorte quelconque commence avec `<b>***:</b>', le reste de la RE est une ARE. Si une RE d'une sorte quelconque commence avec `<b>***=</b>', le reste de la RE est pris comme une cha<68>ne litt<74>rale, avec tous les caract<63>res consider<65>s comme des caract<63>res ordinaires. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Une ARE peut commencer avec des <i>contenue options</i>: une s<>quence <b>(?</b><i>xyz</i><b>)</b> (o<> <i>xyz</i> est un ou plusieurs caract<63>res alphab<61>tiques) sp<73>cifie les options affectant le reste de la RE. Ceci vient en suppl<70>ment, et peut modifier toute option sp<73>cifi<66>e par l'application. Le lettres d'option disponibles sont: </div>
<div ALIGN="LEFT" style="margin-left: 120px;">
<DL>
<DT><b>b</b>
</DT><DD>le reste de la RE est une BRE
</DD>
<DT><b>c</b>
</DT><DD>correspondance sensible <20> la casse (par d<>faut)
</DD>
<DT><b>e</b>
</DT><DD>le reste de la RE est une ERE
</DD>
<DT><b>i</b>
</DT><DD>correspondance insensible <20> la casse (voir CORRESPONDANCES, ci-dessous)
</DD>
<DT><b>m</b>
</DT><DD>synonyme historique de <b>n</b>
</DD>
<DT><b>n</b>
</DT><DD>correspondance sensible au saut de ligne(voir CORRESPONDANCES, ci-dessous)
</DD>
<DT><b>p</b>
</DT><DD>correspondance partiellement sensible au saut de ligne (voir CORRESPONDANCES, ci-dessous)
</DD>
<DT><b>q</b>
</DT><DD>le reste de la RE est une cha<68>ne litt<74>rale (&quot;entre guillemets&quot;), toute de caract<63>res ordinaires
</DD>
<DT><b>s</b>
</DT><DD>correspondance insensible au saut de ligne (par d<>faut)
</DD>
<DT><b>t</b>
</DT><DD>syntaxe s<>rr<72>e (par d<>faut; voir ci-dessous)
</DD>
<DT><b>w</b>
</DT><DD>correspondance inverse partiellement sensible au saut de ligne (&quot;weird&quot;) (voir CORRESPONDANCES, ci-dessous)
</DD>
<DT><b>x</b></DT><DD>syntaxe expans<6E>e (voir ci-dessous)</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les options incluses prennent effet <20> la <b>)</b> terminant la s<>quence. Elles sont disponibles seulement au d<>but d'une ARE, et ne peuvent pas <20>tre utilis<69>es plus loin. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">En plus de la syntaxe usuelle (<i>tight</i>) RE, dans laquelle tous les caract<63>res sont signifiants, il y a une syntaxe <i>expans<EFBFBD>e</i>, disponible dans toutes les sortes de RE avec le switch<b> -expanded</b>, ou dans les&nbsp; AREs avec l'option <b>x</b>. Dans la syntaxe expans<6E>e, les espaces sont ignor<6F>s et tout caract<63>re entre un <b>#</b> et les newline suivantes (ou la fin de la RE) sont ignor<6F>, permettant de paragrapher et de commenter une RE complexe. Il y a trois exceptions <20> cette r<>gle de base: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">un espace ou un `<b>#</b>' pr<70>c<EFBFBD>d<EFBFBD>s&nbsp; par `<b>&#92;</b>' est retenu </div>
<div ALIGN="LEFT" style="margin-left: 102px;">un espace ou un `<b>#</b>' <20> l'int<6E>rieur d'une expression crochet est retenu </div>
<div ALIGN="LEFT" style="margin-left: 102px;">un espace et des commentaires sont ill<6C>gaux dans les symboles multi-caract<63>res comme le `<b>(?:</b>' ARE ou le `<b>&#92;(</b> ' BRE</div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les caract<63>res espace de la syntaxe expans<6E>e sont le blank, tab, newline, et tout caract<63>re qui appartient <20> la classe de caract<63>re<i> space</i>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Finalement, dans une ARE, en dehors des expressions crochet, la s<>quence `<b>(?#</b><i>ttt</i><b>)</b>' (o<> <i>ttt</i> est un texte quelconque ne contenant pas de `<b>)</b>') est un commentaire, compl<70>tement ignor<6F>. De m<>me, ceci n'est pas autoris<69> entre les caract<63>res de symboles multi-caract<63>re comme `<b>(?:</b>'. Ces commentaires sont plus un artefact historique que une utile facilit<69>, et leur usage est obsol<6F>te; utilisez plutot la syntaxe expans<6E>e de. </div>
<div ALIGN="LEFT" style="margin-left: 51px;"><i>Aucune</i> de ces extensions de m<>tasyntaxe ne sont disponibles si l'application (ou un director initial <b>***=</b>) a sp<73>cifi<66> que les entr<74>es de l'utilisateur doivent <20>tre trait<69>es comme une cha<68>ne litt<74>rale plut<75>t que comme une RE.
</div><br>
<div><b>CORRESPONDANCES</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Dans l'<27>v<EFBFBD>nement o<> une RE peut correspondre <20> plus d'une sous cha<68>ne d'une cha<68>ne donn<6E>e, la RE correspond <20> la premi<6D>re occurence dans la cha<68>ne. Si la RE peut correspondre <20> plus d'une sous cha<68>ne commen<65>ant <20> ce point, le choix est d<>termin<69> par sa <i>pr<EFBFBD>f<EFBFBD>rence</i>: soit la plus longue sous cha<68>ne, soit la plus courte. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La plupart des atomes, et toutes les contraintes, n'ont pas de pr<70>f<EFBFBD>rence. Une RE entre parenth<74>ses a la m<>me pr<70>f<EFBFBD>rence (<28>ventuellement aucune) que la RE. Un atome quantifi<66> avec <b>&#123;</b><i>m</i><b>}</b> ou <b>&#123;</b><i>m</i><b>}?</b> a la m<>me pr<70>f<EFBFBD>rence (<28>ventuellement aucune)que l'atome lui-m<>me. Un atome quantifi<66> avec d'autres quantificateurs normaux (incluant <b>&#123;</b><i>m</i><b>,</b><i>n</i><b>}</b> avec <i>m</i> <20>gal <20> <i>n</i>) pref<65>re la correspondance la plus longue. Un atome quantifi<66> avec d'autre quantificateurs non-greedy (incluant <b>&#123;</b><i>m</i><b>,</b><i>n</i><b>}?</b> avec <i>m</i> <20>gal <20> <i>n</i>) pref<65>re la correspondance la plus courte. Une branche a la m<>me pr<70>f<EFBFBD>rence que le premier atome quantifi<66> inclus qui a une pr<70>f<EFBFBD>rence. Une RE consistant de deux branches ou plus connect<63>es par l'op<6F>rateur <b>|</b> pr<70>f<EFBFBD>re la correspondance la plus longue.</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Sujettes aux contraintes impos<6F>es par les r<>gles de correspondance <20> la totalit<69> de la RE, les sous-expressions correspondent au sous-cha<68>nes les plus longues ou les plus courtes possible, bas<61>es sur leurs preferences, avec les sous-expressions commen<65>ant en premier dans la RE prioritaires sur celles commen<65>ant plus loin. Notez que les sous-expressions prennent le pas sur leurs sous-expressions internes. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Notez que les quantificateurs <b>&#123;1,1}</b> et <b>&#123;1,1}?</b> peuvent <20>tre utilis<69>s pour forcer la pr<70>f<EFBFBD>rence, sur une sous-expression ou une RE compl<70>te. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les longueurs des correpondances sont mesur<75>es en caract<63>res, pas en <20>l<EFBFBD>ments d'assemblage. Une cha<68>ne vide est consider<65>e plus longue qu'aucune correspondance. Par exemple, <b>bb*</b> correspond aux trois caract<63>res cebtraux de `<b>abbbc</b>', <b>(week|wee)(night|knights)</b> correspond aux dix caract<63>res de `<b>weeknights</b>', quand <b>(.*).*</b> est compar<61> <20> <b>abc</b> la sous-expression entre parenth<74>ses correspond aux trois caract<63>res, et quand <b>(a*)*</b> est compar<61> <20> <b>bc</b> <20> la fois la RE compl<70>te et la sous-expression entre parenth<74>ses correspond <20> une cha<68>ne vide. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si une correspondance ind<6E>pendante de la casse est sp<73>cifi<66>e, l'effet est le m<>me que si toute distinction de casse avait disparu de l'alphabet. Quand un caract<63>re qui existe dans les deux casses apparait comme un caract<63>re ordinaire en dehors d'une expression crochet, il est effectivement transforme en une expression crochet contenant les deux casses, ainsi <b>x</b> devient `<b>&#91;xX]</b>'. Quand il apparait dans une expression crochet, toute contrepartie de sa casse est&nbsp; ajout<75>e <20> l'expression crochet, ainsi <b>&#91;x]</b> devient <b>&#91;xX]</b> et <b>&#91;^x]</b> devient `<b>&#91;^xX]</b>'. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si une correspondance sensible au saut de ligne est sp<73>cifi<66>e, les expressions <b>.</b> et crochets utilisant <b>^</b> ne correspondront&nbsp; jamais au caract<63>re newline (ainsi la correspondance ne traverse jamais les saut de lignes <20> moins que la RE le demande explicitement ) et <b>^</b> et <b>&#36;</b> correspondront <20> la cha<68>ne vide respectivement apr<70>s et avant un saut de ligne, en plus de correspondre respectivement au d<>but et <20> la fin d'une cha<68>ne. Les <b>&#92;A</b> et <b>&#92;Z</b> ARE continuent <20> correspondre au d<>but et <20> la fin d'une cha<68>ne<i> seulement</i>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si une correspondance sensible au saut de ligne partielle est sp<73>cifi<66>e, elle affecte les expressions <b>.</b> et crochets comme la correspondance sensible au saut de ligne, mais pas <b>^</b> et `<b>&#36;</b>'. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si une correspondance sensible au saut de ligne partielle inverse est sp<73>cifi<66>e, elle affecte <b>^</b> et <b>&#36;</b> comme la correspondance sensible au saut de ligne, mais pas les expressions <b>.</b> et crochets. Ceci n'est pas tr<74>s utile mais est fourni pour la sym<79>trie
</div><br>
<div><b>LIMITES ET COMPATIBILITE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Aucune limite particuli<6C>re n'est impos<6F>e <20> la longueur des REs. Les programmes con<6F>ue pour <20>tre hautement portables ne devront pas employer de REs plus longues que 256 octets, car une impl<70>mentation POSIX-compatible peut les refuser. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La seule fonctionnalit<69> des AREs actuellement incompatible avec les EREs POSIX est que <b>&#92;</b> ne perd pas sa signification sp<73>ciale <20> l'int<6E>rieur des expression crochets. Toutes les autres fonctionnalit<69>s ARE utilisent une syntaxe qui est ill<6C>gale ou a des effets ind<6E>finis ou non specifi<66>s dans les EREs POSIX; la syntaxe <A HREF="24.htm"><b>***</b></A> des directors est de m<>me en dehors de la syntaxe POSIX pour les BREs et les EREs. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Beaucoup des extensions ARE sont extraites de Perl, mais quelques unes ont <20>t<EFBFBD> nettoy<6F>es, et quelques extensions Perl ne sont pas pr<70>sentes. Les incompatibilit<69>s inclutnt `<b>&#92;b</b>', `<b>&#92;B</b>', l'absence de traitement sp<73>cial pour un newline <20> la fin, l'addition d'expression crochets pour les cas affect<63>s par la correspondance sensible au saut de ligne, les restrictions sur les parenth<74>ses et les back r<>f<EFBFBD>rences dans les contraintes avant, et la s<>mantique des correspondances plus long/plus court (plut<75>t que premier-trouv<75>). </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les r<>gles de correspondance pour les REs contenant <20> la fois des quantificateurs normaux et non-greedy ont chang<6E> depuis les premi<6D>res versions beta-test de ce package. (Les nouvelles r<>gles sont plus simples et plus propre, mais ne travaillent pas trop dur pour deviner les intentions r<>elles de l'utilisateur.) </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Le package original <i>regexp</i> de 1986 par Henry Spencer, toujours largement utilis<69> (ex., dans les pre-8.1 releases de Tcl), impl<70>mentait une premi<6D>re version des EREs d'aujourd'hui. Il y a quatre incompatibilit<69>s entre les <i>regexp</i>&nbsp; proches des EREs (`RREs') et les AREs. Dans un ordre croissant de signification: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">Dans les AREs, <b>&#92;</b> suivi d'un caract<63>re alphanum<75>rique est soit un <20>chappement soit une erreur, alors que dans les RREs, c'<27>tait juste un autre moyen d'<27>crire l'alphanum<75>rique. Ceci ne sera pas une probl<62>me parce que il n'y a pas de raison d'<27>crire une s<>quence pareille dans les RREs. </div>
<div ALIGN="LEFT" style="margin-left: 102px;">Un<b> &#123;</b> suivi d'un chiffre dans un ARE est le d<>but d'un intervalle, alors que dans les RREs, <b>&#123;</b> a toujours <20>t<EFBFBD> un caract<63>re ordinaire. De telles s<>quences seront rares, et donneront souvent une erreur parce que les caract<63>res suivants ne ressembleront pas <20> un intervalle valide. </div>
<div ALIGN="LEFT" style="margin-left: 102px;">Dans les AREs, <b>&#92;</b> introduit un caract<63>re sp<73>cial dans `<b>&#91;]</b>', donc un <b>&#92;</b> litt<74>ral dans <b>&#91;]</b> doit <20>tre <20>crit `<b>&#92;&#92;</b>'. <b>&#92;&#92;</b> donne aussi un <b>&#92;</b> litt<74>ral dans <b>&#91;]</b> dans les RREs, mais seuls les programmeurs vraiment parano&iuml;aques doublent le backslash par routine. </div>
<div ALIGN="LEFT" style="margin-left: 102px;">AREs rapporte la plus longue/plus courte correspondance de la RE, plut<75>t que le premier trouv<75> dans l'ordre de recherche sp<73>cifi<66>. Ceci peut affecter quelque RREs qui aurait <20>t<EFBFBD> <20>crites dans l'hypoth<74>se o<> la premi<6D>re correspondance serait rapport<72>e. (La r<>daction soigneuse des RREs pour optimiser l'ordre de recherche pour une comparaison rapide est obsol<6F>te (les AREs examinent toutes les correspondances possible en parall<6C>le, et leurs performances sont largement insensible <20> leur complexit<69>) mais les cas o<> l'ordre de recherche a <20>t<EFBFBD> exploit<69> pour trouver delib<69>r<EFBFBD>ment une correspondance qui n'est pas la plus longue/plus courte devront <20>tre r<><72>crits.)
</div><br>
<div><b>BASIC REGULAR EXPRESSIONS</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les BREs diff<66>rent des EREs sous plusieurs aspects `<b>|</b>', `<b>+</b>', et <b>?</b> sont des caract<63>res ordinaires et il n'y a pas d'<27>quivalent <20> leurs fonctionalit<69>. Les d<>limiteurs des intervalles sont <b>&#92;&#123;</b> et `<b>&#92;}</b>', avec les <b>&#123;</b> et <b>}</b> interpr<70>t<EFBFBD>es seules comme des caract<63>res ordinaires. Les parenth<74>ses des sous expressions imbriqu<71>es sont <b>&#92;(</b> et `<b>&#92;)</b>', avec les <b>(</b> et <b>)</b> interpr<70>t<EFBFBD>es seules comme des caract<63>res ordinaires. <b>^</b> est un caract<63>re ordinaire except<70> au d<>but de la RE ou au d<>but d'une sous expressions entre parenth<74>ses, <b>&#36;</b> est un caract<63>re ordinaire except<70> <20> la fin de la RE ou la fin d'une sous expressions entre parenth<74>ses, et <A HREF="24.htm"><b>*</b></A> est un caract<63>re ordinaire s'il apparait au d<>but de la RE ou au d<>but d'une sous-expression entre parenth<74>ses (apr<70>s un `<b>^</b>'possible en t<>te). Finalement, les back r<>f<EFBFBD>rences <20> un seul chiffre sont disponibles, et <b>&#92;&lt;</b> et <b>&#92;&gt;</b> sont des synonymes de <b>&#91;&#91;:&lt;:]]</b> et <b>&#91;&#91;:&gt;:]]</b> respectivement; aucun autre echappement ne sont disponibles
</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">RegExp(3.htm), <A HREF="152.htm">regexp</A>(n), <A HREF="154.htm">regsub</A>(n), <A HREF="137.htm">lsearch</A>(n), <A HREF="167.htm">switch</A>(n), text(n) </div><br>
<div>Derni<EFBFBD>re r<>vision: 8.1</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="149.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="151.htm"><b>Suivant</b></A></div>
</BODY></HTML>

21
hlp/fr/tcl/read.htm Normal file
View File

@@ -0,0 +1,21 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>read&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div><HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">read <20> Lit&nbsp; <20> partir d'un canal
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>read </b>?<b>-nonewline</b>? <i>channelId</i> <br>
<b>read </b><i>channelId numChars</i>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Sous la premi<6D>re forme, la commande <b>read</b> lit toutes les donn<6E>es provenant de <i>channelId</i> jusqu'<27> la fin du fichier. Si le switch <b>-</b> <b>nonewline</b> est sp<73>cifi<66> alors le dernier caract<63>re du fichier est retir<69> si c'est un caract<63>re de fin de ligne. Sous la seconde forme, l'argument suppl<70>mentaire sp<73>cifie combien de caract<63>res la commande doit lire. Ce nombre exact de caract<63>res sera lu et retourn<72>, sauf s'il y a moins que numChars caract<63>res restant dans le fichier; dans ce cas tous les caract<63>res restant sont retourn<72>s. Si le canal&nbsp; de communication est configur<75> pour utiliser un encodage sur plusieurs octets, le nombre de caract<63>res lus peut <20>tre diff<66>rent du nombre d'octets lus.. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si <i>channelId</i> est en mode non bloquant, la commande peut ne pas lire autant de caract<63>res que requisune fois que toutes les donn<6E>es d'entr<74>e auront <20>t<EFBFBD> luesa commande renverra les donn<6E>es disponibles plut<75>t que de bloquer en attente de donn<6E>es compl<70>mentaires . Si le canal de communication est configur<75> pour utiliser un encodage sur plusieurs octets, alors il peut r<>ellement rester quelques octets dans les tampons internes, qui ne forment pas un caract<63>re complet. Ces octets ne seront retourn<72>s que lorsqu'un caract<63>re complet sera&nbsp; disponible ou qu'une fin de fichier sera rencontr<74>e. Le switch - <b>nonewline</b> est ignor<6F> si la commande se termine avant d'atteindre la fin du fichier. <b>Read</b> traduit les s<>quences de fin de ligne de l'entr<74>e en caract<63>res de fin de ligne, en fonction de l'option -translation associ<63>e au canal de communication. Voir l'entr<74>e <A HREF="109.htm"><b>fconfigure</b></A> du manuel pour une explication sur les moyens par lesquels <A HREF="109.htm"><b>fconfigure</b></A> modifiera les donn<6E>es d'entr<74>e.</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><A HREF="102.htm">eof</A>(n), <A HREF="108.htm">fblocked</A>(n), <A HREF="109.htm">fconfigure</A>(n)&nbsp; </div><br>
<div>Derni<EFBFBD>re r<>vision: 8.1</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="150.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="152.htm"><b>Suivant</b></A></div>
</BODY></HTML>

57
hlp/fr/tcl/regexp.htm Normal file
View File

@@ -0,0 +1,57 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>regexp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl
</b></H3></div>
<HR ALIGN="center"><br>
<div><b>NOM</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">regexp - Compare une expression rationelle <20> une cha<68>ne
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>regexp </b>?<i>switches</i>? <i>exp string </i>?<i>matchVar</i>? ?<i>subMatchVar subMatchVar ...</i>?&nbsp; <br>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Determine si l'expression rationelle <i>exp</i> correspond <20> tout ou partie de <i>string</i> et retourne 1 si vrai, 0 si faux, <20> moins que <b>-inline</b> soit sp<73>cifi<66> (voir ci-dessous). (la correspondance des expressions rationelles est d<>crite dans la page de r<>f<EFBFBD>rence de <A><b>re_syntax</b></A>.) </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si des arguments suppl<70>mentaires sont sp<73>cifi<66>s apr<70>s <i>string</i> alors ils sont trait<69>s comme les noms des variables dans lesquelles renvoyer l'information au sujet de la ou les parties de <i>string</i> correspondant <20> <i>exp</i>. <i>MatchVar</i> sera fix<69> <20> la partie de <i>string</i> correspondant <20> <i>exp</i> La premi<6D>re <i>subMatchVar</i> contiendra les caract<63>res de <i>string</i> qui correspondent <20> la sous expression entre parenth<74>ses la plus <20> gauche dans <i>exp</i>, la <i>subMatchVar</i> suivante contiendra les caract<63>res qui correspondent <20> la sous expression entre parenth<74>ses suivante <20> droite dans <i>exp</i>, et ainsi de suite. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si les arguments initiaux <20> <b>regexp</b> commencent avec <b>-</b> alors ils sont trait<69>s comme des commutateurs. Les commutateurs suivants sont couramment support<72>s: </div>
<div ALIGN="LEFT" style="margin-left: 51px;">
<DL>
<DT><b>-about</b><br></DT><DD>Au lieu de tenter de correspondre <20> une expression rationelle, retourne une liste contenant l'information concernant l'expression rationelle Le premier <20>l<EFBFBD>ment de la liste est un compte des sous expressions Le second <20>l<EFBFBD>ment est une liste de noms de propri<72>t<EFBFBD> qui decrivent plusieurs attributs de l'expression rationelle. Ce switch est con<6F>u dans un but de debugging.
</DD>
<DT><b>-expanded</b><br></DT><DD>Active l'usage de la syntaxe <20>tendue des expressions rationelles o<> l'espace et les commentaires sont ignor<6F>s. Identique <20> la sp<73>cification de l'option <b>(?x)</b> (voir METASYNTAXE, ci-dessous).
</DD>
<DT><b>-indices</b><br></DT><DD>Change ce qui est stock<63> dans les <i>subMatchVar</i>s Au lieu de stocker les caract<63>res correspondants de <i>string</i>, chaque variable contiendra une liste de deux cha<68>nes d<>cimales donnant les indices dans <i>string</i> des premiers et derniers caract<63>res dans l'intervalle correspondant des caract<63>res.
</DD>
<DT><b>-line</b><br></DT><DD>Active la correspondance sensible au saut de ligne Par d<>faut, le saut de ligne est un caract<63>re ordinaire sans signification sp<73>ciale Avec ce flag, l' expression crochets `&#91;^' et `.' ne correspond jamais <20> newline, `^' correspond <20> une cha<68>ne vide apr<70>s toute newline en plus de sa fonction normale, et `&#36;' correspond une cha<68>ne vide avant toute newline en en plus de sa fonction normale Ce flag est <20>quivalent <20> la sp<73>cification <20> la fois de&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>-linestop</b> et <b>-lineanchor</b>, ou de l'option <b>(?n)</b> (voir METASYNTAXE, ci-dessous).
</DD>
<DT><b>-linestop</b><br></DT><DD>Change le comportement de l'expression crochets `&#91;^' et `.' de fa<66>on <20> ce qu'elles s'arr<72>tent aux saut de lignes Ceci est identique <20> la sp<73>cification de l'option <b>(?p)</b> (voir METASYNTAXE, ci-dessous).
</DD>
<DT><b>-lineanchor</b><br></DT><DD>Change le comportement de `^' et `&#36;' (les &quot;ancres&quot;) de fa<66>on <20> ce qu'ils correspondent au d<>but et <20> la fin d'une ligne respectivement Ceci est identique <20> la sp<73>cification de l'option <b>(?w)</b> (voir METASYNTAXE, ci-dessous).
</DD>
<DT><b>-nocase</b><br></DT><DD>Cause l'interpr<70>tation des caract<63>res majuscules de <i>string</i> comme minuscules pendant le traitement des correspondances.
</DD>
<DT><b>-all</b><br></DT><DD>Teste la correspondance de l'expression rationelle le plus grand nombre de fois possible dans la cha<68>ne, retournant le nombre total de correspondances trouv<75>es Si sp<73>cifi<66> avec des variables de correspondance, ne contiendront l'information que pour la derni<6E>re correspondance.
</DD>
<DT><b>-inline</b><br></DT><DD>Provoque le renvoi, comme liste, des donn<6E>es qui auraient <20>t<EFBFBD> autrement plac<61>es dans des variables de correspondance Quand <b><EFBFBD>inline </b>est utilis<69>e, les variables de correspondance ne peuvent pas <20>tre sp<73>cifi<66>es Si utilis<69> avec <b>-all</b>, la liste sera concat<61>n<EFBFBD>e <20> chaque it<69>ration, de ce fait une liste plate est toujours renvoy<6F>e Pour chaque it<69>ration, la commande ajoutera les correspondances suppl<70>mentaires aux donn<6E>es, plus un <20>l<EFBFBD>ment pour chaque sous expression dans l'expression rationelle. Exemples: <CODE><PRE>
regexp -inline -- &#123;&#92;w(&#92;w)} &quot; inlined &quot;<br>
=&gt; &#123;in n}<br>
regexp -all -inline -- &#123;&#92;w(&#92;w)} &quot; inlined &quot;<br>
=&gt; &#123;in n li i ne e}</CODE>
</PRE>
</DD>
<DT><b>-start</b> <i>index</i><br></DT><DD>Sp<EFBFBD>cifie un index de caract<63>re dans une cha<68>ne pour commencer la correspondance <20> une expression rationelle A l'utilisation de ce switch, `^' ne correspond plus au d<>but de la ligne, et &#92;A correspond toujours au d<>but de la cha<68>ne <20> <i>index</i> Si <b>-indices</b> est sp<73>cifi<66>, les indices seront index<65>s en partant du&nbsp; d<>but de la cha<68>ne d'entr<74>e. <i>index</i> sera contraint au limites de la cha<68>ne d'entr<74>e.
</DD>
<DT><b>--</b><br></DT><DD>Marque la fin des commutateurs L'argument suivant ceci sera trait<69> comme <i>exp</i> m<>me s'il commence avec un <b>-</b>.
</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">S'il y a plus de <i>subMatchVar</i> que de sous expressions entre parenth<74>ses dans <i>exp</i>, ou si une sous expression particuli<6C>re dans <i>exp</i> ne correspond pas <20> la cha<68>ne (ex. parcequ'il etait dans une partie de l'expression qui n'a pas <20>t<EFBFBD> trouv<75>e), alors la <i>subMatchVar</i> correspondante sera fix<69>e <20> &quot;<b>-1-1</b>&quot; si <b>-indices</b> a <20>t<EFBFBD> sp<73>cifi<66> ou <20> une cha<68>ne vide autrement
</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><A HREF="150.htm">re_syntax</A>(n)&nbsp; </div><br>
<div>Derni<EFBFBD>re r<>vision: 8.3</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="151.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="153.htm"><b>Suivant</b></A></div>
</BODY></HTML>

85
hlp/fr/tcl/registry.htm Normal file
View File

@@ -0,0 +1,85 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>registry&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div><HR ALIGN="center"><br>
<div><b>NOM</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">registry - Manipule la base de registre Windows
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><br>
<b>package require registry 1.0</b> <br>
<b>registry </b><i>option</i> <i>keyName</i> ?<i>arg arg ...</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Le package <b>registry</b> fournit un ensemble g<>n<EFBFBD>ral d'op<6F>rations pour manipuler la base de registre Windows Le package impl<70>mente la commande Tcl<b> registry</b>. Cette commande est support<72>e seulement sur la plateforme Windows. Attention: cette commande sera utilis<69>e avec pr<70>caution car une base de registre corrompue peut rendre votre syst<73>me inutilisable. </div>
<div ALIGN="LEFT" style="margin-left: 51px;"><i>KeyName</i> est le nom d'une cl<63> de registre. Les cl<63>s doivent avoir une des formes suivantes: </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>&#92;&#92;</b><i>hostname</i><b>&#92;</b><i>rootname</i><b>&#92;</b><i>keypath</i> </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><i>rootname</i><b>&#92;</b><i>keypath</i> </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><i>rootname</i> </div>
<div ALIGN="LEFT" style="margin-left: 51px;"><i>Hostname</i> sp<73>cifie le nom d'une machine Windows quelconque qui exporte sa base de registre. Le composant <i>rootname</i> doit <20>tre un d'entre <b>HKEY_LOCAL_MACHINE</b>, <b>HKEY_USERS</b>, <b>HKEY_CLASSES_ROOT</b>, <b>HKEY_CURRENT_USER</b>, <b>HKEY_CURRENT_CONFIG</b>, <b>HKEY_PERFORMANCE_DATA</b>, ou <b>HKEY_DYN_DATA</b>. Le <i>keypath</i> peut <20>tre un ou plusieurs noms de cl<63> de registre s<>par<61>es par des caract<63>res backslash (<b>&#92;</b>). </div>
<div ALIGN="LEFT" style="margin-left: 51px;"><i>Option</i> indique que faire avec le nom de cl<63> de registre. N'importe quelle abr<62>viation unique pour <i>option</i> est acceptable. Les options valides sont:
<DL>
<DT><b>registry delete </b><i>keyName</i> ?<i>valueName</i>?
</DT><DD>Si l'argument optionnel <i>valueName</i> est pr<70>sent, la valeur sp<73>cifi<66>e sous <i>keyName</i> sera effac<61>e de la base de registre. Si l'optionnelle <i>valueName</i> est omise, la cl<63> sp<73>cifi<66>e et toute sous-cl<63> ou valeurs en dessous dans la hi<68>rarchie de la base de registre seront effac<61>es. Si la cl<63> n'a pu <20>tre effac<61>e alors une erreur est g<>n<EFBFBD>r<EFBFBD>e. Si la cl<63> n'existe pas, la commande n'a pas d'effet.
</DD>
<DT><br>
<b>registry get </b><i>keyName valueName</i>
</DT><DD>Renvoie les donn<6E>es associ<63>es <20> la valeur <i>valueName</i> sous la cl<63> <i>keyName</i>. Si la cl<63> ou la valeur n'existe pas, alors une erreur est g<>n<EFBFBD>r<EFBFBD>e. Pour plus details sur le format des donn<6E>es renvoy<6F>es, voir TYPES SUPPORTES, ci-dessous.
</DD>
<DT><br>
<b>registry keys </b><i>keyName</i> ?<i>pattern</i>?
</DT><DD>Si <i>pattern</i> n'est pas sp<73>cifi<66>, retourne une liste de noms de tout les sous-cl<63>s de <i>keyName</i> Si <i>pattern</i> est sp<73>cifi<66>, seulement les noms correspondants <20> <i>pattern</i> sont retourn<72>s La correspondance est d<>termin<69>e en utilisant le m<>me r<>gles que pour <A HREF="165.htm"><b>string</b></A> <b>match</b>. Si le <i>keyName</i> sp<73>cifi<66> n'existe pas, alors une erreur est g<>n<EFBFBD>r<EFBFBD>e.
</DD>
<DT><br><b>registry set </b><i>keyName</i> ?<i>valueName data </i>?<i>type</i>??
</DT><DD>
Si <i>valueName</i> n'est pas sp<73>cifi<66>, cr<63>e la cl<63> <i>keyName</i> si elle n'existe pas d<>j<EFBFBD>. Si <i>valueName</i> est sp<73>cifi<66>, cr<63>e la cl<63> <i>keyName</i> et la valeur <i>valueName</i> si n<>cessaire Le contenu de <i>valueName</i> est fix<69> <20> <i>data</i> avec le type indiqu<71>e par <i>type</i>. Si <i>type</i> n'est pas sp<73>cifi<66>, le type <b>sz</b> est suppos<6F>. Pour plus details sur les types de donn<6E>es et d'arguments , voir TYPES SUPPORTES ci-dessous.
</DD>
<DT><br><b>registry type </b><i>keyName valueName</i>
</DT><DD>
Renvoie le type de la valeur <i>valueName</i> dans la cl<63> <i>keyName</i>. Pour plus ample information sur les types possibles, voir TYPES SUPPORTES, ci-dessous.
</DD>
<DT><br>
<b>registry values </b><i>keyName</i> ?<i>pattern</i>?
</DT><DD>Si <i>pattern</i> n'est pas sp<73>cifi<66>, retourne une liste de noms de toutes les valeurs de <i>keyName</i>. Si <i>pattern</i> est sp<73>cifi<66>, seulement les noms correspondants <20> <i>pattern</i> sont renvoy<6F>s. La correspondance est d<>termin<69>e en utilisant les m<>me r<>gles que pour <A HREF="165.htm"><b>string</b></A> <b>match</b>
</DD>
</DL>
</div><br>
<div><b>TYPES SUPPORTES </b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Chaque valeur sous une cl<63> dans la base de registre contient des donn<6E>es d'un type particulier dans une repr<70>sentation sp<73>cifique. La commande <b>registry</b> convertit entre cette repr<70>sentation interne et celle qui peut <20>tre manipul<75>e par les scripts Tcl. Dans la plupart des cas, les donn<6E>es sont simplement renvoy<6F>es comme cha<68>nes Tcl. Le type indique pour quel usage sont con<6F>ues les donn<6E>es, mais ne change pas la repr<70>sentation. Pour certains types, la commande <b>registry</b> retourne les donn<6E>es sous une forme diff<66>rente pour en faciliter la manipulation. Les types suivant sont reconnus par la commande <b>registry</b>:
<DL>
<DT><b>binary</b></DT><DD>La valeur du registre contient des donn<6E>es binaires arbitraires. Les donn<6E>es sont represent<6E>es exactement enTcl, incluant tous les nulls contenus.
</DD>
<DT><br><b>none</b>
</DT><DD>La valeur du registre contient des donn<6E>es binaires arbitraires sans type d<>fini. Les donn<6E>es sont represent<6E>es exactement en Tcl, incluant tous les nulls contenus.
</DD>
<DT><br><b>sz</b>
</DT><DD>La valeur du registre contient une cha<68>ne <20> z<>ro terminal. Les donn<6E>es sont represent<6E>es en Tcl comme cha<68>nes.
</DD>
<DT><br><b>expand_sz</b>
</DT><DD>La valeur du registre contient une cha<68>ne <20> z<>ro terminal qui contient des r<>f<EFBFBD>rences non expans<6E>es aux variables d'environnements dans le style Windows normal (par exemple, &quot;%PATH%&quot;) Les donn<6E>es sont represent<6E>es en Tcl comme cha<68>ne.
</DD>
<DT></DT><DD></DD>
<DT><br><b>dword</b>
</DT><DD>La valeur du registre contient un nombre 32-bit little-endian. Les donn<6E>es sont represent<6E>es en Tcl comme une cha<68>ne d<>cimale.
</DD>
<DT><br><b>dword_big_endian</b>
</DT><DD>La valeur du registre contient un nombre 32-bit big-endian. Les donn<6E>es sont represent<6E>es en Tcl comme une cha<68>ne d<>cimale.
</DD>
<DT><br><b>link</b>
</DT><DD>La valeur du registre contient un lien symbolique. Les donn<6E>es sont represent<6E>es exactement en Tcl, incluant tous les nulls contenus.
</DD>
<DT><br><b>multi_sz</b>
</DT><DD>La valeur du registre contient un tableau cha<68>nes <20> z<>ro terminal. Les donn<6E>es sont represent<6E>es en Tcl comme une liste de cha<68>nes.
</DD>
<DT><br><b>resource_list</b>
</DT><DD>La valeur du registre contient une liste de pilotes de p<>riph<70>riques. Les donn<6E>es sont represent<6E>es exactement en Tcl, incluant tous les nulls contenus.
</DD>
</DL></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">En plus des noms de types symboliques list<73>s plus haut, les types inconnus sont identifi<66>s en utilisant un entier 32-bit qui correspond au code de type renvoy<6F> par les interfaces syst<73>me. Dans ce cas, les donn<6E>es sont represent<6E>es exactement en Tcl, incluant tous les nulls contenus.
</div><br>
<div><b>PROBLEMES DE PORTABILITE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande registry est seulement disponible sous Windows </div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="152.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="154.htm"><b>Suivant</b></A></div>
</BODY></HTML>

38
hlp/fr/tcl/regsub.htm Normal file
View File

@@ -0,0 +1,38 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><b>regsub&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">regsub - Effectue des substitutions de cha<68>nes bas<61>es sur l'identification d'expressions rationnelles<br>
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>regsub </b>?<i>switches</i>? <i>exp string subSpec varName</i>&nbsp;
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande cherche une correspondance de l'expression<i> exp</i> dans <i>string</i>, et elle copie <i>string</i> dans la variable dont le nom est donn<6E> par <i>varName</i>. (la correspondance avec les expressions rationnelles est d<>crite dans la page de r<>f<EFBFBD>rence de <A HREF="150.htm"><b>re_syntax</b></A>.) S'il y a une correspondance, alors pendant la copie de <i>string</i> vers <i>varName</i>, la partie de &quot;string&quot; qui correspond <20> &quot;exp&quot; est remplac<61>e par <i>subSpec</i>. Si <i>subSpec</i> contient un ''&amp;'' ou ''&#92;0'', cette s<>quence est remplac<61>e lors de la substitution, par la partie de cha<68>ne qui correspond <20> &quot;exp&quot;. Si <i>subSpec</i> contient un ''&#92;n'' o<> n est un chiffre entre 1 et 9, cette s<>quence est remplac<61>e pendant la substitution par la partie de cha<68>ne qui correspond <20> la n_i<5F>me sous expression de &quot;exp&quot;. Pour <20>viter cette interpr<70>tation sp<73>ciale de ''&amp;'',&nbsp; ''&#92;0'' ou ''&#92;n'', on peut ajouter des antislashs additionnels. Attention, l'usage d'antislashs dans <i>subSpec</i> tend <20> provoquer des conflits avec l'emploi des antislashs dans le parser de Tcl, c'est pourquoi il est souvent plus s&ucirc;r d'encadrer <i>subSpec</i> par des accolades s'il contient des antislashs. Si les arguments initiaux de <A HREF="152.htm"><b>regexp</b></A> commencent avec -, ils sont alors trait<69>s comme des switchs. Les switchs suivants sont actuellement reconnus:</div>
<div ALIGN="LEFT" style="margin-left: 51px;">
<DL>
<DT><b>-all</b><br></DT><DD>Toutes les s<>quences dans &quot;string&quot; qui interceptent &quot;exp&quot; sont trouv<75>es et la substitution est faite sur chacune de ces s<>quences. Sans ce switch, seule la premi<6D>re s<>quence est substitu<74>e. Si -all est indiqu<71>, alors les s<>quences ''&amp;' et ''&#92;n'' sont trait<69>es pour chaque substitution en utilisation l'information de l'interception ad<61>quate.
</DD>
<DT><b>-expanded</b><br></DT><DD>Autorise l'utilisation d'expressions rationnelles <20>tendues, o<> le blanc et les commentaires sont ignor<6F>s. Ceci est la m<>me chose que d'indiquer l'option embarqu<71>e (?x). (voir METASYNTAXE, dans la page re_syntax)
</DD>
<DT><b>-line</b><br></DT><DD>Autorise la sensibilit<69> au retour-chariot (newline). Par d<>faut newline est un caract<63>re ordinaire sans signification particuli<6C>re. Avec ce switch, les expressions entre crochets '&#91;^' et le '.' n'interceptent jamais newline, '^' intercepte une cha<68>ne vide apr<70>s newline en compl<70>ment de sa fonction normale, et '&#36;' intercepte une cha<68>ne vide avant newline en plus de sa fonction normale. Ce switch est <20>quivalent aux switchs <b>-linestop</b> et -<i>lineanchor</i> r<>unis, ou bien <20> l'option embarqu<71>e (?<b>n</b>). (voir METASYNTAXE, dans la page re_syntax )
</DD>
<DT><b>-linestop</b><br></DT><DD>Change le comportement des expressions entre crochets '&#91;^' et l'expression '.' de fa<66>on qu'ils s'interrompent en rencontrant des retours chariots (newline). Ceci est <20>quivalent <20> l'option embarqu<71>e (?p). (voir METASYNTAXE, dans la page re_syntax)
</DD>
<DT><b>-lineanchor</b><br></DT><DD>Change le comportement des expression '^' et '&#36;' (les ''ancres'') de telle sorte qu'ils interceptent respectivement le d<>but et la fin d'une ligne. Ceci est le m<>me que d'indiquer l'option embarqu<71>e (?w). (voir METASYNTAXE, dans la page re_syntax)
</DD>
<DT><b>-nocase</b><br></DT><DD>Les lettres majuscules de &quot;string&quot; seront converties en minuscules avant d'<27>tre compar<61>es <20> &quot;exp&quot;; cependant les substitutions indiqu<71>es par subSpec utilisent la forme originale, avant conversion, de &quot;string&quot;.
</DD>
<DT><b>-start</b> <i>index</i><br></DT><DD>Indique une position de caract<63>re dans string, <20> partir de laquelle il faut commencer la recherche d'expression rationnelle. Quand on utilise ce switch, '^' n'interceptera pas le d<>but de la ligne, et &#92;A interceptera toujours le d<>but de la cha<68>ne <20> l'index indiqu<71>. L'index sera contraint dans les limites effectives de la cha<68>ne entr<74>e.
</DD>
<DT>--</DT><DD>Marque la fin des switches. L'argument suivant cette fin sera trait<69> comme <20>tant l'expresssion &quot;exp&quot;, m<>me s'il commence par -.</DD>
</DL>
</div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande renvoie le nombre de s<>quences qui ont <20>t<EFBFBD> intercept<70>es et remplac<61>es. Voir le manuel <20> <A HREF="152.htm"><b>regexp</b></A> pour des pr<70>cisions sur l'interpr<70>tation des expressions rationnelles.</div><br>
<div>Derni<EFBFBD>re r<>vision: 8.3</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="153.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="155.htm"><b>Suivant</b></A></div>
</BODY></HTML>

16
hlp/fr/tcl/rename.htm Normal file
View File

@@ -0,0 +1,16 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>rename&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">rename - Renomme ou efface une commande </div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>rename </b><i>oldName newName</i>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Renomme la commande appel<65>e <i>oldName</i> en <i>newName</i>. Si <i>newName</i> est une cha<68>ne vide alors <i>oldName</i> est effac<61>e. <i>oldName</i> et <i>newName</i> peuvent inclure des qualificateurs namespace (les noms des namespaces contenant). Si une commande est renomm<6D>e dans un namespace diff<66>rent , ses appels futurs s'ex<65>cuteront dans le nouveau namespace. </div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="154.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="156.htm"><b>Suivant</b></A></div>
</BODY></HTML>

79
hlp/fr/tcl/resource.htm Normal file
View File

@@ -0,0 +1,79 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>resource&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">resource - Manipule les <i>resources</i> Macintosh
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>resource </b><i>option</i> ?<i>arg arg ...</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>resource</b> fournit des op<6F>rations g<>n<EFBFBD>riques pour la gestion des <i>resources</i> Macintosh Cette commande est support<72>e seulement sur la plateforme Macintosh. Chaque fichier Macintosh consiste en deux <i>forks</i>: une fork <i>data</i> et une fork<i> resource</i>. Vous utilisez les commandes normales <b>open</b>, <b>puts</b>, <b>close</b>, etc. pour manipuler les fork <i>data</i>. Vous devez utiliser cette commande, n<>anmoins, pour interagir avec le fork <i>resource</i> <i>Option</i> indique quelle commande resource effectuer. N'importe quel abr<62>viation unique pour <i>option</i> est acceptable Les options valides sont:
<DL>
<DT><b>resource close </b><i>rsrcRef</i>
</DT><DD>Ferme la r<>f<EFBFBD>rence resource donn<6E>e (obtenue par <b>resource</b><A HREF="142.htm"><b>open</b></A>) Les resources de ce fichier resource ne seront plus disponibles.
</DD>
<DT><br><b>resource delete</b> ?<i>options</i>? <i>resourceType</i>
</DT><DD>Cette commande effacera la resource sp<73>cifi<66>e par <i>options</i> et le type <i>resourceType</i> (voir TYPES DE RESOURCES ci-dessous) Les options vous donnent plusieurs fa<66>ons de sp<73>cifier l'effacement de la resource.
<DL>
<DT><b>-id</b> <i>resourceId</i>
</DT><DD>Si l'option <b>-id</b> est donn<6E>e l'id <i>resourceId</i> (voir IDS DE RESOURCE ci-dessous) est utilis<69> pour sp<73>cifier la resource <20> effacer L'id doit&nbsp; <20>tre un nombre - pour sp<73>cifier un nom utiliser l'option<b> -name</b>.
</DD>
<DT><b>-name</b> <i>resourceName</i>
</DT><DD>Si <b>-name</b> est sp<73>cifi<66>, la resource nomm<6D>e <i>resourceName</i> sera effac<61>e. Si <b>-id</b> est aussi fournie, alors il doit exister une resource avec A LA FOIS ce nom et cet id. Si aucun nom n'est fourni, alors l'id sera utilis<69> ind<6E>pendemment du nom de la resource.
</DD>
<DT><b>-file</b> <i>resourceRef</i>
</DT><DD>Si l'option <b>-file</b> est sp<73>cifi<66>e alors la resource sera effac<61>e du fichier point<6E> par <i>resourceRef</i> Autrement la premi<6D>re resource avec le <i>resourceName</i> donn<6E> et ou <i>resourceId</i> qui est trouv<75> dans le chemin du fichier resource sera&nbsp; effac<61>. Pour inspecter le chemin du fichier, utiliser la commande<i> </i><i>resource files</i>.
</DD>
</DL>
</DD>
<DT><br><b>resource files ?</b><i>resourceRef</i>?
</DT><DD>Si <i>resourceRef</i> n'est pas fournie, cette commande retourne une liste Tcl des r<>f<EFBFBD>rences de resource pour tous les fichiers resources couramment ouverts. La liste est dans l'ordre de recherche normal Macintosh pour les resources. Si <i>resourceRef</i> est sp<73>cifi<66>, la commande renverra le chemin vers le fichier dont le fork resource est represent<6E> par ce jeton.
</DD>
<DT><br><b>resource list </b><i>resourceType</i>?<i>resourceRef</i>?
</DT><DD>Liste tous les ids resources de type <i>resourceType</i> (voir TYPES DE RESOURCE ci-dessous) Si <i>resourceRef</i> est sp<73>cifi<66> alors la commande limitera la recherche <20> ce fichier resource particulier. Autrement, tout fichier resource couramment ouvert par l'application sera recherch<63>. Une liste Tcl de soit le nom soit l'id de resource des resources trouv<75>es sera renvoy<6F>e. Voir la section IDS DE RESOURCE ci-dessous pour plus de d<>tails au sujet de ce qu'est un id de resource.
</DD>
<DT><br><b>resource open </b><i>fileName</i> ?<i>access</i>?
</DT><DD>Ouvre la resource pour le fichier <i>fileName</i>. Les permissions d'acc<63>s fichier standard peuvent aussi <20>tre sp<73>cifi<66>es (voyez la page de manuel de <A HREF="142.htm"><b>open</b></A> pour les d<>tails). Une r<>f<EFBFBD>rence de resource (<i>resourceRef</i>) est renvoy<6F>e qui peut <20>tre utilis<69>e par les autres commandes resource. Une erreur peut se produire si le fichier n'existe pas ou si le fichier n'a pas de fork resource. N<>anmoins, si vous ouvrez le fichier avec des permissions d'<27>criture le fichier et/ou le fork resource sera cr<63><72> au lieu de g<>n<EFBFBD>rer une erreur.
</DD>
<DT><br><b>resource read </b><i>resourceType</i> <i>resourceId</i> ?<i>resourceRef</i>?
</DT><DD>Lit la totalit<69> de la resource de type <i>resourceType</i> (voir TYPES DE RESOURCE ci-dessous) et le nom ou l'id of <i>resourceId</i> (voir IDS DE RESOURCE ci-dessous) en m<>moire et retourne le r<>sultat. Si <i>resourceRef</i> est sp<73>cifi<66>, la recherche sera limit<69>e au fichier resource, autrement on recherchera tous les forks resource ouverts dans l'application. Il est important de noter que la plupart des resource Macintosh utilisent un format binaire et les donn<6E>es renvoy<6F> par cette commande peuventt contenir des NULLs ou d'autres donn<6E>es non-ASCII.
</DD>
<DT><br><b>resource types ?</b><i>resourceRef</i>?
</DT><DD>Cette commande retourne une liste Tcl de tous les types de resource (voir TYPES DE RESOURCE ci-dessous) trouv<75>s dans le fichier resource point<6E> par <i>resourceRef</i>. Si <i>resourceRef</i> n'est pas sp<73>cifi<66> elle renverra tout les types de resource trouv<75>s dans tous les fichiers resource couramment ouverts par l'application.
</DD>
<DT><br><b>resource write</b> ?<i>options</i>? <i>resourceType</i> <i>data</i>
</DT><DD>Cette commande <20>crit les <i>data</i> transmises en tant qu'une nouvelle resource de type <i>resourceType</i> (voir TYPES DE RESOURCE ci-dessous). Plusieurs options sont disponibles qui decrivent o<> et comment la resource est stock<63>e.
<DL>
<DT><b>-id</b> <i>resourceId</i></DT><DD>Si l'option <b>-id</b> est donn<6E>e, l'id <i>resourceId</i> (voir IDS DE RESOURCE ci-dessous) est utilis<69> pour la nouvelle resource, autrement un id unique sera g<>n<EFBFBD>r<EFBFBD> qui n'entrera pas en conflit avec une resource existante. N<>anmoins, l'id doit <20>tre un nombre - pour sp<73>cifier un nom utiliser l'option<b> </b><b>-name</b>.
</DD>
<DT><b>-name</b> <i>resourceName</i>
</DT><DD>Si <b>-name</b> est sp<73>cifi<66> le resource sera nomm<6D>e <i>resourceName</i>, autrement elle aura pour nom la cha<68>ne vide.
</DD>
<DT><b>-file</b> <i>resourceRef</i>
</DT><DD>Si l'option <b>-file</b> est sp<73>cifi<66>e alors la resource sera <20>crite dans le fichier point<6E> par <i>resourceRef</i>, autrement la resource la plus recemment ouverte sera utilis<69>e.
</DD>
<DT><b>-force</b>
</DT><DD>Si la resource cible existe d<>j<EFBFBD>, alors par d<>faut Tcl ne l'<27>crasera pas, mais l<>vera une erreur. Utilisez le flag -force pour forcer l'<27>crasement de la resource existante
</DD>
</DL>
</DD>
</DL>
</div><br>
<div><b>TYPES DE RESOURCE </b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les types de resource sont d<>finis comme une cha<68>ne de quatre caract<63>re qui est alors mapp<70>e <20> un id sous-jacent Par exemple, <b>TEXT</b> se r<>f<EFBFBD>re au type de resource Macintosh pour le texte. Le type <b>STR#</b> est une liste de cha<68>nes index<65>e. Toutes les resources Macintosh doivent avoir un type. Voir la documentation Macintosh pour une liste plus compl<70>te des types de resource qui sont commun<75>ment utilis<69>s.
</div><br>
<div><b>IDS DE RESOURCE </b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Pour cette commande la notion d'un id de resource se ref<65>re <20> deux id<69>es sur les resources Macintosh. Partout o<> vous pouvez utiliser un Id de resource, vous pouvez utiliser soit le nom de resource ou un num<75>ro de resource. Les noms sont toujours recherch<63>s ou renvoy<6F>s de pr<70>f<EFBFBD>rence aux num<75>ros. Par exemple, la commande <b>resource list</b> renverra les noms s'ils existent ou les num<75>ros si le nom est NULL.
</div><br>
<div><b>PROBLEMES DE PORTABILITE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <i>resource</i> est seulement disponible sur Macintosh. </div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><A HREF="142.htm">open</A></div><br>
<div>Derni<EFBFBD>re r<>vision: 8.0</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="155.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="157.htm"><b>Suivant</b></A></div>
</BODY></HTML>

45
hlp/fr/tcl/return.htm Normal file
View File

@@ -0,0 +1,45 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>return&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">return - Retourne d'une fonction
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>retourne </b>?<b>-code </b><i>code</i>? ?<b>-errorinfo </b><i>info</i>? ?<b>-errorcode</b><i> code</i>? ?<i>string</i>?&nbsp; <br>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Retourne imm<6D>diatement de la fonction courante (ou d'une commande d'avant plan ou d'une commande<A HREF="163.htm"><b> source</b></A>), avec <i>string</i> comme valeur de retour. Si <i>string</i> n'est pas sp<73>cifi<66>e alors une cha<68>ne vide sera renvoy<6F>e comme r<>sultat <br>
</div><br>
<div><b>RETOURS EXCEPTIONNELS </b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Dans le cas normal o<> l'option <b>-code</b> n'est pas sp<73>cifi<66>e la fonction renverra normalement (son code de retour sera TCL_OK). N<>anmoins, l'option <b>-code</b> peut <20>tre employ<6F>e pour g<>n<EFBFBD>rer un retour exceptionnel de la fonction. <i>Code</i> peut avoir une des valeurs suivantes:
<DL>
<DT><b>ok</b>
</DT><DD>Retour normal: idem que si l'option est omise.
</DD>
<DT><br><b>error</b>
</DT><DD>Retour d'erreur: idem que si la commande <A HREF="103.htm"><b>error</b></A> avait <20>t<EFBFBD> utilis<69>e pour terminer la fonction, except<70> pour la gestion des variables <b>errorInfo</b> et <b>errorCode</b> (voir ci-dessous).
</DD>
<DT><br><b>return</b>
</DT><DD>La fonction courante renvoie un code de retour de TCL_RETURN, ainsi que la fonction qui l'a appel<65>e.
</DD>
<DT><br><b>break</b>
</DT><DD>La fonction courante renvoie un code de retour de TCL_BREAK, qui terminera la boucle la plus imbriqu<71>e dans le code qui a appel<65> la fonction courante.
</DD>
<DT><br><b>continue</b>
</DT><DD>La fonction courante renvoie un code de retour de TCL_CONTINUE, qui terminera l'it<69>ration courante de la boucle la plus imbriqu<71>e dans le code qui appel<65>e la fonction courante.
</DD>
<DT><br><i>value</i>
</DT><DD><i>Value</i> doit <20>tre un entier, il sera renvoy<6F> comme code de retour de la fonction courante.
</DD>
</DL></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">L'option <b>-code</b> est rarement utilis<69>e. Elle est fournie pour que les fonctions qui impl<70>mentent de nouvelles structures de contr<74>le puissent refl<66>ter les conditions exceptionnelle <20> leurs appelants. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Deux options suppl<70>mentaires, <b>-errorinfo</b> et <b>-errorcode</b>, peuvent <20>tre employ<6F>es pour fournir une information suppl<70>mentaire pendant le retour d'erreur. Ces options sont ignor<6F>es <20> moins que <i>code</i> soit <A HREF="103.htm"><b>error</b></A>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">L'option <b>-errorinfo</b> sp<73>cifie une trace initiale de la pile pour la variable<b> errorInfo</b>;&nbsp; si elle n'est pas sp<73>cifi<66>e alors la trace de la pile transmise <20> <b>errorInfo</b> inclutra l'appel <20> la fonction et les niveaux sup<75>rieurs sur la pile mais n'inclutra pas d'information concernant le contexte de l'erreur <20> l'int<6E>rieur de la fonction. Typiquement la valeur <i>info</i> est fournie en partant de la valeur transmise <20> <b>errorInfo</b> apr<70>s qu'une commande <A HREF="94.htm"><b>catch</b></A> ait intercept<70> une erreur <20> l'int<6E>rieur de la fonction. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si l'option <b>-errorcode</b> est sp<73>cifi<66>e alors <i>code</i> fournit une valeur pour la variable<b> errorCode</b>. Si l'option n'est pas sp<73>cifi<66>e alors <b>errorCode</b> sera par d<>faut de <b>NONE</b> </div><br>
<div>Derni<EFBFBD>re r<>vision: 7.0</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="156.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="158.htm"><b>Suivant</b></A></div>
</BODY></HTML>

130
hlp/fr/tcl/safe.html Normal file
View File

@@ -0,0 +1,130 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>Safe Tcl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Safe Base - M<>canisme pour la cr<63>ation et la manipulation d'interpr<70>teurs s<>r.
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>::safe::interpCreate</b> ?<i>slave</i>? ?<i>options...</i>? <br>
<b>::safe::interpInit</b> <i>slave</i> ?<i>options...</i>? <br>
<b>::safe::interpConfigure</b> <i>slave</i> ?<i>options...</i>? <br>
<b>::safe::interpDelete</b> <i>slave</i> <br>
<b>::safe::interpAddToAccessPath</b> <i>slave</i> <i>directory</i> <br>
<b>::safe::interpFindInAccessPath</b> <i>slave</i> <i>directory</i> <br>
<b>::safe::setLogCmd</b> ?<i>cmd arg...</i>?
</div><br>
<div><b>OPTIONS</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">?<b>-accessPath</b> <i>pathList</i>? ?<b>-statics</b> <i>boolean</i>? ?<b>-noStatics</b>? ?<b>-nested</b> <i>boolean</i>? ?<b>-nestedLoadOk</b>? ?<b>-deleteHook</b> <i>script</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Safe Tcl est un m<>canisme pour ex<65>cuter des scripts Tcl <20>trangers sans risque et pour fournir un acc<63>s <20> de tels scripts potentiellement dangereux. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Safe Base s'assure que des scripts Tcl <20>trangers ne peuvent nuire <20> l'application h<>te. Safe Base pr<70>vient les attaques d'int<6E>grit<69> et de s<>curit<69>. Les scripts <20>trangers sont emp<6D>ch<63>s de corrompre l'<27>tat de l'application ou de l'ordinateur h<>te. Ces scripts sont <20>galement emp<6D>ch<63>s de r<>v<EFBFBD>ler l'information stock<63>e sur l'ordinateur principal ou dans l'application h<>te <20> n'importe quel espion. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Safe Base permet <20> un interpr<70>teur ma<6D>tre de cr<63>er des interpr<70>teurs s<>curis<69>s et restreints qui contiennent un ensemble d'alias pr<70>d<EFBFBD>finis pour les commandes <A HREF="163.htm"><b>source</b></A>, <A HREF="134.htm"><b>load</b></A>, <A HREF="111.htm"><b>file</b></A>, <A HREF="101.htm"><b>encoding</b></A>, et <A HREF="106.htm"><b>exit</b></A> et peuvent employer des m<>canismes d'auto-chargement et de paquet. </div>
<div ALIGN="LEFT" style="margin-left: 50px;">Aucune connaissance de la structure de syst<73>me de fichiers n'est n<>cessaire <20> l'interpr<70>teur s<>r, parce qu'il acc<63>de seulement <20> un chemin virtuel contenant des rep<65>res. Quand l'interpr<70>teur s<>r demande le source d'un fichier, il emploie les rep<65>res dans le chemin&nbsp; virtuel en tant qu'<27>l<EFBFBD>ment du nom du fichier; l'interpr<70>teur ma<6D>tre d'une mani<6E>re transparente traduit les rep<65>res en vrais noms de r<>pertoires et ex<65>cute l'op<6F>ration demand<6E>e (voir la section <b>SECURITE</b> ci-dessous pour les d<>tails). Diff<66>rents niveaux de s<>curit<69> peuvent <20>tre choisis en employant les flags optionnels des commandes d<>crites ci-dessous. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Toutes les commandes fournies dans l'interpr<70>teur ma<6D>tre par la commande Safe Base r<>sident dans le namespace <b>safe</b>: </div>
<br>
<div><b>COMMANDES</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les commandes suivantes sont fournies dans le ma<6D>tre interpr<70>teur:
<DL>
<DT><b>::safe::interpCreate</b> ?<i>slave</i>? ?<i>options...</i>?
</DT><DD>Cr<EFBFBD>e un interpr<70>teur s<>r, installe les alias d<>crits dans la section ALIAS et initialise le m<>canisme d'auto-chargement et de paquet comme indiqu<71> par les <A HREF="298.htm"><b>options</b></A> fournies. Voir la section <b>OPTIONS</b> ci-dessous pour un description de l optionnel arguments. ci-dessous pour une description des&nbsp; arguments facultatifs. Si l'argument <i>slave</i> est omis, un nom sera g<>n<EFBFBD>r<EFBFBD>.. <b>::safe::interpCreate</b> renvoie toujours le nom d'interpr<70>teur.
</DD>
<DT><br><b>::safe::interpInit</b> <i>slave</i> ?<i>options...</i>?
</DT><DD>Cette commande est identique <20> <b>interpCreate</b> except<70> qu'elle ne cr<63>e pas l'interpr<70>teur s<>r. <i>slave</i> doit avoir <20>t<EFBFBD> cr<63><72> par d'autres moyens, comme <b>interp </b><b>create-safe</b>.
</DD>
<DT><br><b>::safe::interpConfigure</b> <i>slave</i> ?<i>options...</i>?
</DT><DD>Si aucunes <i>options</i> ne sont donn<6E>es, renvoie les param<61>tres pour toutes les options de l'interpr<70>teur s<>r comme liste d'options et leurs valeurs courantes pour <i>slave</i>. Si un argument additionnel est fourni, renvoie une liste de 2 <20>l<EFBFBD>ments <i>name</i> et <i>value</i> o<> <i>name</i> est le nom complet de cette option et <i>value</i> la valeur courante pour cette option et <i>slave</i>. Si plus de deux arguments additionnels sont fournis, il modifiera l'interpr<70>teur s<>r et changera chacunes et seulement les option fournies. Voir la section <b>OPTIONS</b> ci-dessous pour la description d'options. Exemple d'utilisation:
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Cr<43>e un nouvel interp avec la m<>me configuration que &quot;&#36;i0&quot; :
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set i1 &#91;eval safe::interpCreate &#91;safe::interpConfigure &#36;i0]]
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Obtient le deleteHook courant<br>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set dh &#91;safe::interpConfigure &#36;i0&nbsp; -del]
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Change (seulement) l'attribut de chargement statics ok d'un interp
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# et son deleteHook (laissant le reste inchang<6E>) :<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;safe::interpConfigure &#36;i0&nbsp; -delete &#123;foo bar} -statics 0 ;<br>
</DD>
<DT><br><b>::safe::interpDelete</b> <i>slave</i>
</DT><DD>Efface l'interpr<70>teur s<>r et nettoie les structures de donn<6E>es&nbsp; principales correspondantes d'interpr<70>teur. Si un script <i>deleteHook</i> a <20>t<EFBFBD> sp<73>cifi<66> pour cet interpr<70>teur, il est <20>valu<6C> avant l'interpr<70>teur que soit effac<61>, avec le nom de l'interpr<70>teur comme argument additionnel.
</DD>
<DT><br><b>::safe::interpFindInAccessPath</b> <i>slave</i> <i>directory</i>
</DT><DD>Cette commande trouve et renvoie le jeton pour le vrai r<>pertoire <i>directory</i> de l'acc<63>s au chemin virtuel courant de l'interpr<70>teur s<>r. Elle g<>n<EFBFBD>re une erreur si le r<>pertoire n'est pas trouv<75>. Exemple d'utilisation:
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;slave eval &#91;list set tk_library &#91;::safe::interpFindInAccessPath &#36; name &#36;tk_library]]
</DD>
<DT><br><b>::safe::interpAddToAccessPath</b> <i>slave</i> <i>directory</i>
</DT><DD>Cette commande ajoute <i>directory</i> au chemin virtuel maintenu pour&nbsp; l'interpr<70>teur s<>r dans le ma<6D>tre, et retourne un jeton qui peut <20>tre utilis<69> dans l'interpr<70>teur s<>r pour obtenir acc<63>s aux fichiers dans ce r<>pertoire. Si le r<>pertoire est d<>j<EFBFBD> dans le chemin virtuel, elle renvoie seulement le jeton sans ajouter le r<>pertoire au chemin virtuel de nouveau. Exemple d'utilisation:
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp&#36;slave eval &#91;list set tk_library &#91;::safe::interpAddToAccessPath &#36;nom &#36; tk_library]]
</DD>
<DT><br><b>::safe::setLogCmd</b> ?<i>cmd arg...</i>?
</DT><DD>Cette commande installe un script qui sera appel<65> quand les&nbsp; <20>v<EFBFBD>nements int<6E>ressants du cycle de vie se produisent pour un&nbsp; interpr<70>teur s<>r. Une fois appel<65>e sans arguments, elle renvoie le script actuellement install<6C>. Si appel<65>e avec un&nbsp; argument, une cha<68>ne vide, le script actuellement install<6C> est&nbsp; enlev<65> et la journalisation est arr<72>t<EFBFBD>e. Le script sera appel<65> avec un argument suppl<70>mentaire, une cha<68>ne d<>crivant l'<27>v<EFBFBD>nement int<6E>ressant. Le but principal est d'aider le debugging des interpr<70>teur s<>rs. En utilisant ce service vous pouvez obtenir des message d'erreurs complets pendant que l'interpr<70>teur s<>r re<72>oit seulement des messages d'erreurs g<>n<EFBFBD>riques. Ceci emp<6D>che l'interpr<70>teur s<>r de voir des messages au sujet des <20>checs et d'autres <20>v<EFBFBD>nements qui pourraient contenir une information sensible telle que de vrais noms de r<>pertoire.
<br>Exemple d'utilisation:
<br>::safe::setLogCmd puts stderr
</DD>
</DL>
</div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Ci-dessous vous trouverez la sortie d'une session exemple dans laquelle un interpr<70>teur s<>r a essay<61> de &quot; sourcer &quot; un fichier non trouv<75> dans son chemin d'acc<63>s virtuel. Notez que l'interpr<70>teur s<>r a seulement re<72>u un message d'erreur disant que le fichier n'a pas <20>t<EFBFBD> trouv<75>: </div>
<div ALIGN="LEFT" style="margin-left: 153px;">NOTICE for slave interp10 : Created<br>
NOTICE for slave interp10 : Setting accessPath=(/foo/bar) staticsok=1 nestedok=0 deletehook=()<br>
NOTICE for slave interp10 : auto_path in interp10 has been set to &#123;&#36;p(:0:)}<br>
ERROR for slave interp10 : /foo/bar/init.tcl: no such file or directory</div>
</div><br>
<div><b>OPTIONS</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les options suivantes sont communes <20> <b>::safe::interpCreate</b>, <b>::safe::interpInit</b>, et <b>::safe::interpConfigure</b>. N'importe quel nom d'option peut <20>tre abr<62>g<EFBFBD> <20> son nom non-ambigu minimal. Les noms d'option ne sont ne sont pas sensibles <20> la casse.
<DL>
<DT><b>-accessPath</b> <i>directoryList</i></DT><DD>Cette option place la liste de r<>pertoires desquels l'interpr<70>teur s<>r peut <A HREF="163.htm"><b>source</b></A> et <A HREF="134.htm"><b>load</b></A> des fichiers. Si cette option n'est pas sp<73>cifi<66>e, ou si elle est donn<6E>e comme liste vide, l'interpr<70>teur s<>r emploiera les m<>me r<>pertoires que son ma<6D>tre pour auto-chargement. Voir la section <b>SECURITE</b> ci-dessous pour plus de d<>tail au sujet des chemins virtuels, des jetons et du contr<74>le d'acc<63>s.
</DD>
<DT><br><b>-statics</b> <i>boolean</i>
</DT><DD>Cette option indique si l'interpr<70>teur s<>r sera autoris<69> <20> charger les packages statiquement li<6C>s (comme <b>load &#123;} Tk</b>). La valeur par d<>faut est <b>true</b> : les interpr<70>teur s<>rs sont autoris<69> <20> charger les packages statiquement li<6C>s.
</DD>
<DT><br><b>-noStatics</b>
</DT><DD>Cette option est un raccourci de convenance pour <b>-statics false</b> et indique ainsi que l'interpr<70>teur s<>r ne sera pas autoris<69> <20> charger les packages statiquement li<6C>s.
</DD>
<DT><br><b>-nested</b> <i>boolean</i>
</DT><DD>Cette option sp<73>cifie si l'interpr<70>teur s<>r sera autoris<69> <20> charger des packages dans ses propre sous-interpr<70>teurs. La valeur par d<>faut est <b>false</b>: les interpr<70>teur s<>rs ne sont pas autoris<69> <20> charger de packages dans leurs propres interpr<70>teurs secondaires.
</DD>
<DT><br><b>-nestedLoadOk</b>
</DT><DD>Cette option est un raccourci de convenance pour <b>-nested true</b> et indique ainsi que l'interpr<70>teur s<>r sera autoris<69> <20> charger des packages dans ses propres interpr<70>teurs secondaires.
</DD>
<DT><br><b>-deleteHook</b> <i>script</i>
</DT><DD>Quand <20> cette option est donn<6E> un <i>script</i> non vide, elle est <20>valu<6C>e dans le ma<6D>tre avec le nom de l'interpr<70>teur s<>r comme argument additionnel juste avant supprimer r<>ellement l'interpr<70>teur s<>r. Donner une valeur vide enl<6E>ve n'importe quel script d'effacement actuellement install<6C> pour cet interpr<70>teur s<>r. La valeur par d<>faut (<b>&#123;}</b>) n'est n'avoir aucun appel de suppression.
</DD>
</DL>
</div><br>
<div><b>ALIAS</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les alias suivants sont fournis dans un interpr<70>teur s<>r:
<DL>
<DT><b>source</b> <i>fileName</i>
</DT><DD>Le fichier requis, un fichier source Tcl, est &quot;sourc<EFBFBD>&quot; dans interpr<70>teur s<>r s'il est trouv<75>. L'alias <A HREF="163.htm"><b>source</b></A> peut seulement &quot; <i>sourcer &quot; </i>les fichier des r<>pertoires qui se trouvent dans le chemin virtuel pour l'interpr<70>teur s<>r. L'alias <A HREF="163.htm"><b>source</b></A> exige de l'interpr<70>teur s<>r qu'il utilise un des noms de jeton dans son chemin virtuel pour d<>signer le r<>pertoire dans lequel le fichier a &quot;sourcer&quot; peut <20>tre trouv<75>. Voir la section sur la <b>SECURITE</b> pour une discussion plus approfondie des restrictions sur les noms de fichiers valides.
</DD>
<DT><br><b>load</b> <i>fileName</i>
</DT><DD>Le fichier requis, un fichier objet partag<61>, est charg<72> dynamiquement dans l'interpr<70>teur s<>r s'il est trouv<75>. Le nom de fichier doit contenir le nom d'un jeton mentionn<6E> dans le chemin virtuel de l'interpr<70>teur s<>r pour <20>tre trouv<75> avec succ<63>s. De plus, le fichier objet partag<61> doit contenir un point d'entr<74>e s<>r; voyez la page de manueluel de la commande <A HREF="134.htm"><b>load</b></A> pour plus de d<>tails.
</DD>
<DT><br><b>file</b> ?<i>subCmd args...</i>?
</DT><DD>L'alias <A HREF="111.htm"><b>file</b></A> donne acc<63>s <20> un sous ensemble s<>r des sous-commandes de&nbsp; <A HREF="111.htm"><b>file</b></A>; il permet seulement les sous-commandes <b>dirname</b>, <A HREF="127.htm"><b>join</b></A>, <b>extension</b>, <b>root</b>, <b>tail</b>, <b>pathname</b> et <A HREF="164.htm"><b>split</b></A>. Pour plus de d<>tails sur ces sous-commandes voyez la page de manueluel pour la commande<A HREF="111.htm"><b> file</b></A>.
</DD>
<DT><br><b>encoding</b> ?<i>subCmd args...</i>?
</DT><DD>L'alias <b>encoding</b> donne acc<63>s <20> un sous ensemble s<>r des sous-commandes de <A HREF="101.htm"><b>encoding</b></A> il interdit de fixer l'encodage syst<73>me, mais permet tout autre sous-commandes incluant <b>system</b> <20> v<>rifier l'encodage courant.
</DD>
<DT><br><b>exit</b>
</DT><DD>L'interpr<70>teur appelant est supprim<69> et son traitement est arr<72>t<EFBFBD>, mais le processus Tcl dans lequel cet interpr<70>teur existe n'est pas termin<69>.</DD>
</DL>
</div>
<br>
<div><b>SECURITE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La Safe Base n'essaye pas d'emp<6D>cher compl<70>tement les attaques d'ennui et de deni de service. Ces formes d'attaque emp<6D>chent temporairement l'application ou l'utilisateur d'utiliser l'ordinateur pour effectuer des t<>ches utiles, par exemple en consommant tout le temps CPU ou tout l'affichage disponible. Ces attaques, quoique graves, sont consid<69>r<EFBFBD>es comme moins importantes en g<>n<EFBFBD>ral que les attaques d'int<6E>grit<69> et d'intimit<69> que la Safe Base doit emp<6D>cher. </div>
<div ALIGN="LEFT" style="margin-left: 50px;">Les commandes disponibles dans un interpr<70>teur s<>r, en plus de&nbsp; l'ensemble s<>r comme d<>fini en page de manueluel d'<A HREF="126.htm"><b> interp</b></A>, sont des alias de <A HREF="163.htm"><b>source</b></A>, <A HREF="134.htm"><b>load</b></A>, <A HREF="106.htm"><b>exit</b></A>, et des sous-ensembles s<>rs de <A HREF="111.htm"><b>file</b></A> et <A HREF="101.htm"><b>encoding</b></A>. L'interpr<70>teur s<>r peut aussi auto-charger du code et il peut demander que des packages soient charg<72>s.. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Puisque certaines de ces commandes acc<63>dent au syst<73>me de fichiers local, il y a un danger potentiel de fuites d'information au sujet de la structure des r<>pertoires. Pour emp<6D>cher ceci, les commandes qui prennent des noms de fichier comme aguments dans un interpr<70>teur s<>r utilisent des jetons au lieu des noms r<>els de r<>pertoires. Ces jetons sont traduits en nom r<>el de r<>pertoire pendant qu'une requ<71>te pour, ex., sourcer un fichier est trait<69>e par le ma<6D>tre interpr<70>teur. Ce syst<73>me de chemin virtuel est maintenu dans l'interpr<70>teur principal pour chaque interpr<70>teur s<>r cr<63><72> par <b>::safe::interpCreate</b> ou initialis<69> par <b>::safe::interpInit</b> et le chemin pointe des jetons accessibles dans l'interpr<70>teur s<>r vers les noms de chemin r<>els sur le syst<73>me de fichier local emp<6D>chant de ce fait les interpr<70>teurs s<>rs de conna<6E>tre la structure du syst<73>me de fichiers de la machine sur lequel l'interpr<70>teur s'ex<65>cute. Les seuls arguments valides de noms de fichier pour les alias <A HREF="163.htm"><b>source</b></A> et <A HREF="134.htm"><b>load</b></A> fournis <20> l'esclave sont des chemin sous la forme de <b>&#91;file join</b><i>tokenfilename</i><b>]</b> (ie, en utilisant les formats natifs de chemin: <i>token</i><b>/</b><i>filename</i> sous Unix, <i>token</i><b>&#92;</b><i></i><A HREF="113.htm"><i>filename</i></A> sous Windows, et <i>token</i><b>:</b><i>filename</i> sur Mac), o<> <i>token </i>repr<EFBFBD>sente un des r<>pertoires de la liste <i>accessPath</i> et <i>filename</i> est un fichier dans ce r<>pertoire (on ne permet aucun acc<63>s aux sous-r<>pertoires). </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Quand un jeton est utilis<69> par un interpr<70>teur s<>r dans un requ<71>te pour &quot; sourcer &quot; ou charger un fichier, le jeton est v<>rifi<66> et traduit en un nom r<>el de chemin et le fichier a &quot;sourcer&quot; ou charg<72> est localis<69> sur le syst<73>me de fichier. L'interpr<70>teur s<>r n'a jamais connaissance du nom de chemin actuel sous lequel le fichier est stock<63> sur le syst<73>me de fichier. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Pour emp<6D>cher une fuite d'information potentielle <20> partir de fichiers sensibles accidentellement inclus dans l'ensemble de fichiers qui peut <20>tre &quot;sourc<EFBFBD>&quot; par un interpr<70>teur s<>r, l'alias <A HREF="163.htm"><b>source</b></A> restreint l'acc<63>s aux fichiers respectant les contraintes suivantes: le nom de chemin ne doit pas avoir plus de quatorze caract<63>res, ne doit pas contenir plus d'un point (&quot;<b>.</b>&quot;), doit finir avec l'extension <b>.tcl</b> ou <20>tre appel<65> <b>tclIndex</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Chaque <20>l<EFBFBD>ment de la liste initiale de chemin d'acc<63>s sera assign<67> <20> un jeton qui sera plac<61>e dans l'<b>auto_path </b>de l'esclave et le premier <20>l<EFBFBD>ment de cette liste sera fix<69> en tant que <b>tcl_library</b> pour cet esclave. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si l'argument de chemin d'acc<63>s n'est pas donn<6E> ou est une liste vide, le comportement par d<>faut est de laisser l'esclave acceder aux m<>mes packages que le ma<6D>tre (ou pour <20>tre plus pr<70>cis: seulement les packages <20>crits en Tcl (ne peuvent pas <20>tre dangereux tant qu'ils fonctionnent dans l'interpr<70>teur esclave) et les extensions C qui fournissent un point d'entr<74>e Safe_Init). Dans ce but, l'<b>auto_path</b> du ma<6D>tre sera employ<6F> pour construire le chemin d'acc<63>s de l'esclave. Pour que l'esclave charge avec succ<63>s la biblioth<74>que Tcl (qui inclut le m<>canisme d'auto-chargement) la <b>tcl_library</b> sera ajout<75>e ou d<>plac<61>e <20> la premi<6D>re position si n<>cessaire, dans le chemin d'acc<63>s de l'esclave, ainsi la <b>tcl_library</b> esclave sera la m<>me que celle du ma<6D>tre (son vrai chemin sera cependant toujours invisible <20> l'esclave). Pour que l'auto-chargement fonctionne de m<>me pour l'esclave et le ma<6D>tre dans ce cas par d<>faut, les sous r<>pertoires de premier-niveau de chaque r<>pertoire dans l'<b>auto_path</b> du ma<6D>tre sera aussi ajout<75> (si aucun n'est d<>j<EFBFBD> inclus) au chemin d'acc<63>s de l'esclave. Vous pouvez toujours indiquer un chemin plus restrictif pour lequel les sous r<>pertoires ne seront jamais recherch<63>s explicitement en sp<73>cifiant votre liste de r<>pertoires avec le flag <b>-accessPath</b> au lieu de compter sur ce m<>canisme par d<>faut. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Quand le <i>accessPath</i> est chang<6E> apr<70>s la premi<6D>re cr<63>ation ou l'initialisation (c.a.d au travers de <b>interpConfigure -accessPath</b><i>list</i>), un <A HREF="129.htm"><b>auto_reset</b></A> est automatiquement <20>valu<6C> dans l'interpr<70>teur s<>r pour synchroniser son <b>auto_index</b> avec la nouvelle liste de jetons <br>
</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><A HREF="126.htm">interp</A>(n), <A HREF="129.htm">library</A>(n), <A HREF="134.htm">load</A>(n), <A HREF="143.htm">package</A>(n), <A HREF="163.htm">source</A>(n), <A HREF="174.htm">unknown</A>(n)</div><br>
<div>Derni<EFBFBD>re r<>vision: 8.0</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="157.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="159.htm"><b>Suivant</b></A></div>
</BODY></HTML>

66
hlp/fr/tcl/scan.htm Normal file
View File

@@ -0,0 +1,66 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>scan&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">scan <20> Analyse une cha<68>ne en utilisant des sp<73>cificateurs de conversion dans le style de sscanf
</div> <br>
<div><b>SYNTAXE</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>scan </b><i>string format </i>?<i>varName varName ...</i>?
</div> <br>
<div><b>INTRODUCTION</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande analyse les champs <20> partir d'une cha<68>ne d'entr<74>e de la m<>me fa<66>on que la fonction ANSI C <b>sscanf</b> et retourne un compte du nombre de conversions effectu<74>es, ou -1 si la fin de la cha<68>ne d'entr<74>e est atteinte avant qu'une conversion ait <20>t<EFBFBD> effectu<74>e <i>String</i> donne l'entr<74>e a analyser et <i>format</i> indique comment l'analyser, en utilisant les sp<73>cificateurs de conversions <b>%</b> comme dans <b>sscanf</b>. Chaque <i>varName</i> donne le nom d'une variable; quand un champ est scann<6E> <20> partir de <i>string</i> le r<>sultat est converti en une cha<68>ne et assign<67> <20> la variable correspondante. Si aucunes variables <i>varName</i> ne sont sp<73>cifi<66>es, alors <b>scan</b> fonctionne d'une mani<6E>re lin<69>aire, retournant les donn<6E>es qui seraient autrement stock<63>es dans les variables comme une liste. Dans le cas lin<69>aire, une cha<68>ne vide est renvoy<6F>e quand la fin de la cha<68>ne d'entr<74>e est atteinte avant qu'une conversion ait <20>t<EFBFBD> effectu<74>e
</div><br>
<div><b>DETAILS SUR LE SCANNING</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>Scan</b> op<6F>re en scannant <i>string</i> et <i>format</i> ensemble. Si le caract<63>re suivant dans <i>format</i> est un espace ou une tabulation alors il correspond <20> un nombre quelconque d'espaces dans <i>string</i> (incluant z<>ro). Autrement, si ce n'est pas un caract<63>re <b>%</b> alors il doit correspondre au caract<63>re suivant de <i>string</i>. Quand un <b>%</b> est rencontr<74>e dans <i>format</i>, il indique le d<>but d'un sp<73>cificateur de conversion. Un sp<73>cificateur de conversion contient jusqu'a quatre champs apr<70>s le <b>%</b>: une <A HREF="24.htm"><b>*</b></A>, indique que la valeur convertie est <20>cart<72>e&nbsp; au lieu d'<27>tre assign<67>e <20> une variable; un sp<73>cificateur de position XPG3; un nombre indiquant une largeur de champ maximum; et un caract<63>re de conversion. Tous ces champs sont optionnels except<70> le caract<63>re de conversion. Les champs pr<70>sents doivent apparaitre dans l'ordre indiqu<71> plus haut. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Quand <b>scan</b> trouve un sp<73>cificateur de conversion dans <i>format</i>, il saute en premier tout espace dans <i>string</i> (<28> moins que le sp<73>cificateur soit <b>&#91;</b> ou <b>c</b>). Ensuite il convertit les caract<63>res d'entr<74>e suivants en accord avec le&nbsp; sp<73>cificateur de conversion et range le r<>sultat dans la variable d<>sign<67>e par l'argument suivant <20> <b>scan</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si le <b>%</b> est suivi par un nombre d<>cimal et un <b>&#36;</b>, comme dans &quot;<b>%2&#36;d</b>&quot;, alors la variable <20> utiliser n'est pas extraite de l'argument suivant. Contrairement, elle est extraite de l'argument indiqu<71> par le nombre, where 1 corresponds <20> la premi<6D>re <i>varName</i>. Si il y a un quelconque sp<73>cificateur de position dans <i>format</i> alors tous les sp<73>cificateurs doivent <20>tre positionnels. Toutes les <i>varName</i> sur la liste d'arguments doivent correspondre exactement <20> un sp<73>cificateur de conversion ou une erreur est g<>n<EFBFBD>r<EFBFBD>e, ou dans le cas lin<69>aire, toute position peut <20>tre sp<73>cifi<66>e au moins une fois et les positions vides seront remplies avec des cha<68>nes vides. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les caract<63>res de conversions suivants sont support<72>s:
<DL>
<DT><b>d</b></DT><DD>Le champ d'entr<74>e doit <20>tre un entier d<>cimal. Il est lu et la valeur est stock<63>e dans la variable comme cha<68>ne d<>cimale.
</DD>
<DT><br><b>o</b>
</DT><DD>Le champ d'entr<74>e doit <20>tre un entier octal. Il est lu et la valeur est stock<63>e dans la variable comme cha<68>ne d<>cimale.
</DD>
<DT><br><b>x</b>
</DT><DD>Le champ d'entr<74>e doit <20>tre un entier hexad<61>cimal. Il est lu et la valeur est stock<63>e dans la variable comme cha<68>ne d<>cimale.
</DD>
<DT><br><b>u</b>
</DT><DD>Le champ d'entr<74>e doit <20>tre un entier d<>cimal. La valeur est stock<63>e dans la variable comme cha<68>ne enti<74>re d<>cimale non sign<67>e.
</DD>
<DT><br><b>i</b>
</DT><DD>Le champ d'entr<74>e doit <20>tre un entier La base (ex. d<>cimale, octal, ou hexad<61>cimal) est d<>termin<69>e de la m<>me fa<66>on que d<>crite dans <A HREF="107.htm"><b>expr</b></A>. La valeur est stock<63>e dans la variable comme cha<68>ne d<>cimale.
</DD>
<DT><br><b>c</b>
</DT><DD>Un seul caract<63>re est lu et sa valeur binaire est stock<63>e dans la variable comme cha<68>ne d<>cimale. L'espace initial n'est pas saut<75> dans ce cas, donc le champ d'entr<74>e peut <20>tre un espace. Cette conversion est diff<66>rente du standard ANSI dans lequel le champ d'entr<74>e consiste toujours en un simple caract<63>re et ou aucune largeur de champ ne peut <20>tre sp<73>cifi<66>e.
</DD>
<DT><br><b>s</b>
</DT><DD>Le champ d'entr<74>e consiste en tous les caract<63>res jusqu'a l'espace suivant; les caract<63>res sont copi<70>s dans la variable.
</DD>
<DT><br><b>e</b> ou <b>f</b> ou <b>g</b>
</DT><DD>Le champ d'entr<74>e doit <20>tre un nombre <20> virgule flottante consistant&nbsp; d'un signe optionnel, une cha<68>ne de chiffres d<>cimaux pouvant contenir un point d<>cimal, et un exposant optionnel consistant&nbsp; d'un <b>e</b> ou <b>E</b> suivi par un signe optionnel et une cha<68>ne de chiffres d<>cimaux. Il est lu et stock<63> dans la variable comme une cha<68>ne flottante.
</DD>
<DT><br><b>&#91;</b><i>chars</i><b>]</b>
</DT><DD>Le champ d'entr<74>e consiste en un nombre quelconque de caract<63>res dans&nbsp; <i>chars</i>. La cha<68>ne correspondante est stock<63>e dans la variable. Si le premier caract<63>re entre crochets est un <b>]</b> alors il est trait<69> comme faisant partie de <i>chars</i> plut<75>t que le crochet fermant l'ensemble. Si <i>chars</i> contient une s<>quence de la forme <i>a</i><b>-</b><i>z</i> alors tout caract<63>re entre <i>a</i> et <i>z</i> (inclus) correspondra. Si le premier ou dernier caract<63>re entre crochets est un <b>-</b>, alors il est trait<69> comme faisant partie de <i>chars</i> plut<75>t que d'indiquer un intervalle.
</DD>
<DT><br><b>&#91;^</b><i>chars</i><b>]</b>
</DT><DD>Le champ d'entr<74>e consiste en un nombre quelconque de caract<63>res non inclus dans <i>chars</i>. La cha<68>ne correspondante est stock<63>e dans la variable. Si le caract<63>re suivant imm<6D>diatement le <b>^</b> est un <b>]</b> alors il est&nbsp; trait<69> comme partie de l'ensemble plut<75>t que le crochet fermant l'ensemble. Si <i>chars</i> contient une s<>quence de la forme <i>a</i><b>-</b><i>z</i> alors tout caract<63>re entre <i>a</i> et <i>z</i> (inclus) sera exclu de l'ensemble. Si le premier ou le dernier caract<63>re entre crochets est un <b>-</b>, alors il est trait<69> comme faisant partie de <i>chars</i> plut<75>t que d'indiquer un intervalle.
</DD>
<DT><br><b>n</b>
</DT><DD>Aucune entr<74>e n'est utilis<69>e de la cha<68>ne d'entr<74>e. Par contre, le nombre total de caract<63>res scann<6E>s de la cha<68>ne d'entr<74>e est stock<63> dans la variable.
</DD>
</DL>
</div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Le nombre de caract<63>res lus de l'entr<74>e pour conversion est le plus grand nombre qui a un sens pour cette conversion (ex. le plus grand nombre de chiffres d<>cimaux possibles pour <b>%d</b>, le plus grand nombre de chiffres octaux possibles pour <b>%o</b>, et ainsi de suite). Le champ d'entr<74>e pour une conversion donn<6E>e se termine soit quand un espace est rencontr<74> ou quand la largeur maximum de champ a <20>t<EFBFBD> atteinte, suivant lequel est rencontr<74> en premier. Si une <b>*</b> est pr<70>sente dans le sp<73>cificateur de conversion alors aucune variable n'est assign<67>e et l'argument suivant n'est pas utilis<69> </div><br>
<div><b>DIFFERENCES AVEC SSCANF ANSI</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Le comportement de la commande <b>scan</b> est le m<>me que celui de la fonction ANSI C <b>sscanf</b> except<70> les diff<66>rences suivantes: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Le sp<73>cificateur de conversion <b>%p</b> n'est pas support<72>. </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;2]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pour les conversions <b>%c</b> une seule valeur caract<63>re est convertie en cha<68>ne d<>cimale, qui est alors assign<67>e <20> la correspondante <i>varName</i>; aucune largeur de champ ne peut <20>tre sp<73>cifi<66>e pour cette conversion. </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;3]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Les modificateurs <b>l</b>, <b>h</b>, et <b>L</b> sont ignor<6F>s;&nbsp; les valeurs enti<74>res sont toujours converties comme s'il n'y avait pas de modificateur pr<70>sent et les valeurs r<>elles sont toujours converties comme si le modificateur <b>l</b> etait pr<70>sent (ex. le type <b>double</b> est utilis<69> pour la repr<70>sentation interne). </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;4]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Si la fin de la cha<68>ne d'entr<74>e est atteinte avant que quelconque conversion ait <20>t<EFBFBD> effectu<74>e et qu'aucune variable n'ait <20>t<EFBFBD> donn<6E>e, une cha<68>ne vide est renvoy<6F>e </div><br>
<div>Derni<EFBFBD>re r<>vision: 8.3</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="158.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="160.htm"><b>Suivant</b></A></div>
</BODY></HTML>

32
hlp/fr/tcl/seek.htm Normal file
View File

@@ -0,0 +1,32 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>seek&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">seek - Change la position du curseur dans un canal ouvert
</div><br>
<div><b>SYNTAXE</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>seek </b><i>channelId offset </i>?<i>origin</i>?&nbsp;
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Change la position du curseur courante pour <i>channelId</i>. <i>ChannelId</i> doit <20>tre un identificateur de canal tel que renvoy<6F> par un pr<70>c<EFBFBD>dent appel de <A HREF="142.htm"><b>open</b></A> ou <A HREF="162.htm"><b>socket</b></A>. Les arguments <i>offset</i> et <i>origin</i> sp<73>cifient la position <20> laquelle la lecture ou <20>criture suivante se produira pour <i>channelId</i>. <i>Offset</i> doit <20>tre un entier (qui peut <20>tre n<>gatif) et <i>origin</i> doit <20>tre un des suivants:
<DL>
<DT><b>start</b></DT><DD>La nouvelle position sera <20> <i>offset</i> octets du d<>but du fichier ou p<>riph<70>rique sous-jacent.
</DD>
<DT><br><b>current</b>
</DT><DD>La nouvelle position sera sera <20> <i>offset</i> octets de la position courante; un <i>offset</i> n<>gatif d<>place le curseur en arri<72>re dans le fichier ou p<>riph<70>rique sous-jacent.
</DD>
<DT><br><b>end</b>
</DT><DD>La nouvelle position sera <20> <i>offset</i> octets de la fin du fichier ou p<>riph<70>rique Un <i>offset</i> n<>gatif place le curseur avant la fin de fichier, et un <i>offset</i> positif place le curseur apr<70>s la fin du fichier.
</DD>
</DL>
L'argument <i>origin</i> est par d<>faut <20> <b>start</b>.
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande vide toutes les donn<6E>es dans le tampon de sortie du canal avant que la commande retourne, m<>me si le canal est en mode non bloquant. Elle <20>carte aussi toute entr<74>e en tampon non lue. Cette commande retourne une cha<68>ne vide. Une erreur se produit si cette commande est appliqu<71>e aux canaux dont le fichier ou p<>riph<70>rique sous-jacent ne supporte pas la recherche. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Notez que les valeurs <i>offset</i> sont offsets d'octets, pas des offsets caract<63>res L'ensemble <b>seek</b> et <A HREF="171.htm"><b>tell</b></A> op<6F>re en termes d'octets, pas de caract<63>res, contrairement <20> <A HREF="151.htm"><b>read</b></A> </div><br>
<div>Derni<EFBFBD>re r<>vision: 8.1</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="159.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="161.htm"><b>Suivant</b></A></div>
</BODY></HTML>

18
hlp/fr/tcl/set.htm Normal file
View File

@@ -0,0 +1,18 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>set&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">set - Lit et ecrit des variables <br>
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>set </b><i>varName </i>?<i>value</i>?&nbsp;
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Renvoie la valeur de la variable <i>varName</i>. Si <i>value</i> est sp<73>cifi<66>, alors fixe la valeur de <i>varName</i> to <i>value</i>, cr<63>e une nouvelle variable si une n'existe pas d<>j<EFBFBD>, et retourne sa valeur. Si <i>varName</i> contient une parenth<74>se ouverte et finit avec une parenth<74>se ferm<72>e, alors elle se ref<65>re <20> un <20>l<EFBFBD>ment de tableau: les caract<63>res avant la premi<6D>re parenth<74>se ouverte sont le nom du tableau, et les caract<63>res entre le parenth<74>ses sont l'index <20> l'int<6E>rieur du tableau. Autrement <i>varName</i> se ref<65>re <20> une variable scalaire . Normalement, <i>varName</i> est non qualifi<66>e (n'inclut pas les noms des namespaces contenant), et la variable de ce nom dans le namespace&nbsp; courant est lue ou <20>crite. Si <i>varName</i> inclut des qualificateurs namespace (dans le nom du tableau si elle se ref<65>re <20> un <20>l<EFBFBD>ment de tableau), la variable dans le namespace sp<73>cifi<66> est lue ou <20>crite. </div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Si aucune fonction n'est active, alors <i>varName</i> se ref<65>re <20> une variable namespace (variable globale si le namespace&nbsp; courant est le namespace global ). Si une fonction est active, alors <i>varName</i> se ref<65>re <20> un param<61>tre ou une variable locale de la fonction <20> moins que la commande <A HREF="120.htm"><b>global</b></A> ait <20>t<EFBFBD> appel<65>e pour d<>clarer <i>varName</i> comme globale, ou <20> moins qu'une commande <A HREF="179.htm"><b>variable</b></A> a <20>t<EFBFBD> appel<65>e pour d<>clarer <i>varName</i> comme une variable namespace </div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="160.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="162.htm"><b>Suivant</b></A></div>
</BODY></HTML>

62
hlp/fr/tcl/socket.htm Normal file
View File

@@ -0,0 +1,62 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>socket&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">socket - Ouvre une connection r<>seau TCP
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><br>
<b>socket </b>?<i>options</i>? <i>host port</i> <br>
<b>socket</b> <b>-server </b><i>command</i> ?<i>options</i>? <i>port</i>&nbsp; <br>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande ouvre une socket r<>seau et retourne un identificateur de canal qui peut <20>tre employ<6F> dans les appels futurs des commandes comme <A HREF="151.htm"><b>read</b></A>, <A HREF="148.htm"><b>puts</b></A> et <A HREF="114.htm"><b>flush</b></A>. A pr<70>sent seul le protocole r<>seau TCP est support<72>; les versions futures pourront inclure un support pour des protocoles suppl<70>mentaires. La commande <b>socket</b> peut <20>tre employ<6F>e pour ouvrir soit le cot<6F> client ou serveur d'une connection, d<>pendant de si le switch <b>-server</b> est sp<73>cifi<66> <br>
</div><br>
<div><b>SOCKETS CLIENTES </b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Si l'option <b>-server</b> n'est pas sp<73>cifi<66>e, alors la partie client d'un connection est ouverte et la commande retourne un identificateur de canal qui peut <20>tre utilis<69> pour la lecture et l'<27>criture. <i>Port</i> et <i>host</i> sp<73>cifient un port pour la connection;&nbsp; il doit y avoir un serveur qui accepte des connections sur ce port <i>Port</i> est un num<75>ro de port entier et <i>host</i> est soit un nom qualifi<66> tel que <b>www.sunlabs.com</b> ou une adresse num<75>rique IP telle que <b>127.0.0.1</b>. Utilisez <i>localhost</i> pour vous r<>f<EFBFBD>rer <20> la machine sur laquelle la commande a <20>t<EFBFBD> appel<65>e. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les options suivantes peuvent <20>tre aussi pr<70>sentes avant <i>host</i> pour sp<73>cifier des information suppl<70>mentaires concernant la connection:
<DL>
<DT><b>-myaddr</b><i> addr</i>
</DT><DD><i>Addr</i> donne le nom qualifi<66> ou l'adresse IP num<75>rique de l'interface r<>seau cot<6F> client <20> utiliser pour la connection. Cette option peut <20>tre utile si la machine cliente a plusieurs interfaces r<>seau Si l'option est omise alors l'interface cot<6F> client sera choisie par le logiciel syst<73>me.
</DD>
<DT><br><b>-myport</b><i> port</i></DT><DD><i>Port</i> sp<73>cifie un num<75>ro de port entier <20> utiliser pour le cot<6F> client de la connection. Si cette option est omise, un num<75>ro de port client al<61>atoire sera choisi par le logiciel syst<73>me.
</DD>
<DT><br><b>-async</b>
</DT><DD>L'option <b>-async</b> induit une connection asynchrone pour&nbsp; la socket cliente. Ceci signifie que la socket sera cr<63>e imm<6D>diatement mais ne peut pas encore <20>tre connect<63>e au serveur, quand l'appel de <b>socket</b> retourne. Quand une <A HREF="118.htm"><b>gets</b></A> ou <A HREF="114.htm"><b>flush</b></A> est fait sur le socket avant que la tentative de connection ait r<>ussi ou <20>chou<6F>, si la socket est en mode bloquant, l'op<6F>ration attendra jusqu'a ce que la connection soit compl<70>t<EFBFBD>e ou <20>choue. Si la socket est en mode non bloquant et qu'une <A HREF="118.htm"><b>gets</b></A> ou <A HREF="114.htm"><b>flush</b></A> est fait sur la socket avant que la tentative de connection ait r<>ussi ou <20>chou<6F>, l'op<6F>ration retourne imm<6D>diatement et <A HREF="108.htm"><b>fblocked</b></A> sur le socket retourne 1.
</DD>
</DL>
</div><br>
<div><b>SOCKETS SERVEUR </b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Si l'option <b>-server</b> est sp<73>cifi<66>e alors la nouvelle socket sera un serveur pour le port indiqu<71> par <i>port</i>. Tcl acceptera automatiquement les connections sur ce port. Pour chaque connection Tcl cr<63>era un nouveau canal qui pourra <20>tre employ<6F> pour communiquer avec le client Tcl appelle alors <i>command</i> avec trois arguments suppl<70>mentaire: le nom du nouveau canal, l'adresse, en notation r<>seau, de la machine cliente, et le num<75>ro de port du client. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">L'option suppl<70>mentaire suivante peut aussi <20>tre sp<73>cifi<66>e avant <i>host</i>:
<DL>
<DT><b>-myaddr</b><i> addr</i>
</DT><DD><i>Addr</i> donne le nom qualifi<66> ou l'adresse IP num<75>rique de l'interface r<>seau du cot<6F> serveur <20> utiliser pour la connection. Cette option peut <20>tre utile si la machine serveur a plusieurs interfaces r<>seau. Si l'option est omise alors la socket serveur est attach<63>e <20> l'adresse sp<73>ciale INADDR_ANY ainsi elle peut accepter les connections sur une interface quelconque.
</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les canaux serveurs ne peuvent pas <20>tre utilis<69>s pour les entr<74>es ou sorties; leur seul usage est d'accepter de nouvelles connections client. Les canaux cr<63><72>s pour chaque connection client entrante sont ouvert pour l'entr<74>e et la sortie. Fermer le canal serveur ferme le serveur ainsi aucune nouvelle connectios ne sera accept<70>e n<>anmoins, les connections existantes ne seront pas affect<63>es. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les sockets serveurs d<>pendent du m<>canisme d'<27>v<EFBFBD>nement Tcl pour r<>agir aux nouvelles connections ouvertes. Si l'application n'entre pas dans la boucle d'<27>v<EFBFBD>nement, par exemple en appelant la commande <A HREF="180.htm"><b>vwait</b></A> ou l'appel de fonction C <A HREF="29.htm"><b>Tcl_DoOneEvent</b></A>, alors aucunes connections ne seront accept<70>es <br>
</div><br>
<div><b>OPTIONS DE CONFIGURATION </b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <A HREF="109.htm"><b>fconfigure</b></A> peut <20>tre utilis<69>e pour consulter plusieurs options de configuration en lecture seule pour les canaux socket:
<DL>
<DT><b>-error</b></DT><DD>Cette option lit le statut d'erreur courant de la socket donn<6E>e. Ceci est utile quand vous avez besoin de determiner si une op<6F>ration de connection asynchrone a r<>ussi. S'il y a eu une erreur, le message d'erreur est renvoy<6F>. Si il n'y avait pas d'erreur, une cha<68>ne vide est renvoy<6F>e.
</DD>
<DT><br><b>-sockname</b>
</DT><DD>Cette option retourne une liste de trois <20>l<EFBFBD>ments, l'adresse, le nom de machine et le num<75>ro de port pour la socket. Si le nom de machine ne peut pas calcul<75>, le second <20>l<EFBFBD>ment est identique <20> l'adresse, le premier <20>l<EFBFBD>ment de la liste.
</DD>
<DT><br><b>-peername</b>
</DT><DD>Cette option n'est pas support<72>e par les sockets serveur. Pour les sockets clients accept<70>s, cette option retourne une liste de trois <20>l<EFBFBD>ments; ce sont l'adresse, le nom de machine et le port auquels la socket peer est connect<63>e ou li<6C>e. Si le nom de machine ne peut <20>tre calcul<75>, le second <20>l<EFBFBD>ment de la liste est identique <20> l'adresse, son premier <20>l<EFBFBD>ment.</DD>
</DL>
</div>
<br>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><A HREF="114.htm">flush</A>(n), <A HREF="142.htm">open</A>(n), <A HREF="151.htm">read</A>(n)</div><br>
<div>Derni<EFBFBD>re r<>vision: 8.0</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="161.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="163.htm"><b>Suivant</b></A></div>
</BODY></HTML>

19
hlp/fr/tcl/source.htm Normal file
View File

@@ -0,0 +1,19 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">source - Evalue un fichier ou resource en tant que script Tcl <br>
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>source </b><i>fileName</i> <br>
<b>source</b> <b>-rsrc </b><i>resourceName </i>?<i>fileName</i>? <br>
<b>source</b> <b>-rsrcid </b><i>resourceId </i>?<i>fileName</i>?&nbsp; <br>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande prend le contenu du fichier ou resource sp<73>cifi<66> et le transmet <20> l'interpr<70>teur Tcl comme un texte de script. La valeur de retour de <b>source</b> est la valeur de retour de la derni<6E>re commande ex<65>cut<75>e dans le script. Si une erreur se produit pendant l'<27>valualuation du contenu du script alors la commande <b>source</b> renverra cette erreur. Si une commande <A HREF="157.htm"><b>return</b></A> est appel<65>e <20> l'int<6E>rieur du script alors le restant du fichier sera saut<75> et la commande <b>source</b> retournera normalement avec le r<>sultat de la commande<A HREF="157.htm"><b> return</b></A>. Les formes <i>-rsrc</i> et <i>-rsrcid</i> de cette commande sont seulement disponibles sur les ordinateurs Macintosh. Ces versions de la commande vous autorisent <20> sourcer un script en partant d'une resource<b> TEXT</b>. Vous pouvez sp<73>cifier quelle resource <b>TEXT</b> sourcer soit par nom soit par id. Par d<>faut Tcl recherche tout fichier resources ouvert, incluant l'application courante et toute extension C charg<72>e. Alternativement, vous pouvez sp<73>cifier le <i>fileName</i> o<> la resource <b>TEXT</b> peut <20>tre trouv<75>e. </div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="162.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="164.htm"><b>Suivant</b></A></div>
</BODY></HTML>

21
hlp/fr/tcl/split.htm Normal file
View File

@@ -0,0 +1,21 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>split&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">split <20> Divise une cha<68>ne en une liste Tcl
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>split </b><i>string </i>?<i>splitChars</i>?&nbsp; <br>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Renvoie une liste cr<63><72>e en divisant <i>string</i> <20> chaque caract<63>re qui est dans l'argument<i> </i><i>splitChars</i>. Chaque <20>l<EFBFBD>ment de la liste r<>sultat consistera des caract<63>res de <i>string</i> qui sont situ<74>s entre les instances des caract<63>res dans <i>splitChars</i>. Une liste vide sera g<>n<EFBFBD>r<EFBFBD>e si <i>string</i> contient des caract<63>res adjacents dans <i>splitChars</i>, ou si le premier ou le dernier caract<63>re de <i>string</i> est dans <i>splitChars</i>. Si <i>splitChars</i> est une cha<68>ne vide alors chaque caract<63>re de <i>string</i> devient un <20>l<EFBFBD>ment s<>par<61> de la liste r<>sultat. <i>SplitChars</i> est par d<>faut un caract<63>re espace standard. Par exemple, </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>split &quot;comp.unix.misc&quot; .</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">retourne <b>&quot;comp unix misc&quot;</b> et </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>split &quot;Hello world&quot; &#123;}</b></div>
<div>retourne <b>&quot;H e l l o &#123; } w o r l d&quot;</b> </div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="163.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="165.htm"><b>Suivant</b></A></div>
</BODY></HTML>

131
hlp/fr/tcl/string.htm Normal file
View File

@@ -0,0 +1,131 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">string - Manipulation des cha<68>nes <br>
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>string </b><i>option arg </i>?<i>arg ...?</i>&nbsp; <br>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">R<EFBFBD>alise une parmi plusieurs op<6F>rations sur les cha<68>nes, d<>pendant d' <i>option</i>. Les <i>option</i>s l<>gales (qui peuvent <20>tre abr<62>g<EFBFBD>es) sont:
<DL>
<DT><b>string bytelength </b><i>string</i>
</DT><DD>Renvoie une cha<68>ne d<>cimale donnant le nombre d'octets utilis<69>s pour repr<70>senter <i>string</i> en m<>moire. Comme UTF-8 utilise de un <20> trois octets pour repr<70>senter les caract<63>res Unicode, la longueur en octets ne sera pas la m<>me en g<>n<EFBFBD>ral que la longueur des caract<63>res. Les cas o<> un script g<>re la longueur en octets sont rares. Dans presque tous les cas, vous devrez utiliser l'op<6F>ration<b> string length</b>. Referez-vous <20> la page de manuel <A HREF="85.htm"><b>Tcl_NumUtfChars</b></A> pour plus de d<>tails sur la repr<70>sentation UTF-8.
</DD>
<DT><br><b>string compare</b> ?<b>-nocase</b>? ?<b>-length int</b>? <i>string1 string2</i>
</DT><DD>R<EFBFBD>alise une comparaison caract<63>re-par-caract<63>re des cha<68>nes <i>string1</i> et <i>string2</i>. Renvoie -1, 0, ou 1, d<>pendant de si <i>string1</i> est lexicographiquement inf<6E>rieure <20>, <20>gale <20>, ou sup<75>rieure <20> <i>string2</i>. Si <b>-length</b> est sp<73>cifi<66>e, alors seulement les <i>length</i> premiers caract<63>res sont utilis<69>s dans la comparaison. Si <b>-length</b> est n<>gatif, elle est ignor<6F>e. Si <b>-nocase</b> est sp<73>cifi<66>, alors les cha<68>nes sont compar<61>es sans tenir compte de la casse.
</DD>
<DT><br><b>string equal</b> ?<b>-nocase</b>? ?<b>-length int</b>? <i>string1 string2</i>
</DT><DD>R<EFBFBD>alise une comparaison caract<63>re-par-caract<63>re des cha<68>nes <i>string1</i> et <i>string2</i>. Renvoie 1 si <i>string1</i> et <i>string2</i> sont identiques, ou 0 sinon. Si <b>-length</b> est sp<73>cifi<66>e, alors seulement les <i>length</i> premiers caract<63>res sont utilis<69>s dans la comparaison Si <b>-length</b> est n<>gatif, elle est ignor<6F>e Si <b>-nocase</b> est sp<73>cifi<66>, alors la cha<68>nes sont compar<61>es sans tenir compte de la casse.
</DD>
<DT><br><b>string first </b><i>string1 string2</i> ?<i>startIndex</i>?
</DT><DD>Recherche dans <i>string2</i> la s<>quence de caract<63>res qui correspond exactement au caract<63>res de <i>string1</i>. Si trouv<75>, retourne l' index du premier caract<63>re de la premi<6D>re correspondance dans <i>string2</i>. Sinon, retourne -1. Si <i>startIndex</i> est sp<73>cifi<66> (dans toutes formes accept<70>es par la m<>thode <b>index</b>), alors la recherche est forc<72>e de commencer avec le caract<63>re de <i>string2</i> sp<73>cifi<66> par l'index. Par exemple,
<br>&nbsp;&nbsp;&nbsp;&nbsp;<b>string first a 0a23456789abcdef 5</b>
<br>renverra <b>10</b>, mais
<br>&nbsp;&nbsp;&nbsp;&nbsp;<b>string first a 0123456789abcdef 11</b>
<br>renverra <b>-1</b>.
</DD>
<DT><br><b>string index </b><i>string charIndex</i></DT><DD>Renvoie le <i>charIndex</i> i<>me caract<63>re de l'argument<i> string</i> Un <i>charIndex</i> de 0 corresponds au premier caract<63>re de la cha<68>ne <i>charIndex</i> peut <20>tre sp<73>cifi<66> comme suit:
<br>&nbsp;&nbsp;&nbsp;<i>integer</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Le caract<63>re sp<73>cifi<66> <20> cet index int<6E>gral <br>&nbsp;&nbsp;&nbsp;<b>end</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Le dernier caract<63>re de la cha<68>ne.
<br>&nbsp;&nbsp;<b>end-</b><i>integer</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Le dernier caract<63>re de la cha<68>ne moins l'offset entier sp<73>cifi<66> (ex. <b>end-1</b> se ref<65>re <20> &quot;c&quot; dans &quot;abcd&quot;).
<br>Si <i>charIndex</i> est inf<6E>rieur <20> 0 ou sup<75>rieur <20> ou <20>gal <20> la longueur de la cha<68>ne alors une cha<68>ne vide est renvoy<6F>e.
</DD>
<DT><br><b>string is </b><i>class</i> ?<b>-strict</b>? ?<b>-failindex </b><i>varname</i>? <i>string</i>
</DT><DD>Renvoie 1 si <i>string</i> est un membre valide de la classe de caract<63>re sp<73>cifi<66>e, retourne 0 autrement Si <b>-strict</b> est sp<73>cifi<66>, alors une cha<68>ne vide retourne 0, autrement une cha<68>ne vide renverra 1 avec toute classe. Si <b>-failindex</b> est sp<73>cifi<66>, alors si la fonction retourne 0, l'index dans la cha<68>ne o<> la classe n'est plus valide sera stock<63> dans la variable d<>sign<67>e par <i>varname</i>. <i>varname</i> ne sera pas fix<69>e si la fonction retourne 1. Les classes de caract<63>re suivantes sont reconnues (le nom de classe peut <20>tre abr<62>g<EFBFBD>):</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 150px;"><b>alnum</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N'importe quel caract<63>re alphab<61>tique ou chiffre Unicode.
<br><b>alpha</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N'importe quel caract<63>re alphab<61>tique Unicode.
<br><b>ascii</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N'importe quel caract<63>re avec une valeur inf<6E>rieure <20> &#92;u0080 (ceux qui sont dans l'intervalle ascii 7-bit).
<br><b>boolean</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N'importe quelle des formes autoris<69>es par <A HREF="42.htm"><b>Tcl_GetBoolean</b></A>.
<br><b>control</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N'importe quel caract<63>re de contr<74>le Unicode.
<br><b>digit</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N'importe quel chiffre Unicode. Notez que ceci inclut les caract<63>res en dehors de l'intervalle &#91;0-9].
<br><b>double</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N'importe quelle des formes valides pour un double en Tcl, eventuellement entour<75> d'espaces. En cas de sous/ d<>bordement, 0 est renvoy<6F> et <i>varname</i> contiendra -1.
<br><b>false</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N'importe quelle forme autoris<69>e par <A HREF="42.htm"><b>Tcl_GetBoolean</b></A> o<> la valeur est false.
<br><b>graph</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N'importe quel caract<63>re Unicode imprimable, except<70> l'espace.
<br><b>integer</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N'importe quelle des formes valides pour un entier en Tcl, eventuellement entour<75> d'espaces. En cas de sous/d<>bordement, 0 est renvoy<6F> et <i>varname</i> contiendra -1.
<br><A HREF="290.htm"><b>lower</b></A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N'importe quel caract<63>re alphab<61>tique Unicode minuscule.
<br><b>print</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N'importe quel caract<63>re Unicode imprimable, incluant l'espace.
<br><b>punct</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N'importe quel caract<63>re de ponctuation Unicode.
<br><b>space</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N'importe quel caract<63>re espace Unicode .
<br><b>true</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N'importe quelle forme autoris<69>e par <A HREF="42.htm"><b>Tcl_GetBoolean</b></A> o<> la valeur est true.
<br><b>upper</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N'importe quel caract<63>re alphab<61>tique Unicode majuscule.
<br><b>wordchar</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N'importe quel caract<63>re d'un mot Unicode. Donc tout caract<63>re alphanum<75>rique, et tout caract<63>res connecteur ou de ponctuation Unicode (ex. underscore).
<br><b>xdigit</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N'importe quel caract<63>re chiffre hexad<61>cimal (&#91;0-9A-Fa-f]).
</div>
</div>
<div ALIGN="LEFT" style="margin-left: 100px;">Dans le cas de <b>boolean</b>, <b>true</b> et <b>false</b>, si la fonction renvoie 0, alors le <i>varname</i> sera toujours fix<69> <20> 0, ceci etant d&ucirc; <20> la nature vari<72>e d'une valeur bool<6F>enne valide. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">
<DL>
<DT><br><b>string last </b><i>string1 string2</i> ?<i>startIndex</i>?
</DT><DD>Recherche dans <i>string2</i> la s<>quence de caract<63>res qui correspond exactement au caract<63>res de <i>string1</i>. Si trouv<75>, retourne l'index du premier caract<63>re de la derni<6E>re correspondance dans <i>string2</i>. S'il n'y a pas de correspondance, alors retourne -1. Si <i>startIndex</i> est sp<73>cifi<66> (dans une des formes accept<70>es par la m<>thode <b>index</b>), alors seulement les caract<63>res dans <i>string2</i> <20> ou avant le <i>startIndex</i> sp<73>cifi<66> seront pris en compte dans la recherche. Par exemple,
<br><b>string last a 0a23456789abcdef 15</b>
<br>renverra <b>10</b>, mais
<br><b>string last a 0a23456789abcdef 9</b>
<br>renverra <b>1</b>.
</DD>
<DT><br><br><b>string length </b><i>string</i>
</DT><DD>Renvoie une cha<68>ne d<>cimale donnant le nombre de caract<63>res dans <i>string</i>. Notez que ce n'est pas n<>c<EFBFBD>ssairement le m<>me que le nombre d'octets utilis<69> pour stocker la cha<68>ne.
</DD>
<DT><br><b>string map</b> ?<b>-nocase</b>? <i>charMap string</i>
</DT><DD>Remplace les caract<63>res dans <i>string</i> bas<61>s sur les paires cl<63>-valeur dans <i>charMap</i> <i>charMap</i> est une liste de <i>key value key value</i> ... comme sous la forme renvoy<6F>e par <b>array get</b>. Chaque instance d'une cl<63> dans la cha<68>ne sera remplac<61>e par sa valeur correspondante. Si <b>-nocase</b> est sp<73>cifi<66>, alors la correspondance est <20>tablie sans tenir compte de la casse. L'ensemble <i>key</i> et <i>value</i> peut <20>tre de multiples caract<63>res. Le remplacement est fait d'une mani<6E>re ordonn<6E>e, donc la cl<63> apparaissant en premier dans la liste sera v<>rifi<66>e en premier, et ainsi de suite <i>string</i> est parcourue un seule fois, donc les premiers remplacements de cl<63> n'affecteront pas les correspondances suivantes. Par exemple,
<br><b>string map &#123;abc 1 ab 2 a 3 1 0} 1abcaababcabababc</b>
<br>renverra la cha<68>ne <b>01321221</b>.
</DD>
<DT><br><b>string match</b> ?<b>-nocase</b>? <i>pattern</i> <i>string</i>
</DT><DD>Teste si <i>pattern</i> correspond <20> <i>string</i>; retourne 1 si oui, 0 sinon. Si <b>-nocase</b> est sp<73>cifi<66>, alors le mod<6F>le est compar<61> <20> la cha<68>ne sans tenir compte de la casse. Pour que deux cha<68>nes correspondent, leurs contenus doivent <20>tre identiques except<70> que les s<>quences sp<73>ciales suivantes peuvent apparaitre dans <i>pattern</i>:
<DL>
<DT><b>*</b></DT><DD>Correspond <20> toute s<>quence de caract<63>res dans <i>string</i>, incluant une cha<68>ne vide.
</DD>
<DT><b>?</b></DT><DD>Correspond <20> quelconque caract<63>re unique dans <i>string</i>.
</DD>
<DT><b>&#91;</b><i>chars</i><b>]</b></DT><DD>Correspond <20> tout caract<63>re de l'ensemble indiqu<71> par <i>chars</i>. Si une s<>quence de la forme <i>x</i><b>-</b><i>y</i> apparait dans <i>chars</i>, alors tout caract<63>re entre <i>x</i> et <i>y</i>, inclus, correspondra. Quand utilis<69> avec <b>-nocase</b>, les points extr<74>mes de l'intervalle sont convertis en minuscule en premier. En consid<69>rant que &#123;&#91;A-z]} correspond <20> '_' quand la correspondance est sensible <20> la casse ('_' est entre 'Z' et 'a'), avec <b>-nocase</b> c'est consider<65> comme &#123;&#91;A-Za-z]} (et probablement ce qui etait exprim<69> pr<70>cedemment).
</DD>
<DT><b>&#92;</b><i>x</i></DT><DD>Correspond au caract<63>re unique <i>x</i>. Ceci fournit un moyen d'<27>viter l'interpr<70>tation sp<73>ciale des caract<63>res <b>*?&#91;]&#92;</b> dans <i>pattern</i>.
</DD>
</DL>
</DD>
<DT><br><b>string range </b><i>string first last</i>
</DT><DD>Renvoie un intervalle de caract<63>res cons<6E>cutifs de <i>string</i>, en commen<65>ant par le caract<63>re dont l'index est <i>first</i> et finissant par le caract<63>re dont l'index est <i>last</i>. Un index de 0 se r<>f<EFBFBD>re au premier caract<63>re de la cha<68>ne. <i>first</i> et <i>last</i> peuvent <20>tre sp<73>cifi<66>s comme dans la m<>thode <b>index</b>. Si <i>first</i> est inf<6E>rieur <20> z<>ro alors il est trait<69> comme si c'<27>tait z<>ro, et si <i>last</i> est sup<75>rieur <20> ou <20>gal <20> longueur de la cha<68>ne alors il est trait<69> comme si c'<27>tait <b>end</b>. Si <i>first</i> est sup<75>rieur <20> <i>last</i> alors une cha<68>ne vide est renvoy<6F>e.
</DD>
<DT><br><b>string repeat </b><i>string count</i>
</DT><DD>Renvoie <i>string</i> r<>p<EFBFBD>t<EFBFBD>e <i>count</i> fois.
</DD>
<DT><br><b>string replace </b><i>string first last</i> ?<i>newstring</i>?
</DT><DD>Supprime un intervalle de caract<63>res consecutifs de <i>string</i>, commen<65>ant avec le caract<63>re dont l'index est <i>first</i> et finissant avec le caract<63>re dont l'index est <i>last.</i> Un index de 0 se r<>f<EFBFBD>re au premier caract<63>re de la cha<68>ne <i>First</i> et <i>last</i> peuvent <20>tre sp<73>cifi<66>s comme dans la m<>thode <b>index</b>. Si <i>newstring</i> est sp<73>cifi<66>e, alors elle est plac<61>e dans l'intervalle des caract<63>res supprim<69>s. Si <i>first</i> est inf<6E>rieur <20> z<>ro alors il est trait<69> comme si c'<27>tait z<>ro, et si <i>last</i> est sup<75>rieur ou <20>gal <20> la longueur de la cha<68>ne alors il est trait<69> comme si c'<27>tait <b>end</b>. Si <i>first</i> est sup<75>rieur <20> <i>last</i> ou la longueur de la cha<68>ne initiale, ou <i>last</i> inf<6E>rieur <20> 0, alors la cha<68>ne initiale est renvoy<6F> inchang<6E>e.
</DD>
<DT><br><b>string tolower </b><i>string</i> ?<i>first</i>? ?<i>last</i>?
</DT><DD>Renvoie une valeur <20>gale <20> <i>string</i> except<70> que toute lettre en majuscule (ou titre) aura <20>t<EFBFBD> convertie en minuscule. Si <i>first</i> est sp<73>cifi<66>, il se r<>f<EFBFBD>re <20> l'index du premier caract<63>re dans la cha<68>ne ou commencer les modifications. Si <i>last</i> est sp<73>cifi<66>, il se r<>f<EFBFBD>re <20> l'index du caract<63>re dans la cha<68>ne ou arr<72>ter (inclus) <i>first</i> et <i>last</i> peuvent <20>tre sp<73>cifi<66>s comme dans la m<>thode <b>index</b>.
</DD>
<DT><br><b>string totitle </b><i>string</i> ?<i>first</i>? ?<i>last</i>?
</DT><DD>Renvoie une valeur <20>gale <20> <i>string</i> except<70> que le premier caract<63>re de <i>string</i> est converti en sa variante Unicode titre (ou majuscule s'il n'y a pas de variante titre) et le reste de la cha<68>ne est converti en minuscule. Si <i>first</i> est sp<73>cifi<66>, il se r<>f<EFBFBD>re <20> l'index du premier caract<63>re dans la cha<68>ne ou commencer les modifications. Si <i>last</i> est sp<73>cifi<66>, il se r<>f<EFBFBD>re <20> l'index du caract<63>re dans la cha<68>ne ou arr<72>ter (inclus). <i>first</i> et <i>last</i> peuvent <20>tre sp<73>cifi<66>s comme dans la m<>thode <b>index</b>.
</DD>
<DT><br><b>string toupper </b><i>string</i> ?<i>first</i>? ?<i>last</i>?
</DT><DD>Renvoie une valeur <20>gale <20> <i>string</i> except<70> que toute lettre minuscule (ou titre) aura <20>t<EFBFBD> convertie en majuscule. Si <i>first</i> est sp<73>cifi<66>, il se r<>f<EFBFBD>re <20> l'index du premier caract<63>re dans la cha<68>ne ou commencer les modifications. Si <i>last</i> est sp<73>cifi<66>, il se r<>f<EFBFBD>re <20> l'index du caract<63>re dans la cha<68>ne ou arr<72>ter (inclus). <i>first</i> et <i>last</i> peuvent <20>tre sp<73>cifi<66>s comme dans la m<>thode <b>index</b>.
</DD>
<DT><br><b>string trim </b><i>string</i> ?<i>chars</i>?
</DT><DD>Renvoie une valeur <20>gale <20> <i>string</i> except<70> que tous les caract<63>res en t<>te ou <20> la fin de l'ensemble indiqu<71> par <i>chars</i> sont enlev<65>s. Si <i>chars</i> n'est pas sp<73>cifi<66> alors tous les espaces sont enlev<65>s (les espaces, tabulations, saut de lignes, et retour chariot).
</DD>
<DT><br><b>string trimleft </b><i>string</i> ?<i>chars</i>?
</DT><DD>Renvoie une valeur <20>gale <20> <i>string</i> except<70> que tous les caract<63>res en t<>te de l'ensemble indiqu<71> par <i>chars</i> sont enlev<65>s. Si <i>chars</i> n'est pas sp<73>cifi<66> alors tous les espaces sont enlev<65>s (les espaces, tabulations, saut de lignes, et retour chariot).
</DD>
<DT><br><b>string trimright </b><i>string</i> ?<i>chars</i>?
</DT><DD>Renvoie une valeur <20>gale <20> <i>string</i> except<70> que tous les caract<63>res <20> la fin de l'ensemble indiqu<71> par <i>chars</i> sont enlev<65>s. Si <i>chars</i> n'est pas sp<73>cifi<66> alors tous les espaces sont enlev<65>s (les espaces, tabulations, saut de lignes, et retour chariot).
</DD>
<DT><br><b>string wordend </b><i>string charIndex</i>
</DT><DD>Renvoie l'index du caract<63>re juste apr<70>s le dernier dans le mot contenant le caract<63>re <i>charIndex</i> de <i>string</i>. <i>charIndex</i> peut <20>tre sp<73>cifi<66> comme dans la m<>thode <b>index</b>. Un mot est consider<65> comme tout intervalle contigu de caract<63>res alphanumeriques (lettres Unicode ou chiffres d<>cimaux ) ou underscore (connecteur de ponctuation Unicode), ou tout caract<63>re unique autre que ceux-ci.
</DD>
<DT><br><b>string wordstart </b><i>string charIndex</i>
</DT><DD>Renvoie l'index du premier caract<63>re dans le mot contenant le caract<63>re <i>charIndex</i> de <i>string</i> <i>charIndex</i> peut <20>tre sp<73>cifi<66> comme dans la m<>thode <b>index</b>. Un mot est consider<65> comme tout intervalle contigu de caract<63>res alphanumeriques (lettres Unicode ou chiffres d<>cimaux ) ou underscore (connecteur de ponctuation Unicode), ou tout caract<63>re unique autre que ceux-ci.
</DD>
</DL>
</div><br>
<div>Derni<EFBFBD>re r<>vision: 8.1</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="164.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="166.htm"><b>Suivant</b></A></div>
</BODY></HTML>

23
hlp/fr/tcl/subst.htm Normal file
View File

@@ -0,0 +1,23 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>subst&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">subst - R<>alise des substitution backslash, de commandes, et de variables <br>
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>subst </b>?<b>-nobackslashes</b>? ?<b>-nocommands</b>? ?<b>-novariables</b>? <i>string</i>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande effectue des substitution de variables, substitution de commandes, et substitutions backslash sur son argument <i>string</i> et retourne le r<>sultat substitu<74>. Les substitutions sont effectu<74>es exactement de la m<>me fa<66>on que pour la commande Tcl. Comme r<>sultat, l'argument <i>string</i> est actuellement substitu<74> deux fois, une fois par l'analyseur Tcl de fa<66>on usuelle pour la commande Tcl, et de nouveau par la commande<i> subst</i>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si un des commutateurs&nbsp; <b>-nobackslashes</b>, <b>-nocommands</b>, ou <b>-novariables</b> est sp<73>cifi<66>, alors les substitutions correspondantes ne sont pas effectu<74>es. Par exemple, si <b>-nocommands</b> est sp<73>cifi<66>, aucune substitution de commandes n'est effectu<74>e:&nbsp; les crochets ouvert et fermants sont trait<69>s comme des caract<63>res ordinaires sans interpr<70>tation sp<73>ciale. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Note: quand elle effectue ses substitutions, <i>subst</i> ne traite pas de fa<66>on sp<73>ciale les double guillemets ou les accolades Par exemple, le script </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>set a 44<br>
</b><b>subst &#123;xyz &#123;&#36;a}}</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">retourne &quot;<b>xyz &#123;44}</b>&quot;, not &quot;<b>xyz &#123;&#36;a}</b>&quot; </div><br>
<div>Derni<EFBFBD>re r<>vision: 7.4</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="165.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="167.htm"><b>Suivant</b></A></div>
</BODY></HTML>

61
hlp/fr/tcl/switch.htm Normal file
View File

@@ -0,0 +1,61 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>switch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">switch - Evalue un parmi plusieurs scripts, d<>pendant d'une valeur donn<6E>e
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>switch </b>?<i>options</i>?<i> string pattern body </i>?<i>pattern body </i>...? <br>
<b>switch </b>?<i>options</i>?<i> string </i>&#123;<i>pattern body </i>?<i>pattern body </i>...?}&nbsp; <br>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>switch</b> compare son argument <i>string</i> <20> chacun des arguments <i>pattern</i> dans l'ordre. D<>s qu'elle trouve un <i>pattern</i> qui correspond <20> <i>string</i> elle <20>value les argument <i>body</i> suivants en les transmettant r<>cursivement <20> l'interpr<70>teur Tcl et retourne le r<>sultat de cette <20>valuation . Si le dernier argument <i>pattern</i> est <b>default</b> alors il correspond <20> tout. Si aucun argument <i>pattern</i> correspond <20> <i>string</i> et qu'aucun d<>faut n'est donn<6E>, alors <b>switch</b> retourne une cha<68>ne vide. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si les arguments initiaux de <b>switch</b> commencent avec <b>-</b> alors ils sont trait<69>s comme des options Les options suivantes sont couramment support<72>es:
<DL>
<DT><b>-exact</b></DT><DD>Utilise la correspondance exacte pendant la comparaison de <i>string</i> <20> un mod<6F>le C'est le d<>faut.
</DD>
<DT><br><b>-glob</b>
</DT><DD>Pendant la comparaison de <i>string</i> aux mod<6F>les, utilise une correspondance glob-style (ex. la m<>me qu'impl<70>ment<6E>e par la commande<b> string match</b>).
</DD>
<DT><br><b>-regexp</b>
</DT><DD>Pendant la comparaison de <i>string</i> aux mod<6F>les, utilise la correspondance expression rationelle (comme d<>crit dans la page de r<>f<EFBFBD>rence<A HREF="150.htm"><b> re_syntax</b></A>).
</DD>
<DT><br><b>--</b>
</DT><DD>Marque la fin des options L'argument suivant sera trait<69> comme <i>string</i> m<>me s'il commence avec un <b>-</b>.
</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Deux syntaxes sont fournie pour les arguments<i> pattern</i> et <i>body</i>. Le premier utilise un argument s<>par<61> pour chacun des mod<6F>les et commandes; cette forme est pratique si des substitutions sont d<>sir<69>es sur un mod<6F>le ou une commande. La seconde forme place tous les mod<6F>les et les commandes ensemble dans un seul argument; l'argument doit avoir une structure de liste correcte, avec les <20>l<EFBFBD>ments de la liste <20>tant les mod<6F>les et les commandes. La seconde forme facilite la construction de commandes switch multi-ligne, puisque les accolades entourant la liste rendent inutile l'inclusion d'un antislash <20> la fin de chaque ligne. Comme les arguments <i>pattern</i> sont dans accolades dans la seconde forme, aucunes substitutions de commande ou de variable ne sont effectu<74>e sur ceux-ci; cela rend le comportement de la seconde forme diff<66>rent de la premi<6D>re forme dans certains cas. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si un <i>body</i> est sp<73>cifi<66> comme &quot;<b>-</b>&quot; cela signifie que le <i>body</i> du mod<6F>le suivant doit <20>tre aussi utilis<69> comme le corps pour ce mod<6F>le (si le mod<6F>le suivant a aussi un corps de &quot;<b>-</b>&quot; alors le corps qui est utilis<69> apr<70>s, et ainsi de suite). Cette fonctionnalit<69> rend possible de partager une seul <i>body</i> entre plusieurs mod<6F>les. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Attention <20> l'emplacement des commentaires dans les commandes<b> switch</b> Ils devront <20>tre plac<61>s seulement <b>dans</b> l'ex<65>cution du corps d'un des mod<6F>les, et pas m<>lang<6E>s avec les mod<6F>les. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Voici quelques exemples de commandes<b> switch</b>: </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>switch&nbsp;&nbsp; abc&nbsp;&nbsp; a&nbsp;&nbsp; -&nbsp;&nbsp; b&nbsp;&nbsp; &#123;format 1}&nbsp;&nbsp; abc&nbsp;&nbsp; &#123;format 2}&nbsp;&nbsp; default&nbsp;&nbsp; &#123;format 3}</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">renverra <b>2</b>,&nbsp; </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>switch&nbsp;&nbsp; -</b><A HREF="152.htm"><b>regexp</b></A><b>&nbsp;&nbsp; aaab &#123;<br>
</b><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^a.*b&#36;&nbsp;&nbsp; -<br>
</b><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp; &#123;format 1}<br>
</b><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b><A HREF="129.htm"><b>a*</b></A><b>&nbsp;&nbsp; &#123;format 2.htm}<br>
</b><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;&nbsp; &#123;format 3}<br>
</b><b>}</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">renverra <b>1</b>, et </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>switch&nbsp;&nbsp; xyz &#123;<br>
</b><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a<br>
</b><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-<br>
</b><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b<br>
</b><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br>
</b><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Placement Correct du Commentaire<br>
</b><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;format 1<br>
</b><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
</b><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b><A HREF="129.htm"><b>a*</b></A><b><br>
</b><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;format 2}<br>
</b><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default<br>
</b><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;format 3}<br>
</b><b>}</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">renverra <b>3</b> </div><br>
<div>Derni<EFBFBD>re r<>vision: 7.0</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="166.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="168.htm"><b>Suivant</b></A></div>
</BODY></HTML>

110
hlp/fr/tcl/tcl.toc.html Normal file
View File

@@ -0,0 +1,110 @@
<TITLE>Tk Commands</TITLE>
<a href="http.htm">Http</a><br>
<a href="continue.htm">continue</a><br>
<a href="history.htm">history</a><br>
<a href="pid.htm">pid</a><br>
<a href="switch.htm">switch</a><br>
<a href="safe.htm">Safe Base</a><br>
<a href="dde.htm">dde</a><br>
<a href="if.htm">if</a><br>
<a href="packagens.htm">pkg::create</a><br>
<a href="library.htm">tcl_endOfWord</a><br>
<a href="Tcl.htm">Tcl</a><br>
<a href="encoding.htm">encoding</a><br>
<a href="incr.htm">incr</a><br>
<a href="pkgMkIndex.htm">pkg_mkIndex</a><br>
<a href="library.htm">tcl_findLibrary</a><br>
<a href="tcltest.htm">Tcltest</a><br>
<a href="eof.htm">eof</a><br>
<a href="info.htm">info</a><br>
<a href="proc.htm">proc</a><br>
<a href="library.htm">tcl_startOfNextWord</a><br>
<a href="after.htm">after</a><br>
<a href="error.htm">error</a><br>
<a href="interp.htm">interp</a><br>
<a href="puts.htm">puts</a><br>
<a href="library.htm">tcl_startOfPreviousWord</a><br>
<a href="append.htm">append</a><br>
<a href="eval.htm">eval</a><br>
<a href="join.htm">join</a><br>
<a href="pwd.htm">pwd</a><br>
<a href="library.htm">tcl_wordBreakAfter</a><br>
<a href="array.htm">array</a><br>
<a href="exec.htm">exec</a><br>
<a href="lappend.htm">lappend</a><br>
<a href="re_syntax.htm">re_syntax</a><br>
<a href="library.htm">tcl_wordBreakBefore</a><br>
<a href="library.htm">auto_execok</a><br>
<a href="exit.htm">exit</a><br>
<a href="lindex.htm">lindex</a><br>
<a href="read.htm">read</a><br>
<a href="tclvars.htm">tclvars</a><br>
<a href="library.htm">auto_import</a><br>
<a href="expr.htm">expr</a><br>
<a href="linsert.htm">linsert</a><br>
<a href="regexp.htm">regexp</a><br>
<a href="tell.htm">tell</a><br>
<a href="library.htm">auto_load</a><br>
<a href="fblocked.htm">fblocked</a><br>
<a href="list.htm">list</a><br>
<a href="registry.htm">registry</a><br>
<a href="time.htm">time</a><br>
<a href="library.htm">auto_mkindex</a><br>
<a href="fconfigure.htm">fconfigure</a><br>
<a href="llength.htm">llength</a><br>
<a href="regsub.htm">regsub</a><br>
<a href="trace.htm">trace</a><br>
<a href="library.htm">auto_mkindex_old</a><br>
<a href="fcopy.htm">fcopy</a><br>
<a href="load.htm">load</a><br>
<a href="rename.htm">rename</a><br>
<a href="unknown.htm">unknown</a><br>
<a href="library.htm">auto_qualify</a><br>
<a href="file.htm">file</a><br>
<a href="lrange.htm">lrange</a><br>
<a href="resource.htm">resource</a><br>
<a href="unset.htm">unset</a><br>
<a href="library.htm">auto_reset</a><br>
<a href="fileevent.htm">fileevent</a><br>
<a href="lreplace.htm">lreplace</a><br>
<a href="return.htm">return</a><br>
<a href="update.htm">update</a><br>
<a href="bgerror.htm">bgerror</a><br>
<a href="filename.htm">filename</a><br>
<a href="lsearch.htm">lsearch</a><br>
<a href="scan.htm">scan</a><br>
<a href="uplevel.htm">uplevel</a><br>
<a href="binary.htm">binary</a><br>
<a href="flush.htm">flush</a><br>
<a href="lsort.htm">lsort</a><br>
<a href="seek.htm">seek</a><br>
<a href="upvar.htm">upvar</a><br>
<a href="break.htm">break</a><br>
<a href="for.htm">for</a><br>
<a href="memory.htm">memory</a><br>
<a href="set.htm">set</a><br>
<a href="variable.htm">variable</a><br>
<a href="catch.htm">catch</a><br>
<a href="foreach.htm">foreach</a><br>
<a href="msgcat.htm">msgcat</a><br>
<a href="socket.htm">socket</a><br>
<a href="vwait.htm">vwait</a><br>
<a href="cd.htm">cd</a><br>
<a href="format.htm">format</a><br>
<a href="namespace.htm">namespace</a><br>
<a href="source.htm">source</a><br>
<a href="while.htm">while</a><br>
<a href="clock.htm">clock</a><br>
<a href="gets.htm">gets</a><br>
<a href="open.htm">open</a><br>
<a href="split.htm">split</a><br>
<a href="close.htm">close</a><br>
<a href="glob.htm">glob</a><br>
<a href="package.htm">package</a><br>
<a href="string.htm">string</a><br>
<a href="concat.htm">concat</a><br>
<a href="global.htm">global</a><br>
<a href="library.htm">parray</a><br>
<a href="subst.htm">subst</a><br>

48
hlp/fr/tcl/tclsh.htm Normal file
View File

@@ -0,0 +1,48 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>tclsh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tcl Applications</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">tclsh - Simple shell contenant un Interpr<70>teur Tcl
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>tclsh</b> ?<i>fileName arg arg ...</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>Tclsh</b> est une application shell-like qui lit les commandes Tcl <20> partir de son entr<74>e standard ou <20> partir d'un fichier et les <20>value. Si appel<65>e sans arguments alors s'ex<65>cute interactivement, en lisant les commandes Tcl de l'entr<74>e standard et affichant les r<>sultats et les message d'erreurs sur la sortie standard. Elle s'ex<65>cute jusqu'<27> ce que la commande <A HREF="106.htm"><b>exit</b></A> soit appel<65>e ou jusqu'<27> ce que la fin-de-fichier soit atteinte sur son entr<74>e standard. S'il existe un fichier <b>.tclshrc</b> (ou <b>tclshrc.tcl</b> sur les plateformes Windows) dans le r<>pertoire home de l'utilisateur, <b>tclsh</b> <20>value le fichier comme script Tcl juste avant de lire la premi<6D>re commande sur l'entr<74>e standard
</div><br>
<div><b>FICHIERS SCRIPT </b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Si <b>tclsh</b> est appel<65> avec des arguments alors le premier argument est le nom d'un script et tous les arguments suppl<70>mentaires sont rendus disponibles au script comme variables (voir ci-dessous). Au lieu de lire les commandes <20> partir de l'entr<74>e standard <b>tclsh</b> lira les commandes Tcl du fichier indiqu<71>;&nbsp; <b>tclsh</b> finira quand il atteint la fin du fichier. Il n'y a pas d'<27>valuation automatique de <b>.tclshrc</b> dans ce cas, mais le script peut toujours le <A HREF="163.htm"><b>source</b></A>r si d<>sir<69>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si vous cr<63>er un script Tcl dans un fichier dont premi<6D>re ligne est </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>#!/usr/local/bin/tclsh</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">alors vous pouvez appeller le script directement <20> partir de votre shell si vous rendez le fichier ex<65>cutable. Ceci suppose qui <b>tclsh</b> aura <20>t<EFBFBD> install<6C> dans l'emplacement par d<>faut dans /usr/local/bin;&nbsp; s'il est install<6C> ailleurs vous aurez <20> modifier la ligne plus haut. De nombreux syst<73>mes UNIX n'autorisent pas la ligne <b>#!</b> <20> d<>passer 30 caract<63>res, donc soyez s&ucirc;rs que l'ex<65>cutable <b>tclsh</b> peut <20>tre acc<63>d<EFBFBD> avec un nom de chemin court. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Une meilleure approche est de commencer vos fichiers script avec les trois lignes suivantes: </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>#!/bin/sh</b> <b><br>
</b><b># la ligne suivante lance tclsh&#92;<br>
</b><b>exec tclsh &quot;&#36;0&quot; &quot;&#36;@&quot;</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette approche a trois avantages sur l'approche pr<70>cedente. Premi<6D>rement, l'emplacement du binaire <b>tclsh</b> n'a pas d'<27>tre cod<6F> en dur dans le script: il peut <20>tre n'importe o<> dans votre chemin de recherche shell. Deuxi<78>mement, elle resout la limite de 30 caract<63>res pour le nom de chemin dans la pr<70>cedente approche. Troisi<73>mement, cette approche fonctionnera m<>me si <b>tclsh</b> est lui-m<>me un shell script (c'est fait sur quelques syst<73>mes de mani<6E>re <20> g<>rer de multiples architectures ou syst<73>mes d'exploitations: le script <b>tclsh</b> selectionne un parmi plusieurs binaire <20> ex<65>cuter) Les trois lignes mettent en cause <20> la fois <b>sh</b> et <b>tclsh</b> pour traiter le script, mais <A HREF="105.htm"><b>exec</b></A> est seulement ex<65>cut<75> par <b>sh</b>. <b>sh</b> traite le script en premier; il traite la seconde ligne comme un commentaire et ex<65>cute la troisi<73>me ligne. L'instruction <A HREF="105.htm"><b>exec</b></A> provoque l'arr<72>t du traitement par le shell et le d<>marrage de <b>tclsh</b> pour traiter le script entier. Quand <b>tclsh</b> d<>marre, it traite les trois lignes comme des commentaires, car le backslash <20> la fin de la second ligne cause l'interpr<70>tation de la troisi<73>me ligne comme suite du commentaire sur la seconde ligne <br>
</div><br>
<div><b>VARIABLES</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>Tclsh</b> fixe les variables Tcl suivantes:
<DL>
<DT><b>argc</b></DT><DD>Contient un compte du nombre des arguments <i>arg</i> (0 si aucun), non inclus le nom du fichier script.
</DD>
<DT><br><b>argv</b>
</DT><DD>Contient une liste Tcl dont les <20>l<EFBFBD>ments sont les arguments<i> arg</i>, dans l'ordre, ou une cha<68>ne vide si il n'y a pas d'arguments<i> arg</i>.
</DD>
<DT><br><b>argv0</b>
</DT><DD>Contient <i>fileName</i> si il a <20>t<EFBFBD> sp<73>cifi<66>. Autrement, contient le nom par lequel <b>tclsh</b> a <20>t<EFBFBD> appel<65>.
</DD>
<DT><br><b>tcl_interactive</b>
</DT><DD>Contient 1 si <b>tclsh</b> s'ex<65>cute interactivement (aucun <i>fileName</i> n'a <20>t<EFBFBD> sp<73>cifi<66> et l'entr<74>e standard est un p<>riph<70>rique terminal-like), 0 autrement.
</DD>
</DL>
</div><br>
<div><b>PROMPTS</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Quand <b>tclsh</b> est appel<65> interactivement il attend normalement chaque commande avec &quot;<b>%</b>&quot; Vous pouvez changer le prompt en fixant les variables <b>tcl_prompt1</b> et <b>tcl_prompt2</b> Si la variable <b>tcl_prompt1</b> existe alors elle doit consister en un script Tcl pour produire un prompt;&nbsp; au lieu de produire un prompt <b>tclsh</b> evaluera le script dans <b>tcl_prompt1</b>. La variable <b>tcl_prompt2</b> est utilis<69>e d'une mani<6E>re analogue quand un saut de ligne est tap<61> mais que la commande courante n'est pas encore compl<70>te; si <b>tcl_prompt2</b> n'est pas fix<69> alors aucun prompt ne s'affiche pour les commandes incompl<70>tes </div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="167.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="169.htm"><b>Suivant</b></A></div>
</BODY></HTML>

309
hlp/fr/tcl/tcltest.html Normal file
View File

@@ -0,0 +1,309 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>Tcltest&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Tcltest -&nbsp; Support du syst<73>me de test et utilitaires<br>
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>package require tcltest ?1.0?</b> <br>
<b>::tcltest::test </b><i>name desc ?constraint? script expectedAnswer</i> <br>
<b>::tcltest::cleanupTests </b><i>?runningMultipleTests?</i> <br>
<b>::tcltest::getMatchingTestFiles</b> <br>
<b>::tcltest::loadTestedCommands</b> <br>
<b>::tcltest::makeFile </b><i>contents name</i> <br>
<b>::tcltest::removeFile </b><i>name</i> <br>
<b>::tcltest::makeDirectory </b><i>name</i> <br>
<b>::tcltest::removeDirectory </b><i>name</i> <br>
<b>::tcltest::viewFile </b><i>name</i> <br>
<b>::tcltest::normalizeMsg </b><i>msg</i> <br>
<b>::tcltest::bytestring </b><i>string</i> <br>
<b>::tcltest::saveState</b> <br>
<b>::tcltest::restoreState</b> <br>
<b>::tcltest::threadReap</b> <br>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Le package <b>tcltest</b> fournit <20> l'utilisateur des utilitaires pour <20>crire et faire fonctionner des tests dans le syst<73>me de test Tcl. Il peut <20>galement <20>tre utilis<69> pour cr<63>er un syst<73>me de test personnalis<69> pour une extension.</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Le syst<73>me de test Tcl comporte de multiples fichiers .test, chacun d'entre eux comprenant plusieurs cas de test. Chaque test comporte un appel <20> la commande test, qui indique le nom du test, une description br<62>ve, les contraintes qui s'appliquent au cas test<73>, le script <20> ex<65>cuter, et les r<>sultats attendus. Voir les sections <i>&quot;Tests&quot;</i>, <i>&quot;Contraintes de test&quot;</i>, et <i>&quot; Faire </i><i>fonctionner les fichiers de test &quot;</i> pour plus d'informations.
<br>Il est <20>galement possible d'enrichir ce syst<73>me de test pour mettre en place votre propre syst<73>me de test sur mesure. Pour plus d'information, voir la section <i>&quot;Personnaliser le syst<73>me </i><i>de test&quot;</i>.
<br>Cette approche pour tester a <20>t<EFBFBD> con<6F>ue et initialement mise en place par Mary Ann May-Pumphrey de Sun Microsystems au d<>but des ann<6E>es 1990. Nous lui adressons de sinc<6E>res remerciements pour avoir fait don de son travail au profit de la version publique de Tcl.</div>
<br><div><b>COMMANDES</b></div>
<br><div ALIGN="LEFT" style="margin-left: 51px;">
<DL>
<DT> <b>::tcltest::test</b> <i>name desc ?constraints? script expectedAnswer</i></DT><DD>La commande <b>::tcltest::test</b> lance <i>script</i> et compare son r<>sultat <20> <i>expectedAnswer</i>. Elle imprime un message d'erreur si les deux ne correspondent pas. Si<b>::tcltest::verbose</b> contient &quot;p&quot; ou &quot;s&quot;, elle imprime aussi un message si le test r<>ussit (p: <i>passed</i>) ou a <20>t<EFBFBD> omis (s: <i>skipped</i>). Le test sera omis s'il ne correspond pas <20> la variable <b>::tcltest::match</b>, s'il correspond <20> l'un des <20>l<EFBFBD>ments de <b>::tcltest::skip</b>, ou si l'un des <20>l<EFBFBD>ments de <i>constraints</i> s'av<61>re ne pas <20>tre vrai. La commande <b>::tcltest::test</b> n'a pas de valeur de retour d<>finie. Voir la section <i>&quot;Ecrire un nouveau </i><i>test&quot;</i> pour plus d'informations sur cette commande.</DD>
<DT><b>::tcltest::cleanupTests</b> <i>?runningMultipleTests?</i></DT><DD>Cette commande doit normalement <20>tre appel<65>e <20> la fin d'un fichier de test. Elle imprime des statistiques au sujet des tests <20>x<EFBFBD>cut<75>s et supprime les fichiers cr<63><72>s par <b>::tcltest::makeDirectory</b> et <b>::tcltest::makeFile</b>. Les noms des fichiers et r<>pertoires cr<63><72>s en dehors de <b>::tcltest::makeFile</b> et <b>::tcltest::makeDirectory</b>, et qui n'ont jamais <20>t<EFBFBD> d<>truits, sont affich<63>s dans <b>::tcltest::outputChannel</b>. Cette commande restaure <20>galement l'environnement d'<27>x<EFBFBD>cution initial, tel que d<>crit par le tableau ::env.<i>calledFromAll</i> doit normalement <20>tre indiqu<71> quand <b>::tcltest::cleanupTests</b> est appel<65> depuis un fichier &quot;all.tcl&quot;. Des fichiers Tcl sont g<>n<EFBFBD>ralement utilis<69>s pour ex<65>cuter des tests multiples. Pour plus d'information sur comment ex<65>cuter des tests multiples, voir la section <i>&quot;Ex<EFBFBD>cuter des fichiers de test&quot;</i>. Cette proc<6F>dure n'a pas de valeur de retour d<>finie. </DD>
<DT><b>::tcltest::getMatchingTestFiles</b></DT><DD>Cette commande est utilis<69>e quand vous voulez ex<65>cuter plusieurs fichiers de test. Elle retourne la liste des tests qui doivent <20>tre sourc<72>s dans un fichier &quot;all.tcl&quot;. Voir la section <i>&quot;Ex<EFBFBD>cuter des fichiers de test&quot;</i> pour plus d'informations.</DD>
<DT><b>::tcltest::loadTestedCommands</b></DT><DD>Cette commande utilise le script indiqu<71> par l'option <i>-load</i> ou <i>-loadfile</i> pour charger les commandes test<73>es par le syst<73>me de test. Autoris<69>e <20> <20>tre vide, dans le cas o<>; les commandes test<73>es sont accumul<75>es dans&nbsp; l'interpr<70>teur qui <20>x<EFBFBD>cute le syst<73>me de test.</DD>
<DT><b>::tcltest::makeFile</b> <i>contents name</i><br></DT><DD>Cr<EFBFBD>e un fichier qui sera automatiquement supprim<69> par <b>::tcltest::cleanupTests </b><EFBFBD> la fin du fichier de test. Cette proc<6F>dure n'a pas de valeur de retour d<>finie.</DD>
<DT><b>::tcltest::removeFile</b> <i>name</i><br></DT><DD>Force la suppression du fichier r<>f<EFBFBD>renc<6E> par <i>name</i>. Ce nom de fichier doit <20>tre indiqu<71> en r<>f<EFBFBD>rence au <i>::tcltest::temporaryDirectory</i>. Cette proc<6F>dure n'a pas de valeur de retour d<>finie.</DD>
<DT><b>::tcltest::makeDirectory</b> <i>name</i></DT><DD>Cr<EFBFBD>e un r<>pertoire <i>name</i>, qui sera automatiquement supprim<69> par <b>::tcltest::cleanupTests </b><EFBFBD> la fin du fichier de test. Cette proc<6F>dure n'a pas de valeur de retour d<>finie.</DD>
<DT><b>::tcltest::removeDirectory</b> <i>name</i><br></DT><DD>Force la suppression du fichier r<>f<EFBFBD>renc<6E> par <i>name</i>. Cette proc<6F>dure n'a pas de valeur de retour d<>finie.</DD>
<DT><b>::tcltest::viewFile</b> <i>file</i><br></DT><DD>Renvoie le contenu de <i>file</i>.</DD>
<DT><b>::tcltest::normalizeMsg</b> <i>msg</i><br></DT><DD>Retire les fins de lignes superflues de <i>msg</i>. </DD>
<DT><b>::tcltest::bytestring</b> <i>string</i><br></DT><DD>Construit une cha<68>ne qui se compose de la suite des octets demand<6E>s, et non la cha<68>ne form<72>e de caract<63>res UTF-8 corrects, <20> partir de la valeur de <i>string</i>. Cela permet au testeur de cr<63>er des cha<68>nes d<>normalis<69>es ou impropement form<72>es, pour les passer <20> des proc<6F>dures C qui sont suppos<6F>es accepter des cha<68>nes comprenant des NULL, et confirmer que le r<>sultat sous forme de cha<68>ne correspond bien <20> la suite d'octets pr<70>vue.</DD>
<DT><b>::tcltest::saveState</b><br></DT><DD>et <b>::tcltest::restoreState</b> sauvent et restaurent les proc<6F>dures et les variables globales. Un fichier de test peut contenir des appels <20> <b>::tcltest::saveState</b> et <b>::tcltest:restoreState</b> s'il cr<63>e des variables globales ou des proc<6F>dures.</DD>
<DT><b>::tcltest::threadReap</b><br></DT><DD><b>::tcltest::threadReap</b> fonctionne seulement si <i>testthread</i> est d<>fini, g<>n<EFBFBD>ralement en compilant tcltest. Si <i>testthread</i> est d<>fini, <b>::tcltest::threadReap</b> tue tous les threads <20> l'exception du thread principal. Il r<>cup<75>re l'ID du thread principal en appelant <i>testthread names</i> pendant l'initialisation. Cette valeur est stock<63>e dans <i>::tcltest::mainThread</i>.&nbsp; <b>::tcltest::threadReap </b>retourne le nombre de threads existants en tout. (?)</DD>
</DL>
</div><br>
<div><b>TESTS</b></div><br>
<b></b><div ALIGN="LEFT" style="margin-left: 51px;">La proc<6F>dure <b>test </b><EFBFBD>x<EFBFBD>cute un script de test est affiche un message d'erreur si le r<>sultat du script ne correspond pas au r<>sultat attendu. Voici la sp<73>cification de la commande <b>test</b> : </div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 51px;">test &lt;name&gt; &lt;description&gt; ?&lt;constraint&gt;? &lt;script&gt; &lt;expectedAnswer&gt;<br>
</div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 51px;">L'argument &lt;name&gt; doit ob<6F>ir au motif:</div>
<div ALIGN="LEFT" style="margin-left: 51px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;target&gt;-&lt;majorNum&gt;.&lt;minorNum&gt;</div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 51px;">Pour les tests &quot;en bo<62>te blanche&quot; (tests de r<>gression), la cible &lt;target &gt; doit <20>tre le nom de la fonction C ou de la proc<6F>dure Tcl&nbsp; qui est test<73>e. Pour les tests &quot;en bo<62>te noire&quot;, la cible&nbsp; &lt;target&gt; doit <20>tre le nom de la fonctionnalit<69> test<73>e.&nbsp; Des tests apparent<6E>s doivent avoir le m<>me num<75>ro majeur &lt;majorNum&gt;.</div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 51px;">L'argument &lt;description&gt; est une courte description textuelle du test, pour aider les personnes <20> comprendre ce qui est test<73>. Le nom de la fonction Tcl ou C devrait y <20>tre inclus pour les tests de r<>gression. Si le cas de test est d<>fini pour reproduire un bug, inclure l'identifiant (bugID) dans la description. </div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 51px;">L'argument optionnel &lt;constraints&gt; peut <20>tre une liste d'un ou plusieurs mots-cl<63>s ou une expression. Si l'argument &lt;constraints&gt; se compose de mots-cl<63>s, chacun d'entre eux doit <20>tre le nom d'un <20>l<EFBFBD>ment du tableau <i>::tcltest::testConstraints</i>.&nbsp; Si l'un de ces <20>l<EFBFBD>ments est faux ou n'existe pas, le test est saut<75>. Si l'argument &lt;constraints&gt; est une expression, cette expression sera <20>valu<6C>e: si le r<>sultat est vrai, alors le test sera <20>x<EFBFBD>cut<75>.</div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 51px;">Ajoutez des contraintes appropri<72>es (par exemple, unixOnly) pour les tests qui ne doivent pas toujours <20>tre <20>x<EFBFBD>cut<75>s. Par exemple, un test qui ne doit <20>tre effectu<74> que sur Unix devrait ressembler <20>:</div>
<div ALIGN="LEFT" style="margin-left: 102px;">test getAttribute-1.1 &#123;testing file permissions} &#123;unixOnly} &#123;<br>
&nbsp;&nbsp;&nbsp; lindex &#91;file attributes foo.tcl] 5<br>
} &#123;00644}</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Exemple de test contenant une expression: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">test unixNotfy-1.1 &#123;Tcl_DeleteFileHandler} &#123;unixOnly &amp;&amp; !testthread} &#123;<br>
&nbsp;&nbsp;&nbsp; catch &#123;vwait x}<br>
&nbsp;&nbsp;&nbsp; set f &#91;open foo w]<br>
&nbsp;&nbsp;&nbsp; fileevent &#36;f writable &#123;set x 1}<br>
&nbsp;&nbsp;&nbsp; vwait x<br>
&nbsp;&nbsp;&nbsp; close &#36;f<br>
&nbsp;&nbsp;&nbsp; list &#91;catch &#123;vwait x} msg] &#36;msg<br>
} &#123;1 &#123;ne peut pas attendre la variable &quot;x&quot;:&nbsp; attendrait ind<6E>finiment }}<br>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Voir la section <i>&quot;Contraintes de Test&quot;</i> pour la liste des contraintes pr<70>d<EFBFBD>finies et pour savoir comment ajouter vos propres contraintes.</div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 51px;">L'argument &lt;script&gt; contient le script a ex<65>cuter pour effectuer le test. Il doit retourner un r<>sultat dont la validit<69> peut <20>tre v<>rifi<66>e. Si votre script demande qu'un fichier soit cr<63><72> <20> la vol<6F>e, utilisez svp la proc<6F>dure ::tcltest::makeFile. Si votre test demande qu'un petit fichier (moins de 50 lignes) soit contr&ocirc;l<EFBFBD> en lecture, svp pensez <20> cr<63>er le fichier <20> la vol<6F>e en utilisant la proc<6F>dure ::tcltest::makeFile. Les fichiers cr<63><72>s par la proc<6F>dure ::tcltest::makeFile seront automatiquement supprim<69>s par la proc<6F>dure ::tcltest::cleanupTests appel<65>e <20> la fin de chaque fichier de test.</div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 51px;">L'argument &lt;expectedAnswer&gt; sera compar<61> au r<>sultat de l'<27>valuation de l'argument &lt;script&gt;. S'ils correspondent, le test passe, sinon il <20>choue.</div>
<br>
<div><b>LES VARIABLES DU NAMESPACE TCLTEST</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les variables suivantes sont d<>finies dans le namespace tcltest et peuvent <20>tre utilis<69>es par des tests:
<DL>
<DT><b>::tcltest::outputChannel</b></DT><DD>outputfileID - par d<>faut stdout, peut <20>tre pr<70>cis<69> en indiquant -outfile sur la ligne de commande. Tout test qui imprime des r<>sultats devrait envoyer cette sortie <20> <i>::tcltest::outputChannel</i> plut&ocirc;t que de sortir par d<>faut sur stdout.</DD>
<DT><br><b>::tcltest::errorChannel</b></DT><DD>errorfileID - par d<>faut stderr, peut <20>tre pr<70>cis<69> en indiquant -errfile sur la ligne de commande. Tout test qui imprime des messages d'erreur devrait le faire vers <i>::tcltest::errorChannel </i>plut&ocirc;t que directement dans stderr.</DD>
<DT><br><b>::tcltest::mainThread</b></DT><DD>main thread ID - 1 par d<>faut. Ce sera le seul thread qui ne sera pas tu<74> par ::tcltest::threadReap et qui sera assign<67> conform<72>ment <20> la valeur de retour de <i>testthread names</i> <20> l'initialisation.</DD>
<DT><br><b>::tcltest::originalEnv</b></DT><DD>copie du tableau global &quot;env&quot; au d<>but de l'<27>x<EFBFBD>cution du test. Ce tableau est utilis<69> pour restaurer le tableau &quot;env&quot; <20> sa valeur initiale quand <i>::tcltest::cleanupTests</i>&nbsp; est appel<65>e.</DD>
<DT><br><b>::tcltest::workingDirectory</b></DT><DD>le r<>pertoire dans lequel le syst<73>me de test a <20>t<EFBFBD> lanc<6E>.</DD>
<DT><br><b>::tcltest::temporaryDirectory</b></DT><DD>le r<>pertoire de sortie - par d<>faut <i>::tcltest::workingDirectory</i> , peut <20>tre pr<70>cis<69> en indiquant&nbsp;&nbsp; -tmpdir en ligne de commande.</DD>
<DT><br><b>::tcltest::testsDirectory</b></DT><DD>l<EFBFBD> o<>; se trouvent les tests - par d<>faut&nbsp; <i>::tcltest::workingDirectory</i> , si le script ne peut pas d<>terminer o<>; le r<>pertoire de tests se trouve. Il est possible de changer cette valeur par d<>faut en pr<70>cisant -testdir en ligne de commande. Cette variable devrait toujours <20>tre pr<70>cis<69>e explicitement si les tests sont <20>x<EFBFBD>cut<75>s depuis un fichier all.tcl.</DD>
<DT><br><b>::tcltest::tcltest</b></DT><DD>le nom de l'<27>x<EFBFBD>cutable utilis<69> pour appeler le syst<73>me de test.</DD>
<DT><br><b>::tcltest::loadScript</b></DT><DD>Le script <20>x<EFBFBD>cut<75> en tant que <b>loadTestCommands</b>. Pr<50>cis<69> par -load ou -loadfile. </DD>
</DL>
</div>
<br>
<div><b>CONTRAINTES DE TEST</b></div>
<br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les contraintes sont utilis<69>es pour d<>terminer si un test doit <20>tre ignor<6F>.&nbsp; Chaque contrainte est stock<63>e comme un indice du tableau <i>::tcltest::testConstraints</i>. Par exemple, la contrainte unixOnly est d<>finie de la fa<66>on suivante: </div>
<div ALIGN="LEFT" style="margin-left: 101px;">set ::tcltest::testConstraints(unixOnly) \<br>
&nbsp;&nbsp;&nbsp; &#91;string equal &#36;tcl_platform(platform) &quot;unix&quot;]<br>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si un test est contraint par &quot;unixOnly&quot;, il ne s'ex<65>cutera que si la valeur de ::tcltest::testConstraints(unixOnly) est vraie. Plusieurs contraintes sont d<>finies dans le package <b>tcltest</b>.&nbsp; Pour ajouter des contraintes sp<73>cifiques <20> un fichier ou <20> un test, vous pouvez cr<63>er l'index correspondant du tableau ::tcltest::testsConstraints dans votre propre fichier de test.</div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 51px;">Voici la liste des contraintes d<>finies dans le package <b>tcltest</b> :
<DL>
<DT><i>unix</i></DT><DD>le test ne peut s'ex<65>cuter que sur les plateformes UNIX</DD>
<DT><i>pc</i></DT><DD>le test ne peut s'ex<65>cuter que sur les plateformes Windows</DD>
<DT><i>nt</i></DT><DD>le test ne peut s'ex<65>cuter que sur les plateformes Windows NT</DD>
<DT><i>95</i></DT><DD>le test ne peut s'ex<65>cuter que sur les plateformes Windows 95</DD>
<DT><i>98</i></DT><DD>le test ne peut s'ex<65>cuter que sur les plateformes Windows 98</DD>
<DT><i>mac</i></DT><DD>le test ne peut s'ex<65>cuter que sur les plateformes Mac</DD>
<DT><i>unixOrPc</i></DT><DD>le test ne peut s'ex<65>cuter que sur les plateformes UNIX ou PC</DD>
<DT><i>macOrPC</i></DT><DD>le test ne peut s'ex<65>cuter que sur les plateformes Mac ou PC</DD>
<DT><i>macOrUnix</i></DT><DD>le test ne peut s'ex<65>cuter que sur les plateformes Mac ou Unix</DD>
<DT><i>tempNotPc</i></DT><DD>le test ne peut <20>tre <20>x<EFBFBD>cut<75> sur Windows. C'est un flag pour d<>sactiver temporairement un test.</DD>
<DT><i>tempNotMac</i></DT><DD>le test ne peut <20>tre <20>x<EFBFBD>cut<75> sur un Mac. C'est un flag pour d<>sactiver temporairement un test.</DD>
<DT><i>unixCrash</i></DT><DD>le test se plante s'il est <20>x<EFBFBD>cut<75> sur UNIX. C'est un flag pour d<>sactiver temporairement un test.</DD>
<DT><i>pcCrash</i></DT><DD>le test se plante s'il est <20>x<EFBFBD>cut<75> sur PC. C'est un flag pour d<>sactiver temporairement un test.</DD>
<DT><i>macCrash</i></DT><DD>le test se plante s'il est <20>x<EFBFBD>cut<75> sur Mac. C'est un flag pour d<>sactiver temporairement un test.</DD>
<DT><i>emptyTest</i></DT><DD>le test est vide, et donc ne vaut pas la peine d'<27>tre <20>x<EFBFBD>cut<75>, mais il reste afin d'<27>tre <20>crit dans le futur. Cette contrainte provoque l'omission syst<73>matique du test.</DD>
<DT><i>knownBug</i></DT><DD>le test est connu pour se planter, et le bug n'est pas encore corrig<69>. Cette contrainte provoque l'omission du test., sauf si l'utilisateur demande le contraire. Voir la section &quot;Introduction&quot; pour plus d'informations.</DD>
<DT><i>nonPortable</i></DT><DD>ce test ne peut <20>tre effectu<74> que dans l'environnement de d<>veloppement Tcl/Tk ma<6D>tre. Certains tests sont par nature non portables, parce qu'ils d<>pendent de choses telles que la longueur de mot du processeur, la configuration du syst<73>me de fichiers, le gestionnaire de fen<65>tres, etc. Ces tests sont seulement <20>x<EFBFBD>cut<75>s dans l'environnement de d<>veloppement Tcl principal, o<>; la configuration est bien connue. Cette contrainte provoque l'omission du test, sauf si l'utilisateur demande le contraire.</DD>
<DT><i>userInteraction</i></DT><DD>ce test demande une interaction avec l'utilisateur. Cette contrainte provoque l'omission du test, sauf si l'utilisateur demande le contraire.</DD>
<DT><i>interactive</i></DT><DD>ce test ne peut <20>tre effectu<74> qu'en mode interactif, c'est <20> dire si la variable globale tcl_interactive est positionn<6E>e <20> 1.</DD>
<DT><i>nonBlockFiles</i></DT><DD>ce test ne peut s'ex<65>cuter que si la plateforme supporte de mettre les fichiers en mode non-bloqu<71>.</DD>
<DT><i>asyncPipeClose</i></DT><DD>ce test ne peut s'ex<65>cuter que si la plateforme supporte &quot;async flush&quot; et &quot;async close&quot; sur un pipe.</DD>
<DT><i>unixExecs</i></DT><DD>le test ne peut s'ex<65>cuter que si la machine dispose des commandes telles que 'cat', 'echo', etc.</DD>
<DT><i>hasIsoLocale</i></DT><DD>le test ne peut s'ex<65>cuter que s'il peut passer dans une locale ISO.</DD>
<DT><i>root</i></DT><DD>le test ne peut s'ex<65>cuter que si l'utilisateur Unix est root</DD>
<DT><i>notRoot</i></DT><DD>le test ne peut s'ex<65>cuter que si l'utilisateur Unix n'est pas root</DD>
<DT><i>eformat</i></DT><DD>le test ne peut s'ex<65>cuter que si l'application a une version fonctionnelle de sprintf respectant le format &quot;e&quot; des nombres flottants.</DD>
<DT><i>stdio</i></DT><DD>le test ne peut s'ex<65>cuter que si l'application courante peut fonctionner au travers d'un pipe</DD>
</DL>
</div><br>
<div><b>FAIRE FONCTIONNER LES FICHIERS DE TEST</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Utiliser la commande suivante pour ex<65>cuter un fichier de test qui utilise le package tcltest:</div>
<div ALIGN="LEFT" style="margin-left: 101px;">&lt;shell&gt; &lt;testFile&gt; ?&lt;option&gt; ?&lt;value&gt;?? ...</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les options de ligne de commande sont les suivantes (les variables du namespace tcltest qui correspondent <20> chacune des options sont indiqu<71>es entre parenth<74>ses <20> la fin de la description) :
<DL>
<DT><b>-help</b></DT><DD>affiche le mode d'utilisation</DD>
<DT><b>-verbose &lt;level&gt;</b></DT><DD>
d<EFBFBD>finit le niveau de verbosit<69> comme une sous-cha<68>ne de &quot;bps&quot;. Voir la section &quot;Informations issus des tests&quot; pour une explication de cette option.&nbsp; (::tcltest::verbose)</DD>
<DT><b>-match &lt;matchList&gt;</b></DT><DD>
effectue seulement les tests qui correspondent aux motifs de &quot;glob&quot; d<>finis dans &lt;matchList&gt;.&nbsp; (::tcltest::match)</DD>
<DT><b>-skip &lt;skipList&gt;</b></DT><DD>
n'effectue pas les tests qui correspondent <20> un ou plusieurs motifs de &quot;glob&quot; d<>finis dans &lt;skipList&gt;.&nbsp; (::tcltest::skip) </DD>
<DT><b>-file &lt;globPatternList&gt;</b></DT><DD>
source seulement les fichiers de test dont les noms r<>pondent <20> l'un des motifs de&nbsp; &lt;globPatternList&gt; d<>finis par rapport au r<>pertoire::tcltest::testsDirectory. Cette option n'a de sens qui si vous effectuez des tests utilisant &quot;all.tcl&quot; en tant que &lt;testFile&gt; au lieu d'effectuer directement des fichiers unitaires de test. (::tcltest::matchFiles) </DD>
<DT><b>-notfile &lt;globPatternList&gt;</b></DT><DD>
source tous les fichiers sauf ceux dont les noms r<>pondent <20> l'un des motifs de &lt;globPatternList&gt; d<>finis par rapport au r<>pertoire::tcltest::testsDirectory.&nbsp;&nbsp; Cette option n'a de sens qui si vous effectuez des tests utilisant &quot;all.tcl&quot; en tant que &lt;testFile&gt; au lieu d'effectuer directement des fichiers unitaires de test. (::tcltest::skipFiles) </DD>
<DT><b>-constraints &lt;list&gt;</b></DT><DD>
les tests contenant une contrainte parmi la liste &lt;list&gt; ne seront pas saut<75>s. Notez que les <20>l<EFBFBD>ments de &lt;list&gt; doivent correspondrent exactement aux contraintes existantes. Ceci est utile si vous voulez avoir la certitude que les tests ayant une contrainte particuli<6C>re sont effectu<74>s (par exemple, si le testeur souhaite que tous les tests contenant la contrainte knownBug soient effectu<74>s). (::tcltest::testConstraints(<i>constraintName</i>)) </DD>
<DT><b>-limitconstraints &lt;bool&gt;</b></DT><DD>Si l'argument de cette option est 1, les tests effectu<74>s seront ceux qui respectent les contraintes d<>finies par l'option -constraints. La valeur par d<>faut de cet indicateur est 0 (false). Ceci est utile si vous voulez ex<65>cuter <b>seulement</b> les tests qui r<>pondent aux contraintes list<73>es par l'option -constraints. Un testeur peut vouloir cela par exemple pour n'effectuer que les tests contraints par unixOnly et aucun autre. (::tcltest::limitConstraints)</DD>
<DT><b>-load &lt;script&gt;</b></DT><DD>utilisera le script indiqu<71> pour charger les commandes <20> tester (::tcltest::loadTestedCommands). La valeur par d<>faut est un script vide. Voir <20>galement -loadfile ci-dessous. (::tcltest::loadScript)</DD>
<DT><b>-loadfile &lt;scriptfile&gt;</b></DT><DD>utilisera le contenu du fichier indiqu<71> pour charger les commandes <20> tester (::tcltest::loadTestedCommands).Voir <20>galement -load ci-dessus. La valeur par d<>faut est un script vide. (::tcltest::loadScript)</DD>
<DT><b>-tmpdir &lt;directoryName&gt;</b></DT><DD>mettra tous les fichiers temporaires (cr<63><72>s avec ::tcltest::makeFile et ::tcltest::makeDirectory) dans le r<>pertoire indiqu<71>.&nbsp; L'emplacement par d<>faut est ::tcltest::workingDirectory.&nbsp; (::tcltest::temporaryDirectory) </DD>
<DT><b>-testdir &lt;directoryName&gt;</b></DT><DD>cherche les tests <20> ex<65>cuter dans le r<>pertoire indiqu<71>. L'emplacement par d<>faut est ::tcltest::workingDirectory. (::tcltest::testsDirectory)</DD>
<DT><b>-preservecore &lt;level&gt;</b></DT><DD>contr&ocirc;le pour les fichiers core.&nbsp; Cette option d<>termine quel niveau de contr&ocirc;le sera effectu<74> pour les fichiers &quot;core&quot;. La valeur par d<>faut pour &lt;level&gt; est 0. Les niveaux &lt;level&gt; sont d<>finis comme suit :<DL>
<DT>0</DT><DD>Pas de contr&ocirc;le - ne pas contr&ocirc;ler les fichiers core <20> la fin de chaque test, mais les contr&ocirc;ler <20> chaque fois que::tcltest::cleanupTests est appel<65> depuis un fichier all.tcl. </DD>
<DT>1</DT><DD>V<EFBFBD>rifier l'existence de fichiers core <20> la fin de chaque commande de test et <20> chaque fois que::tcltest::cleanupTests est appel<65> depuis un fichier all.tcl.</DD>
<DT>2</DT><DD>V<EFBFBD>rifier l'existence de fichiers core <20> la fin de chaque commande de test et <20> chaque fois que::tcltest::cleanupTests est appel<65> depuis un fichier all.tcl. Sauvegarder tout fichier core produit dans ::tcltest::temporaryDirectory. (::tcltest::preserveCore)</DD>
</DL>
</DD>
<DT><b>-debug &lt;debugLevel&gt;</b></DT><DD>afficher l'information de debug dans stdout. Ceci est utilis<69> pour d<>bugger le code du syst<73>me de test. Le niveau de debug par d<>faut est 0. Les niveaux sont d<>finis ainsi:<DL>
<DT>0</DT><DD>Ne pas afficher les informations de debug.</DD>
<DT>1</DT><DD>Afficher l'information indiquant si un test est saut<75> parce qu'il ne r<>pond <20> aucune des conditions indiqu<71>es dans -match ou ::tcltest::match (userSpecifiedNonMatch), ou parce qu'il r<>pond <20> une quelconque des conditions indiqu<71>es par -skip ou ::tcltest::skip ((userSpecifiedSkip).</DD>
<DT>2</DT><DD>Affiche le tableau des options interpr<70>t<EFBFBD> par le processeur de ligne de commande, le contenu du tableau ::env, et toutes les variables utilisateur d<>finies dans le namespace courant, quand elles sont utilis<69>es.</DD>
<DT>3</DT><DD>Affiche l'information concernant ce que font les proc<6F>dures individuelles de le syst<73>me de test.(::tcltest::debug)</DD>
</DL>
</DD>
<DT><b>-outfile &lt;filename&gt;</b></DT><DD>envoie la sortie g<>n<EFBFBD>r<EFBFBD>e par le package tcltest vers le fichier indiqu<71>. La valeur par d<>faut est stdout. Notez que la sortie de debug va syst<73>matiquement dans stdout, quelque soit la valeur de cette option. (::tcltest::outputChannel)</DD>
<DT><b>-errfile &lt;filename&gt;</b></DT><DD>envoie les erreurs g<>n<EFBFBD>r<EFBFBD>es par le package tcltest vers le fichier indiqu<71>. La valeur par d<>faut est stderr. (::tcltest::errorChannel)</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Une seconde fa<66>on d'ex<65>cuter les tests est de d<>marrer un shell, de charger le package <b>tcltest</b>, puis de sourcer un fichier de test appropri<72> ou d'utiliser la commande test. Pour utiliser les options en mode interactif, alimenter la variable qui leur correspond dans le namespace tcltest apr<70>s avoir charg<72> le package.</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Voir la section <i>&quot;Contraintes de Test&quot;</i> pour toutes les contraintes pr<70>-construites qui peuvent <20>tre utilis<69>es dans le tableau <b>::tcltest::testConstraints</b>. Voir la section <i>&quot;Les variables du </i><i>namespace Tcltest&quot;</i> pour des informations sur les autres variables d<>finies dans le namespace tcltest.</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Une derni<6E>re fa<66>on d'ex<65>cuter les tests est d'indiquer les fichiers de test <20> ex<65>cuter <20> l'int<6E>rieur d'un fichier <i>all.tcl</i> (qui peut <20>tre nomm<6D> diff<66>remment). C'est l'approche utilis<69>e par le syst<73>me de test de Tcl. Ce fichier charge le package tcltest, d<>finit l'emplacement du r<>pertoire de test (::tcltest::testsDirectory), d<>termine quels fichiers de test ex<65>cuter, source chacun de ces fichiers, appelle ::tcltest::cleanupTests et finit de s'ex<65>cuter.</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Un fichier <i>all.tcl</i> plus <20>labor<6F> peut faire du pr<70>- et du post-processing avant de sourcer chaque fichier .test, utiliser des interpr<70>teurs diff<66>rents pour chaque fichier, ou manipuler des structures de r<>pertoires complexes. Pour un exemple de fichier all.tcl, voir la section &quot;Exemples&quot; de ce document. </div>
<br><div><b>RESULTATS DES TESTS</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Apr<EFBFBD>s que tous les fichiers de test indiqu<71>s aient <20>t<EFBFBD> <20>x<EFBFBD>cut<75>s, le nombre de tests r<>ussis, saut<75>s ou <20>chou<6F>s est envoy<6F> dans<b>::tcltest::outputChannel</b>.&nbsp; A c&ocirc;t<EFBFBD> de cette information statistique, la sortie peut <20>tre pilot<6F>e pour chaque test par la variable <b>::tcltest::verbose</b>.</div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 51px;"><b>::tcltest::verbose </b>peut avoir pour valeur n'importe quelle sous-cha<68>ne ou permutation de &quot;bps&quot;.&nbsp;&nbsp; Dans la cha<68>ne &quot;bps&quot;, le 'b' se r<>f<EFBFBD>re au corps (body) du test, le 'p' se r<>f<EFBFBD>re aux tests r<>ussis&nbsp; (passed) et le 's' signifi<66> tests saut<75>s (skipped). La valeur par d<>faut de <b>::tcltest::verbose est &quot;b&quot;. </b>Si 'b' est pr<70>sent, alors le corps entier du test est imprim<69> pour chaque test <20>chou<6F>;&nbsp; sinon seulement le nom du test, la sortie souhait<69>e et la sortie obtenue sont imprim<69>s pour chaque test <20>chou<6F>. Si 'p' est pr<70>sent, alors une ligne est imprim<69>e pour chaque test r<>ussi, sinon aucune ligne n'est imprim<69>e pour les tests r<>ussis. Si 's' est pr<70>sent, alors une ligne (contenant les contraintes qui ont&nbsp; fait que le test a <20>t<EFBFBD> saut<75>) est imprim<69>e pour chaque test saut<75>, sinon aucune ligne n'est imprim<69>e dans ce cas.</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Vous pouvez positionner <b>::tcltest::verbose</b>, soit interactivement (une fois que le package <b>tcltest</b> a <20>t<EFBFBD> charg<72>) ou en utilisant l'argument de ligne de commande -verbose, par exemple:</div>
<div ALIGN="LEFT" style="margin-left: 51px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tclsh socket.test -verbose bps</div>
<br>
<div><b>CONTENUS D'UN FICHIER DE TEST</b></div>
<br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les fichiers de test doivent commencer par charger le package <b>tcltest</b>: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">if &#123;&#91;lsearch &#91;namespace children] ::tcltest] == -1} &#123;<br>
&nbsp;&nbsp;&nbsp; package require tcltest<br>
&nbsp;&nbsp;&nbsp; namespace import ::tcltest::*<br>
}<br>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les fichiers de tests doivent se terminer par l'appel de la fonction de nettoyage <b>::tcltest::cleanupTests</b>. La proc<6F>dure <b>::tcltest::cleanupTests </b>affiche des statistiques au sujet du nombre de tests r<>ussis, saut<75>s ou <20>chou<6F>s,&nbsp; et supprime tous les fichiers cr<63><72>s au moyen des proc<6F>dures<b> ::tcltest::makeFile</b> et <b>::tcltest::makeDirectory</b>.<b> </b></div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 102px;"># Supprime les fichiers cr<63><72>s par ces tests </div>
<div ALIGN="LEFT" style="margin-left: 102px;"># Retour au r<>pertoire de travail initial<br>
# Supprime les tableaux globaux<br>
::tcltest::cleanupTests<br>
return<br>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les fichiers de tests doivent se finir par une extension .test. Les noms des fichiers de tests qui contiennent des tests de r<>gression (dits de bo<62>te transparente) doivent <20>tre nomm<6D>s d'apr<70>s les fichiers de code Tcl ou C qu'ils testent. Par exemple, le fichier de test du programme C &quot;tclCmdAH.c&quot; doit <20>tre &quot;cmdAH.test&quot;. Les fichiers qui contiennent des tests &quot;bo<EFBFBD>te noire&quot; (black-box tests) devraient se conformer au motif &quot;*_bb.test&quot;.</div>
<div ALIGN="LEFT" style="margin-left: 51px;"> </div><br>
<div><b>SELECTIONNER DES TESTS A EXECUTER DANS UN FICHIER</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Normalement, quand un fichier est sourc<72>, tous les tests qu'il contient sont <20>x<EFBFBD>cut<75>s. Individuellement, un test sera saut<75> si l'une des conditions suivantes est vraie:
<DL>
<DT>&#91;1]</DT><DD>le <i>nom</i> du test ne correspond pas (en utilisant la correspondance de type &quot;glob&quot;) <20> un ou plusieurs <20>l<EFBFBD>ments de la variable <b>::tcltest::match</b>.</DD>
<DT>&#91;2]</DT><DD>le <i>nom</i> du test correspond (en utilisant la correspondance de type &quot;glob&quot;) <20> un ou plusieurs <20>l<EFBFBD>ments de la variable <b>::tcltest::skip</b>.</DD>
<DT>&#91;3]</DT><DD>l'argument <i>constraints</i> de l'appel <20> <b>::tcltest::call</b>, s'il existe, contient une ou plusieurs valeurs fausses.</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Vous pouvez d<>finir <b>::tcltest::match </b>et/ou<b> ::tcltest::skip, </b>soit interactivement (apr<70>s que le package<b> tcltest </b>a <20>t<EFBFBD> sourc<72>), ou en utilisant les arguments de ligne de commande<b> -match </b>et<b> </b><b>-skip</b>, par exemple <b>:&nbsp;&nbsp; </b> </div>
<div ALIGN="LEFT" style="margin-left: 102px;">tclsh info.test -match '*-5.* *-7.*' -skip '*-7.1*'</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Soyez s&ucirc;r de bien placer les quotes, de fa<66>on que votre shell ne fasse pas les substitutions de type glob sur les motifs que vous indiquez&nbsp; (que ce soit bien l'interpr<70>teur tcl qui fasse ces substitutions).&nbsp; </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les contraintes pr<70>d<EFBFBD>finies (par exemple <i>knownBug</i> et <i>nonPortable</i>) peuvent <20>tre chang<6E>es soit interactivement (apr<70>s que le package<b> tcltest </b>a <20>t<EFBFBD> sourc<72>), en d<>finissant la variable <b>::tcltest::testConstraints</b>(<i>constraint</i>), ou en utilisant l'option de ligne de commande <b>-constraints</b> avec le nom de la contrainte comme argument. L'exemple suivant montre comment faire fonctionner des tests contraints par les restrictsions <i>knownBug</i> et <i>nonPortable</i>: </div>
<div ALIGN="LEFT" style="margin-left: 51px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tclsh all.tcl -constraints &quot;knownBug nonPortable&quot;</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Voir la section <i>&quot;Contraintes de Test&quot;</i> pour plus d' information sur l'utilisation des contraintes pr<70>d<EFBFBD>finies et l'ajout de nouvelles contraintes. </div>
<br>
<div><b>PERSONNALISER LE SYSTEME DE TEST</b></div>
<br>
<div ALIGN="LEFT" style="margin-left: 51px;">Pour cr<63>er votre propre syst<73>me de test, cr<63>er un fichier .tcl qui contient votre namespace. Dans ce fichier, appeller le package <b>tcltest</b> <i>(package require tcltest)</i>. Les commandes qui peuvent <20>tre red<65>finies pour personnaliser le syst<73>me de test sont:
<DL>
<DT><b>::tcltest::PrintUsageInfoHook</b></DT><DD>afficher de l'information compl<70>mentaire, sp<73>cifique <20> votre situation.</DD>
<DT><b>::tcltest::processCmdLineArgsFlagHook</b></DT><DD>avertir le syst<73>me au sujet d'options additionnelles que vous voulez qu'il comprenne.</DD>
<DT><b>::tcltest::processCmdLineArgsHook</b> <i>flags</i></DT><DD>traiter les options additionnelles que vous avez communiqu<71>es au syst<73>me de test au travers de ::tcltest::processCmdLineArgsFlagHook.</DD>
<DT><b>::tcltest::initConstraintsHook</b></DT><DD>ajouter des contraintes additionnelles aux contraintes pr<70>d<EFBFBD>finies par <b>tcltest</b>.</DD>
<DT><b>::tcltest::cleanupTestsHook</b></DT><DD>faire du nettoyage additionnel</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Pour ajouter de nouvelles options <20> votre syst<73>me de test personnalis<69>, red<65>finissez <b>::tcltest::processCmdLineArgsAddFlagHook</b> pour la liste des options additionnelles <20> interpr<70>ter, et <b>::tcltest::processCmdLineArgsHook</b> pour les traiter effectivement . Par exemple: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">proc ::tcltest::processCmdLineArgsAddFlagHook &#123;} &#123;<br>
&nbsp;&nbsp;&nbsp; return &#91;list -flag1 -flag2]<br>
}<br>
<br>
proc ::tcltest::processCmdLineArgsHook &#123;flagArray} &#123;<br>
&nbsp;&nbsp;&nbsp; array set flag &#36;flagArray<br>
<br>
&nbsp;&nbsp;&nbsp; if &#123;&#91;info exists flag(-flag1)]} &#123;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Handle flag1<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; if &#123;&#91;info exists flag(-flag2)]} &#123;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Handle flag2<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; return<br>
}<br>
</div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 51px;">Vous pouvez aussi vouloir ajouter un mode d'emploi pour ces options.&nbsp; Ce mode d'emploi s'affichera quand l'utilisateur indiquera -help. Pour d<>finir le mode d'emploi additionnel, d<>finissez votre propre proc<6F>dure ::tcltest::PrintUsageInfoHook. A l'int<6E>rieur de cette proc<6F>dure, vous afficherez le mode d'emploi compl<70>mentaire pour chacune des options que vous avez ajout<75>es.</div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 51px;">Pour ajouter de nouvelles contraintes pr<70>d<EFBFBD>finies au syst<73>me de test, d<>finissez votre propre version de <b>::tcltest::initConstraintsHook</b>.&nbsp; A l'int<6E>rieur de cette proc<6F>dure, vous pouvez compl<70>ter le tableau <b>::tcltest::testConstraints</b>. Par exemple: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">proc ::tcltest::initConstraintsHook &#123;} &#123;<br>
&nbsp;&nbsp;&nbsp; set ::tcltest::testConstraints(win95Or98) \<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#91;expr &#123;&#36;::tcltest::testConstraints(95) || \<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#36;::tcltest::testConstraints(98)}]<br>
}<br>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">Enfin, si vous voulez ajouter du code de nettoyage compl<70>mentaire, vous pouvez d<>finir votre propre <b>::tcltest::cleanupTestsHook</b>.&nbsp; Par exemple: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">proc ::tcltest::cleanupTestsHook &#123;} &#123;<br>
&nbsp;&nbsp;&nbsp; # Add your cleanup code here<br>
}<br>
</div>
<div><b>EXEMPLES</b></div>
<div>&nbsp;
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Un fichier de test simple (foo.test) </div>
<div ALIGN="LEFT" style="margin-left: 102px;">if &#123;&#91;lsearch &#91;namespace children] ::tcltest] == -1} &#123;<br>
&nbsp;&nbsp;&nbsp; package require tcltest<br>
&nbsp;&nbsp;&nbsp; namespace import ::tcltest::*<br>
}<br>
<br>
test foo-1.1 &#123;enregistrer 1 dans la variable foo} &#123;} &#123;<br>
&nbsp;&nbsp;&nbsp; set foo 1<br>
} &#123;1}<br>
<br>
::tcltest::cleanupTests<br>
return<br>
</div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;2]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Un fichier all.tcl simple </div>
<div ALIGN="LEFT" style="margin-left: 102px;">if &#123;&#91;lsearch &#91;namespace children] ::tcltest] == -1} &#123;<br>
&nbsp;&nbsp;&nbsp; package require tcltest<br>
&nbsp;&nbsp;&nbsp; namespace import ::tcltest::*<br>
}<br>
<br>
set ::tcltest::testSingleFile false<br>
set ::tcltest::testsDirectory &#91;file dir &#91;info script]]<br>
<br>
foreach file &#91;::tcltest::getMatchingTestFiles] &#123;<br>
&nbsp;&nbsp;&nbsp; if &#123;&#91;catch &#123;source &#36;file} msg]} &#123;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; puts stdout &#36;msg<br>
&nbsp;&nbsp;&nbsp; }<br>
}<br>
<br>
::tclttest::cleanupTests 1<br>
return<br>
</div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;3]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ex<EFBFBD>cuter un test simple </div>
<div ALIGN="LEFT" style="margin-left: 102px;">tclsh foo.test<br>
</div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;4]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ex<EFBFBD>cuter des tests multiples </div>
<div ALIGN="LEFT" style="margin-left: 102px;">tclsh all.tcl -file 'foo*.test' -notfile 'foo2.test'<br>
</div>
<div>&nbsp;
<div>Derni<EFBFBD>re r<>vision: 8.2</div>
</BODY></HTML>

111
hlp/fr/tcl/tclvars.htm Normal file
View File

@@ -0,0 +1,111 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>tclvars&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">tclvars - Variables utilis<69>es par Tcl&nbsp;
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Les variables globales suivantes sont cr<63><72>e et g<>r<EFBFBD>es automatiquement par les biblioth<74>que Tcl. Except<70> quand signal<61> ci-dessous, ces variables doivent normalement <20>tre trait<69>es en lecture seule par le code sp<73>cifique <20> l'application et par les utilisateurs.
<DL>
<DT><b>env</b></DT><DD>Cette variable est g<>r<EFBFBD>e par Tcl comme un tableau dont les <20>l<EFBFBD>ments sont les variables d'environnements pour le processus. Lire un <20>l<EFBFBD>ment renverra la valeur de la variable d'environnement correspondante. Ecrire un <20>l<EFBFBD>ment du tableau modifiera la variable d'environnement correspondante ou en cr<63>era une nouvelle si elle n'existe pas d<>j<EFBFBD>. Effacer un <20>l<EFBFBD>ment de&nbsp; <b>env</b> enl<6E>vera la variable d'environnement correspondante. Les changements du tableau <b>env</b> affectent l'environnement transmis aux enfants par les commandes comme <A HREF="105.htm"><b>exec</b></A>. Si le tableau entier <b>env</b> est effa<66><61> alors Tcl arr<72>tera de surveiller l'acc<63>s <20> <b>env</b> et ne mettra plus <20> jour les variables d'environnements.
<br>Sous Windows, les variables d'environnements PATH et COMSPEC sont converties automatiquement en majuscule Par exemple, la variable PATH pourrait <20>tre export<72>e par le syst<73>me d'exploitation comme &quot;path&quot;, &quot;Path&quot;, &quot;PaTh&quot;, etc., ce qui autrement demanderait au code Tcl de supporter de nombreux cas sp<73>ciaux. Toutes les autres variables d'environnement h<>rit<69>es par Tcl sont inchang<6E>es.
<br>Sur Macintosh, la variable d'environnement est construite par Tcl car aucune variable globale d'environnement n'existe. Les variable d'environnements qui sont cr<63><72>es par Tcl inclutnt:
<DL>
<DT><br><b>LOGIN</b>
</DT><DD>Contient le nom Chooser du Macintosh.
</DD>
<DT><br><b>USER</b>
</DT><DD>Contient aussi le nom Chooser du Macintosh.</DD>
<DT><br><b>SYS_FOLDER</b>
</DT><DD>Le chemin du r<>pertoire syst<73>me.</DD>
<DT><br><b>APPLE_M_FOLDER</b>
</DT><DD>Le chemin du r<>pertoire du Menu Pomme. </DD>
<DT><br><b>CP_FOLDER</b>
</DT><DD>Le chemin du r<>pertoire du panneau de contr<74>le.</DD>
<DT><br><b>DESK_FOLDER</b>
</DT><DD>Le chemin du r<>pertoire du bureau.</DD>
<DT><br><b>EXT_FOLDER</b>
</DT><DD>Le chemin du r<>pertoire d'extensions syst<73>me.</DD>
<DT><br><b>PREF_FOLDER</b>
</DT><DD>Le chemin du r<>pertoire des pr<70>ferences.</DD>
<DT><br><b>PRINT_MON_FOLDER</b>
</DT><DD>Le chemin du r<>pertoire print monitor.</DD>
<DT><br><b>SHARED_TRASH_FOLDER</b>
</DT><DD>Le chemin du r<>pertoire de la corbeille r<>seau.</DD>
<DT><br><b>TRASH_FOLDER</b>
</DT><DD>Le chemin du r<>pertoire de la corbeille.</DD>
<DT><br><b>START_UP_FOLDER</b>
</DT><DD>Le chemin du r<>pertoire de d<>marrage. </DD>
<DT><br><b>PWD</b>
</DT><DD>Le chemin du r<>pertoire par d<>faut de l'application.</DD>
</DL>
<br>Vous pouvez aussi cr<63>er votre propre variable d'environnement pour le Macintosh. Un fichier nomm<6D> <i>Tcl Environment Variables</i> peut <20>tre plac<61> dans le dossier pr<70>ferences dans le dossier syst<73>me Mac. Chaque lignes de ce fichier seront de la forme <i>VAR_NAME=var_data</i>.
<br>La derni<6E>re alternative est de placer les variable d'environnements dans une resource 'STR#' nomm<6D>e <i>Tcl Environment Variables</i> de l'application. Ceci est consider<65> un peu plus &quot;Mac like&quot; qu'un fichier style Unix Environment Variable. Chaque entr<74>e dans la resource 'STR#' a le m<>me format que ci-dessous. Le fichier source <i>tclMacEnv.c</i> contient l'impl<70>mentation des m<>canismes de <i>env</i>. Ce fichier contient de nombreux #define qui autorisent la customisation des m<>canismes <i>env</i> pour les adapter aux besoins de votre applications.
</DD>
<DT><br><b>errorCode</b></DT><DD>Apr<EFBFBD>s une erreur, cette variable est fix<69>e pour recevoir l'information suppl<70>mentaire au sujet de l'erreur sous une forme qui est facile <20> traiter pour les programmes. <b>errorCode</b> consiste d'une liste Tcl avec un ou plusieurs <20>l<EFBFBD>ments. Le premier <20>l<EFBFBD>ment de la liste identifie une classe g<>n<EFBFBD>rale d'erreurs, et d<>termine le format du reste de la liste. Les formats suivants pour <b>errorCode</b> sont utilis<69>s par le noyau Tcl; les applications peuvent definir des formats suppl<70>mentaires.
<DL>
<DT><b>ARITH</b><i> code msg</i></DT><DD>Ce format est utilis<69> quand une erreur arithm<68>tique se produit (ex. une tentative de division par z<>ro dans une commande<A HREF="107.htm"><b> expr</b></A>). <i>Code</i> identifie l'erreur pr<70>cise et <i>msg</i> fournit une description compr<70>hensible de l'erreur <i>Code</i> sera soit DIVZERO (pour une tentative de division par z<>ro), DOMAIN (si un argument est en dehors du domaine d'une fonction, tel acos(-3)), IOVERFLOW (d<>bordement entier), OVERFLOW (d<>bordement flottant), ou UNKNOWN (si la cause de l'erreur ne peut pas <20>tre d<>termin<69>e).</DD>
<DT><br><b>CHILDKILLED</b><i> pid sigName msg</i>
</DT><DD>Ce format est utilis<69> quand un processus enfant a <20>t<EFBFBD> tu<74> <20> cause d'un signal. Le second <20>l<EFBFBD>ment de <b>errorCode</b> sera l'identificateur de processus (en d<>cimal). Le troisi<73>me <20>l<EFBFBD>ment sera le nom symbolique du signal qui <20> caus<75> la fin du processus; il sera un des noms du fichier include signal.h, tel que <b>SIGPIPE</b>. Le quatri<72>me <20>l<EFBFBD>ment sera un court message d<>crivant le signal, tel que &quot;write on pipe whith no readers&quot; pour <b>SIGPIPE</b>.</DD>
<DT><br><b>CHILDSTATUS</b><i> pid code</i>
</DT><DD>Ce format est utilis<69> quand un processus enfant s'est termin<69> avec un statut diff<66>rent de z<>ro Le second <20>l<EFBFBD>ment de <b>errorCode</b> sera l'identificateur de processus (en d<>cimal). et le troisi<73>me <20>l<EFBFBD>ment sera le code de fin renvoy<6F> par le processus (aussi en d<>cimal). </DD>
<DT><br><b>CHILDSUSP</b><i> pid sigName msg</i>
</DT><DD>Ce format est utilis<69> quand un processus enfant a <20>t<EFBFBD> suspendu <20> cause d'un signal. Le second <20>l<EFBFBD>ment de <b>errorCode</b> sera l'identificateur de processus (en d<>cimal).. Le troisi<73>me <20>l<EFBFBD>ment sera le nom symbolique du signal qui a caus<75> la suspension du processus; ce sera un des noms du fichier include signal.h,, tel que <b>SIGTTIN</b>. Le quatri<72>me <20>l<EFBFBD>ment sera sera un court message d<>crivant le signal, tel que &quot;background tty read&quot; pour <b>SIGTTIN</b>.</DD>
<DT><br><b>NONE</b>
</DT><DD>Ce format est utilis<69> pour les erreurs o<> aucune information suppl<70>mentaire n'est disponible pour une erreur en plus du message renvoy<6F> avec l'erreur Dans ces cas <b>errorCode</b> consistera en une liste contenant un seul <20>l<EFBFBD>ment dont le contenu sera <b>NONE</b>.</DD>
<DT><b>POSIX </b><i>errName msg</i></DT><DD>Si le premier <20>l<EFBFBD>ment de <b>errorCode</b> est <b>POSIX</b>, alors l'erreur s'est produite pendant un appel noyau POSIX. Le second <20>l<EFBFBD>ment de la liste contiendra le nom symbolique de l'erreur qui s'est produite, tel que <b>ENOENT</b>; ce sera une des valeurs d<>finies dans le fichier include errno.h. Le troisi<73>me <20>l<EFBFBD>ment de la liste sera un message compr<70>hensible correspondant <20> <i>errName</i>, tel que &quot;aucun fichier ou r<>pertoire&quot; dans le cas de<b> ENOENT</b>.<br>Pour fixer <b>errorCode</b>, les applications devraient utiliser une fonction de biblioth<74>que telle que <A HREF="2.htm"><b>Tcl_SetErrorCode</b></A> et <A HREF="2.htm"><b>Tcl_PosixError</b></A>, ou elles peuvent appeller la commande<A HREF="103.htm"><b> error</b></A>. Si une de ces m<>thodes n'a pas <20>t<EFBFBD> utilis<69>e, alors l'interpr<70>teur Tcl r<>initialisera la variable <20> <b>NONE</b> apr<70>s l'erreur suivante.
</DD>
</DL>
</DD>
<DT><br><b>errorInfo</b></DT><DD>Apr<EFBFBD>s une erreur, cette cha<68>ne contiendra une ou plusieurs lignes identifiant la commande Tcl et les fonctions qui <20>taient ex<65>cut<75>es quand l'erreur la plus recente s'est produite. Son contenu prend la forme d'une trace de la pile montrant les commandes Tcl imbriqu<71>es qui avait <20>t<EFBFBD> appel<65>es <20> l'instant de l'erreur.</DD>
<DT><br><b>tcl_library</b>
</DT><DD>Cette variable contient le nom d'un r<>pertoire contenant les biblioth<74>ques syst<73>me de scripts Tcl, tel que celles utilis<69>es pour un auto-chargement. La valeur de cette variable est renvoy<6F> par la commande<b> info library</b>. Voir la page de manuel <A HREF="129.htm"><b>library</b></A> pour les d<>tails des facilit<69>s fournies par la biblioth<74>que de scripts Tcl. Normalement chaque application ou package aura sa propre biblioth<74>que sp<73>cifique en plus de la biblioth<74>que Tcl; chaque application devra fixer une variable globale avec un nom comme <b>&#36;</b><i>app</i><b>_library</b> (o<> <i>app</i> est le nom de l'application) pour recevoir le nom de chemin r<>seau du r<>pertoire de la biblioth<74>que de cette de l'application. La valeur initiale de <b>tcl_library</b> est fix<69>e quand un interpr<70>teur est cr<63><72> en cherchant plusieurs r<>pertoire diff<66>rents jusqu'a ce qu'un soit trouv<75> contenant un script de d<>marrage appropri<72>. Si la variable d'environnement <b>TCL_LIBRARY</b> existe, alors le r<>pertoire qu'elle indique est v<>rifi<66> en premier. Si <b>TCL_LIBRARY</b> n'est pas fix<69> ou ne se ref<65>re pas <20> un r<>pertoire appropri<72>, alors Tcl v<>rifie plusieurs autre r<>pertoires en se basant sur l'emplacement compil<69> par d<>faut, l'emplacement du binaire contenant l'application, et le r<>pertoire de travail courant. </DD>
<DT><br><b>tcl_patchLevel</b>
</DT><DD>Quand un interpr<70>teur est cr<63><72> Tcl initialise cette variable pour recevoir une cha<68>ne donnant le courant niveau de patch de Tcl, tel que <b>7.3p2</b> for Tcl 7.3 avec les deux premier patches officiels, ou <b>7.4b4</b> pour la quatri<72>me release beta de Tcl 7.4. La valeur de cette variable est renvoy<6F> par la commande<b> info patchlevel</b>.</DD>
<DT><br><b>tcl_pkgPath</b>
</DT><DD>Cette variable contient une liste de r<>pertoires indiquant o<> les packages sont normalement install<6C>s. Elle n'est pas utilis<69>e sous Windows. Elle contient typiquement soit une ou deux entr<74>es; si elle contient deux entr<74>es, la premi<6D>re est normalement un r<>pertoire pour les packages dependant de la plateforme (ex., biblioth<74>ques partag<61>es binaires) et le second est normalement un r<>pertoire pour les packages ind<6E>pendants de la plateforme- (ex., fichiers script). Typiquement un package est install<6C> comme sous r<>pertoire d'une des entr<74>es de <b>&#36;tcl_pkgPath</b>. Les r<>pertoires de <b>&#36;tcl_pkgPath</b> sont inclus par d<>faut dans la variable<b> auto_path</b>, donc eux et leurs sous-r<>pertoires imm<6D>diats sont automatiquement recherch<63> pendant les commandes<b> package require</b> Note: <b>tcl_pkgPath</b> n'est pas con<6F>ue pour <20>tre modifi<66>e par les application. Sa valeur est ajout<75>e <20> <b>auto_path</b> au d<>marrage; les changement dans <b>tcl_pkgPath</b> ne sont pas refl<66>t<EFBFBD>s dans <b>auto_path</b>. Si vous voulez que Tcl recherche les packages dans des r<>pertoires suppl<70>mentaires vous devrez ajouter leurs noms <20> <b>auto_path</b>, pas <20> <b>tcl_pkgPath</b>. </DD>
<DT><br><b>tcl_platform</b>
</DT><DD>Ceci est un tableau associatif dont les <20>l<EFBFBD>ments contiennent l'information concernant la plateforme sur laquelle l'application s'ex<65>cute, tel que le nom du syst<73>me d'exploitation, son num<75>ro de release courant, et le jeu d'instruction de la machine Les <20>l<EFBFBD>ments list<73>s ci-dessous seront toujours d<>finis, mais ils peuvent avoir des cha<68>ne vides comme valeurs si Tcl n'a pu r<>cup<75>rer quelconque information en rapport De plus, les extensions et les applications peuvent ajouter des valeurs suppl<70>mentaires au tableau Les <20>l<EFBFBD>ments pr<70>d<EFBFBD>finis sont:
<DL>
<DT><b>byteOrder</b></DT><DD>L'ordre natif des octets de cette machine: soit <b>littleEndian</b> ou <b>bigEndian</b> </DD>
<DT><br><b>debug</b>
</DT><DD>Si cette variable existe, alors l'interpr<70>teur a <20>t<EFBFBD> compil<69> avec les symboles debuggage activ<69>s. Cette variable existe seulement sous Windows donc les programmeurs d'extension peuvent sp<73>cifier quel package charger, ceci d<>pendant de la biblioth<74>que d'ex<65>cution C qui est charg<72>e.</DD>
<DT><br><b>machine</b>
</DT><DD>Le jeu d'instruction ex<65>cut<75> par cette machine, tel que <b>intel</b>, <b>PPC</b>, <b>68k</b>, ou <b>sun4m</b> Sur les machines UNIX, c'est la valeur renvoy<6F>e par <b>uname -m</b>.</DD>
<DT> <br><b>os</b>
</DT><DD>Le nom du syst<73>me d'exploitation ex<65>cut<75> sur cette machine, tel que <b>Windows 95</b>, <b>Windows NT</b>, <b>MacOS</b>, ou <b>SunOS</b>. Sur les machines UNIX, c'est la valeur renvoy<6F>e par <b>uname -s</b>. Sur Windows 95 et Windows 98, la valeur renvoy<6F>e sera <b>Windows95</b> pour fournir une meilleure compatibilit<69> ascendante avec Windows 95; pour distinguer entre les deux, v<>rifier <b>osVersion</b>.</DD>
<DT><br><b>osVersion</b>
</DT><DD>Le num<75>ro de version du syst<73>me d'exploitation ex<65>cut<75> sur cette machine. Sur les machines UNIX, c'est la valeur renvoy<6F>e par <b>uname -r</b> Sur Windows 95, la version sera 4.0; sur Windows 98, la version sera 4.10.</DD>
<DT><br><b>platform</b>
</DT><DD>Soit <b>windows</b>, <b>macintosh</b>, ou <b>unix</b>. Identifie l'environnement de la machine.</DD>
<DT><br><b>threaded</b>
</DT><DD>Si cette variable existe, alors l'interpr<70>teur a <20>t<EFBFBD> compil<69> avec les threads activ<69>s.</DD>
<DT><br><b>user</b>
</DT><DD>Ceci identifie l'utilisateur courant bas<61>es sur l'information de login disponible sur la plateforme. Est tir<69> de la variable d'environnement USER ou LOGNAME sous Unix, et de la valeur de GetUserName sous Windows et Macintosh.</DD>
</DL></DD>
<DT><br><b>tcl_precision</b>
</DT><DD>Cette variable contr<74>le le nombre de chiffres <20> g<>n<EFBFBD>rer pendant la conversion de valeurs flottantes en cha<68>nes Par d<>faut de 12. 17 chiffres est &quot;parfait&quot; pour les flottants IEEE&nbsp; car il permet de convertir les valeurs double-pr<70>cision en&nbsp; cha<68>nes puis de revenir en binaire sans perte d'information N<>anmoins, l'utilisation de 17 chiffres emp<6D>che tout arrondi, et produit des r<>sultats plus long, et moins intuitifs Par exemple, <b>expr 1.4</b> retourne 1.3999999999999999 avec <b>tcl_precision</b> fix<69> <20> 17, contre 1.4 si <b>tcl_precision</b> est <20> 12. Tous les interpr<70>teurs dans un processus partagent une seule valeur<b> tcl_precision</b>: la changer pour un interpr<70>teur affectera tous les autres interpr<70>teurs. N<>anmoins, les interpr<70>teur s<>rs ne sont pas autoris<69> <20> modifier la variable. /DD>
<DT><br><b>tcl_rcFileName</b>
</DT><DD>Cette variable est utilis<69>e pendant l'initialisation pour indiquer le nom d'un fichier de d<>marrage sp<73>cifique <20> l'utilisateur. Si elle est fix<69>e par l'initialisation sp<73>cifique <20> l'application, alors le code Tcl de d<>marrage v<>rifiera l'existence de ce fichier et le <A HREF="163.htm"><b>source</b></A> s'il existe. Par exemple, pour <A HREF="318.htm"><b>wish</b></A> la variable est fix<69>e <20> <b>~/.wishrc</b> sous Unix et <b>~/wishrc.tcl</b> sous Windows.</DD>
<DT><br><b>tcl_rcRsrcName</b>
</DT><DD>Cette variable est utilis<69>e seulement sur les syst<73>mes Macintosh. La variable est utilis<69>e pendant l'initialisation pour indiquer le nom d'une resource <b>TEXT</b> sp<73>cifique <20> l'utilisateur localis<69>e dans les resource forks de l'application ou de l'extension. Si elle est fix<69>e par l'initialisation sp<73>cifique <20> l'application, alors le code Tcl de d<>marrage v<>rifiera l'existence de cette resource et la <A HREF="163.htm"><b>source</b></A> si elle existe. Par exemple, l'application Macintosh <A HREF="318.htm"><b>wish</b></A> a la variable fix<69>e <20> <b>tclshrc</b>.</DD>
<DT><br><b>tcl_traceCompile</b>
</DT><DD>La valeur de cette variable peut <20>tre fix<69>e pour contr<74>ler combien d'information de tra<72>age est affich<63>e pendant la compilation du bytecode. Par d<>faut, tcl_traceCompile est <20> z<>ro et aucune information n'est affich<63>e. Fixer tcl_traceCompile <20> 1 g<>n<EFBFBD>re une ligne sur la sortie standard chaque fois qu'une fonction ou commande de premier niveau est compil<69>e. La fixer <20> 2 g<>n<EFBFBD>re un listing d<>taill<6C> sur la sortie standard des instructions bytecode <20>mises pendant toute la compilation. Cette variable est utile pour rechercher des probl<62>mes suspect<63>s avec le compilateur Tcl. Elle est aussi parfois utile pour la conversion de code existant en Tcl8.0.</DD>
<DT><br><b>tcl_traceExec</b>
</DT><DD>La valeur de cette variable peut <20>tre fix<69>e pour contr<74>ler combien d'information de tra<72>age est affich<63>e pendant l'ex<65>cution du bytecode. Par d<>faut, tcl_traceExec est <20> z<>ro et aucune information n'est affich<63>e. Fixer tcl_traceExec <20> 1 g<>n<EFBFBD>re une ligne sur la sortie standard <20> chaque appel d'une fonction Tcl. La fixer <20> 2 g<>n<EFBFBD>re une ligne de sortie chaque fois qu'une commande Tcl est appel<65>e, qui contient le nom de la commande et ses arguments. La fixer <20> 3 produit une trace d<>taill<6C>e montrant le r<>sultat de l'ex<65>cution chaque instruction bytecode. Notez que quand tcl_traceExec est <20> 2 ou <20> 3, les commandes tel que set et incr qui ont <20>t<EFBFBD> enti<74>rement remplac<61>es par une s<>quence d'instructions bytecode ne sont pas montr<74>es. Fixer cette variable est utile pour rechercher des probl<62>mes suspect<63>s avec le compilateur et l'interpr<70>teur Tcl. Elle est aussi parfois utile pour la conversion de code existant en Tcl8.0.</DD>
<DT><br><b>tcl_wordchars</b>
</DT><DD>La valeur de cette variable est une expression rationelle qui peut <20>tre fix<69>e pour contr<74>ler ce qui est consider<65> comme des caract<63>res &quot;mot&quot;, pour des utiisations comme la selection d'un mot par double-click dans le texte dans Tk. Il est d<>pendant de la plateforme. Sous Windows, il est par d<>faut de <b>&#92;S</b>, signifiant tout sauf le caract<63>re espace Unicode Autrement il est par d<>faut de <b>&#92;w</b>, qui est tout caract<63>re Unicode (nombre, lettre, ou underscore).</DD>
<DT><br><b>tcl_nonwordchars</b>
</DT><DD>La valeur de cette variable est une expression rationelle qui peut <20>tre fix<69>e pour contr<74>ler ce qui est consider<65> comme des caract<63>res &quot;non-mot&quot;, pour des utilisations comme la selection d'un mot par double-click dans le texte dans Tk. Il est d<>pendant de la plateforme Sous Windows, il est par d<>faut de <b>&#92;s</b>, signifiant tout caract<63>re espace Unicode Autrement il est par d<>faut de <b>&#92;W</b>, qui est tout sauf un caract<63>re Unicode (nombre, lettre, ou underscore).</DD>
<DT><br><b>tcl_version</b>
</DT><DD>Quand un interpr<70>teur est cr<63><72> Tcl initialise cette variable pour recevoir le num<75>ro de version de cette version de Tcl sous la forme <i>x.y</i>. Les changements de <i>x</i> repr<70>sentent les changements majeurs avec probable incompatibilit<69>s et les changements de <i>y</i> repr<70>sentent les petites am<61>liorations et les corrections de bugs qui conservent une compatibilit<69> ascendante. La valeur de cette variable est renvoy<6F> par la commande <b>info tclversion</b></DD>
</DL>
</div><br>
<div>Derni<EFBFBD>re r<>vision: 8.0</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="169.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="171.htm"><b>Suivant</b></A>
</div>
</BODY></HTML>

18
hlp/fr/tcl/tell.htm Normal file
View File

@@ -0,0 +1,18 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>tell&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">tell - Retourne la position courante du curseur dans un canal ouvert
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>tell </b><i>channelId</i>&nbsp; <br>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Renvoie une cha<68>ne enti<74>re donnant la position courante du curseur dans<i> channelId</i> Cette valeur renvoy<6F>e est un offset d'octet qui peut <20>tre transmise <20> <A HREF="160.htm"><b>seek</b></A> de mani<6E>re <20> fixer le canal <20> une position particuli<6C>re. Notez que cette valeur est en terme d'octets, pas de caract<63>res comme <A HREF="151.htm"><b>read</b></A>. La valeur renvoy<6F>e est -1 pour les canaux qui ne supportent pas la recherche </div><br>
<div>Derni<EFBFBD>re r<>vision: 8.1</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="170.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="172.htm"><b>Suivant</b></A></div>
</BODY></HTML>

19
hlp/fr/tcl/time.htm Normal file
View File

@@ -0,0 +1,19 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">time - chronom<6F>tre l'ex<65>cution d'un script
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>time </b><i>script</i> ?<i>count</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande appelera l'interpr<70>teur Tcl <i>count</i> fois <20> <20>valuer <i>script</i> (ou une fois si <i>count</i> n'est pas sp<73>cifi<66>) Elle retournera ensuite une cha<68>ne de la forme </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>503 microseconds per iteration</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">ce qui indique le temps moyen requis par it<69>ration, en microsecondes. Time est mesur<75> en temps <20>coul<75>, pas en temps CPU </div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="171.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="173.htm"><b>Suivant</b></A></div>
</BODY></HTML>

44
hlp/fr/tcl/trace.htm Normal file
View File

@@ -0,0 +1,44 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>trace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">trace - suivre l'acc<63>s aux variables</div>
<div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>trace </b><i>option</i> ?<i>arg arg ...</i>?&nbsp;
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande provoque l'ex<65>cution de certaines commandes Tcl quand certaines op<6F>rations sont appel<65>es. Actuellement, seule la trace de variables est mise en place. Les <i>options</i> valides (qui peuvent <20>tre abr<62>g<EFBFBD>es) sont:
<DL>
<DT><b>trace variable </b><i>name ops command</i></DT><DD>Provoque l'<27>x<EFBFBD>cution de la commande <i>command</i> <20> chaque fois que la variable <i>name</i> est acc<63>d<EFBFBD>e par un des moyens indiqu<71> par <i>ops</i>. <i>Name</i> peut faire r<>f<EFBFBD>rence <20> une variable simple, un <20>l<EFBFBD>ment d'un tableau , ou un tableau dans son entier (c'est <20> dire que&nbsp; <i>name</i> peut juste <20>tre le nom d'un tableau, sans parenth<74>ses d'index). Si <i>name</i> se r<>f<EFBFBD>re <20> un tableau entier, alors <i>command</i> est appel<65>e pour chaque manipulation d'un <20>l<EFBFBD>ment du tableau. Si la variable n'existe pas, elle sera cr<63><72>e mais n'aura pas de valeur, donc elle sera visible par les requ<71>tes <b>namespace which</b>, mais pas par les requ<71>tes <b>info exists</b>.<br>
<i>Ops </i>indique quelles op<6F>rations sont suivies, et comprend une ou plusieurs des lettres suivantes:
<DL>
<DT><b>r</b></DT><DD>Appelle <i>command </i><EFBFBD> chaque fois que la variable est lue.</DD>
<DT><b>w</b></DT><DD>Appelle <i>command</i> <20> chaque fois que la variable est <20>crite.
</DD>
<DT><b>u</b></DT><DD>Appelle <i>command</i> <20> chaque fois que la variable est annul<75>e. Les variables peuvent <20>tre annul<75>es explicitement avec la commande <b><u>unset</u></b>, ou implicitement <20> la fin des proc<6F>dures (toutes leurs variables locales sont annul<75>es). Les variables sont aussi annul<75>es quand des interpr<70>teurs sont d<>truits, mais les commandes de trace ne seront pas appel<65>es parce qu'il n'y aura pas d'interpr<70>teur pour les <20>x<EFBFBD>cuter.
</DD>
</DL><br>
Quand la trace se d<>clenche, trois arguments sont ajout<75>s <20> la fin de <i>command</i> , de telle sorte que la commande est r<>ellement appel<65>e comme suit:<br>
<i>command name1 name2 op</i><br>
<i>Name1</i> et <i>name2</i> donnent le(s) nom(s) pour la variable acc<63>d<EFBFBD>e: si la variable est scalaire, alors <i>name1</i> donne le nom de la variable et <i>name2</i> est une cha<68>ne vide; si la variable est un <20>l<EFBFBD>ment de tableau, <i>name1</i> donne le nom du tableau et <i>name2</i> l'index dans le tableau; si un tableau entier est d<>truit et que la trace <20>tait enregistr<74>e sur la totalit<69> du tableau et non sur un seul <20>l<EFBFBD>ment, alors <i>name1</i> donnera le nom du tableau et <i>name2</i> une cha<68>ne vide. <i>Name1</i> et <i>name2</i> ne sont pas n<>cessairement les m<>mes noms que celui utilis<69> dans la commande <b>trace variable</b>: la commande <b><u>upvar</u></b> permet <20> une proc<6F>dure de r<>f<EFBFBD>rencer une variable sous un nom diff<66>rent. <i>Op</i> indique quelle op<6F>ration est effectu<74>e sur la variable, et est l'une des trois lettres <b>r</b>, <b>w</b> ou <b>u</b> qui sont d<>finies plus haut.<br>
<i>Command </i>s'<27>x<EFBFBD>cute dans le m<>me contexte que le code qui a appel<65> l'op<6F>ration trac<61>e: si la variable <20>tait acc<63>d<EFBFBD>e comme partie d'une proc<6F>dure Tcl, alors <i>command</i> aura acc<63>s aux m<>mes variables locales que le code de la proc<6F>dure. Ce contexte peut <20>tre diff<66>rent de celui dans lequel la trace a <20>t<EFBFBD> cr<63><72>e. Si <i>command</i> appelle une proc<6F>dure (ce qui est le cas normal) alors la proc<6F>dure devra utiliser <b><u>upvar</u></b> ou <b><u>uplevel</u></b> si elle souhaite acc<63>der <20> la variable trac<61>e.&nbsp; Noter aussi que <i>name1</i> n'est pas n<>cessairement le m<>me que le nom utilis<69> pour d<>finir la trace sur la variable; des diff<66>rences peuvent se produire si l'acc<63>s est fait au travers d'une variable d<>finie par la commande <b><u>upvar</u></b>.<br>
Pour les traces en lecture et en <20>criture, <i>command</i> peut changer la variable pour modifier le r<>sultat de l'op<6F>ration trac<61>e. Si <i>command</i> modifie la valeur de la variable pendant une trace en lecture ou en <20>criture, alors la nouvelle valeur sera retourn<72>e comme <20>tant le r<>sultat de l'op<6F>ration trac<61>e. La valeur de retour de <i>command</i> est ignor<6F>e sauf dans le cas o<> elle retourne une erreur quelconque; dans ce cas l'op<6F>ration trac<61>e renvoie aussi une erreur avec le m<>me message d'erreur que celui renvoy<6F> par la commande appel<65>e par trace (ce m<>canisme peut <20>tre utilis<69> pour mettre en place des variables en lecture seule, par exemple). Pour les traces en <20>criture, <i>command</i> est appel<65>e apr<70>s que la valeur de la variable ait <20>t<EFBFBD> chang<6E>e; elle peut <20>crire une nouvelle valeur dans la variable pour forcer la valeur produite par l'op<6F>ration d'<27>criture. Pour mettre en place des variables en lecture seule, <i>command</i> aura <20> charge de&nbsp; remettre l'ancienne valeur dans la variable. <br>
Pendant que <i>command</i> s'<27>x<EFBFBD>cute durant une trace en lecture ou en <20>criture, les traces sur la variable sont temporairement d<>sactiv<69>es. Cela signifie que les lectures ou les <20>critures appel<65>es par <i>command</i> se produiront directement, sans invoquer <i>command</i>&nbsp; (ni aucune autre trace) une nouvelle fois. Cependant, si <i>command</i> annule la variable, les traces d'annulation seront appel<65>es. <br>
Quand une trace d'annulation est appel<65>e, la variable a d<>j<EFBFBD> <20>t<EFBFBD> d<>truite: elle appara<72>tra comme ind<6E>finie et ne poss<73>dant pas de traces. Si une annulation de variable se produit <20> cause d'une fin de proc<6F>dure, la trace sera appel<65>e dans le contexte de variables de la proc<6F>dure appelante: le contexte de pile de la proc<6F>dure qui s'est finie n'existera plus. Les traces ne seront pas d<>sactiv<69>es pendant les traces d'annulation, donc si une commande de trace d'annulation cr<63>e une nouvelle trace et acc<63>de <20> la variable correspondante, cette commande de trace sera appel<65>e. Les erreurs dans les traces d'annulation sont ignor<6F>es.<br>
S'il y a plusieurs traces sur une variable elles seront appel<65>es selon leur ordre de cr<63>ation, les plus r<>centes en premier. Si une trace renvoie une erreur, les traces suivantes portant sur la m<>me variable ne seront pas appel<65>es. Si un <20>l<EFBFBD>ment de tableau a une trace positionn<6E>e, et qu'il y a aussi une trace positionn<6E>e sur le tableau dans son ensemble, la trace globale est appel<65>e avant celle qui porte sur l'<27>l<EFBFBD>ment seul.<br>
Une fois cr<63><72>e, la trace reste en effet jusqu'<27> ce qu'elle soit retir<69>e au moyen de la commande <b>trace vdelete</b> d<>crite ci-dessous, ou bien jusqu'<27> ce que la variable soit annul<75>e, ou bien jusqu'<27> ce que l'interpr<70>teur soit d<>truit. L'annulation de l'<27>l<EFBFBD>ment d'un tableau retirera toutes les traces sur cet <20>l<EFBFBD>ment, mais ne retirera pas les traces sur l'ensemble du tableau.<br>
Cette commande retourne une cha<68>ne vide.
</DD>
<DT><br><b>trace vdelete </b><i>name ops command</i></DT><DD>S'il existe une trace positionn<6E>e sur la variable <i>name</i> avec les op<6F>rations <i>ops</i> et la commande <i>command</i>, alors la trace est supprim<69>e, de telle sorte que <i>command</i> ne sera plus jamais appel<65>e. Retourne une cha<68>ne vide.</DD>
<DT><br><b>trace vinfo</b> <i>name</i></DT><DD>
Retourne une liste contenant un <20>l<EFBFBD>ment pour chaque trace positionn<6E>e sur la variable name. Chaque <20>l<EFBFBD>ment de la liste est lui-m<>me une liste contenant deux <20>l<EFBFBD>ments, qui sont les <i>ops</i> et <i>command</i> associ<63>es <20> la trace. Si <i>name</i> n'existe pas ou n'a aucune trace positionn<6E>e, le r<>sultat de la commande sera une cha<68>ne vide.
</DD>
</DL>
</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="172.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="174.htm"><b>Suivant</b></A></div>
</BODY></HTML>

19
hlp/fr/tcl/unknown.htm Normal file
View File

@@ -0,0 +1,19 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>unknown&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">unknown- G<>re les tentatives d'utiliser des commandes inexistantes
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>unknown </b><i>cmdName </i>?<i>arg arg ...</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande est appel<65>e par l'interpr<70>teur Tcl chaque fois qu'un script essaie d'appeler une commande qui n'existe pas. L'impl<70>mentation d'<b>unknown</b> ne fait pas partie du noyau Tcl; en fait, c'est une fonction de biblioth<74>que d<>finie par d<>faut quand Tcl d<>marre. Vous pouvez surcharger <b>unknown</b> pour changer sa fonctionalit<69>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si l'interpr<70>teur Tcl rencontre un nom de commande pour lequel il n'y a pas de commande d<>finie, alors Tcl v<>rifie l'existence d'une commande nomm<6D>e <b>unknown</b>. S'il n'y a pas de commande de ce nom, alors l'interpr<70>teur retourne une erreur. Si la commande <b>unknown</b> existe, alors elle est appel<65>e avec les arguments consistant des nom et arguments pleinement-substitu<74>s de la commande originale inexistante. La commande <b>unknown</b> typiquement fait des choses comme chercher <20> travers des r<>pertoires de biblioth<74>que une commande avec le nom <i>cmdName</i>, ou expanser un nom de commande abr<62>g<EFBFBD>, ou ex<65>cuter automatiquement des commandes inconnues en tant que sous-processus. Dans quelques cas (tel que l'expansion d'abr<62>viations) <b>unknown</b> changera l<>g<EFBFBD>rement la commande originale et alors la (re-)ex<65>cutera. Le r<>sultat de la commande <b>unknown</b> est utilis<69> comme r<>sultat de la commande inexistante originale. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">L'impl<70>mentation par d<>faut d'<b>unknown</b> se comporte comme suit. Elle appelle en premier la fonction de biblioth<74>que<A HREF="129.htm"><b> auto_load</b></A> pour charger la commande. Si cela r<>ussit, alors elle ex<65>cute la commande originale avec ses arguments originaux. Si l'auto-load <20>choue alors <b>unknown</b> appelle <A HREF="129.htm"><b>auto_execok</b></A> pour voir si il y a un fichier ex<65>cutable de nom <i>cmd</i>. Si c'est le cas, elle appelle la commande Tcl <A HREF="105.htm"><b>exec</b></A> avec <i>cmd</i> et tout les <i>args</i> comme aguments. Si <i>cmd</i> peut <20>tre auto-ex<65>cut<75>, <b>unknown</b> verifie si la commande a <20>t<EFBFBD> appel<65>e au premier plan et en dehors de quelconque script Si c'est le cas, alors <b>unknown</b> suit deux <20>tapes suppl<70>mentaires. D'abord, elle regarde si <i>cmd</i> a une des trois formes suivantes: <b>!!</b>, <b>!</b><i></i><A HREF="277.htm"><i>event</i></A>, ou <b>^</b><i>old</i><b>^</b><i>new</i>?<b>^</b>?. Si c'est le cas, alors <b>unknown</b> produit des substitutions d'historique de la m<>me fa<66>on que <b>csh</b> pour ces constructions. Finalement, <b>unknown</b> verifie si <i>cmd</i> est une abr<62>viation unique d'une commande Tcl existante. Si c'est le cas, elle expanse le nom de la commande et ex<65>cute la commande avec les arguments originaux. Si aucun des efforts pr<70>c<EFBFBD>dents n'ont pu ex<65>cuter la commande, <b>unknown</b> g<>n<EFBFBD>re une erreur. Si la variable globale <b>auto_noload</b> est d<>finie, alors l'<27>tape auto-load est saut<75>e. Si la variable globale <b>auto_noexec</b> est d<>finie alors l'<27>tape auto-exec est saut<75>e. Sous des circonstances normales la valeur de retour de <b>unknown</b> est la valeur de retour de la commande qui a <20>t<EFBFBD> <20>ventuellement ex<65>cut<75>e.</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="173.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="175.htm"><b>Suivant</b></A></div>
</BODY></HTML>

17
hlp/fr/tcl/unset.htm Normal file
View File

@@ -0,0 +1,17 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>unset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">unset <20> Efface des variables
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>unset </b><i>name </i>?<i>name name ...</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande efface une ou plusieurs variables. Chaque <i>name</i> est un nom de variable, sp<73>cifi<66> d'une des mani<6E>res acceptables par la commande <A HREF="161.htm"><b>set</b></A>. Si un <i>name</i> se ref<65>re <20> un <20>l<EFBFBD>ment d'un tableau alors cet <20>l<EFBFBD>ment est effac<61> sans affecter le reste du tableau. Si un <i>name</i> consiste en un nom de tableau sans index entre parenth<74>ses, alors le tableau entier est effac<61>e. La commande <b>unset</b> retourne une cha<68>ne vide comme r<>sultat. Un erreur se produit si une des variables n'existe pas, et toutes les variables apr<70>s l'inexistante ne sont pas effac<61>es </div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="174.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="176.htm"><b>Suivant</b></A></div>
</BODY></HTML>

21
hlp/fr/tcl/update.htm Normal file
View File

@@ -0,0 +1,21 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>update&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">update - Traite les <20>v<EFBFBD>nements en attente et les callbacks inactifs
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>update</b> ?<b>idletasks</b>?&
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande est utilis<69>e pour mettre l'application &quot;up to date&quot; en entrant dans la boucle d'<27>v<EFBFBD>nement r<>p<EFBFBD>titivement jusqu'a ce que tout <20>v<EFBFBD>nement en attente (incluant les callbacks inactifs ) ait <20>t<EFBFBD> trait<69>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si le mot-cl<63> <b>idletasks</b> est sp<73>cifi<66> comme argument <20> la commande, alors aucun nouveaux <20>v<EFBFBD>nements ou erreurs ne sont trait<69>s seuls les callbacks inactifs sont appel<65>s. Ceci cause le traitement imm<6D>diat des op<6F>rations qui sont normalement diff<66>r<EFBFBD>es, tel que les rafraichissement de l'<27>cran et les calculs de fen<65>trage. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>update idletasks</b> est utile dans les scripts o<> les changements d'<27>tat de l'application ont <20>t<EFBFBD> effectu<74>s et que vous voulez que ces changements apparaissent imm<6D>diatement, plut<75>t que d'attendre que le script soit compl<70>t<EFBFBD>. La plupart des rafraichissement de l'<27>cran sont effectu<74>e comme callbacks inactifs , donc <b>update idletasks</b> provoquera leur ex<65>cution. N<>anmoins, il y a des mises <20> jour qui se produisent seulement en r<>ponse aux <20>v<EFBFBD>nements, tels que ceux d<>clench<63> par les changements de taille de fen<65>tre; ces mises <20> jour ne se produiront pas dans <b>update idletasks</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>update</b> sans options est utile dans les scripts o<> vous effectuez de longs calculs mais o<> vous d<>sirez que l'application r<>ponde aux <20>v<EFBFBD>nements tels que les interactions avec l'utilisateur. Si vous appellez occasionellement <b>update</b> alors l'entr<74>e utilisateur sera trait<69>e pendant l'appel suivant de <b>update</b> </div><br>
<div>Derni<EFBFBD>re r<>vision: 7.5</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="175.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="177.htm"><b>Suivant</b></A></div>
</BODY></HTML>

29
hlp/fr/tcl/uplevel.htm Normal file
View File

@@ -0,0 +1,29 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>uplevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">uplevel - Execute un script dans un cadre de pile diff<66>rent
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>uplevel </b>?<i>level</i>?<i> arg </i>?<i>arg ...</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Tous les arguments <i>arg</i> sont concat<61>n<EFBFBD>s comme si ils avait <20>t<EFBFBD> transmis <20> <A HREF="98.htm"><b>concat</b></A>; le r<>sultat est alors <20>valu<6C> dans le contexte de variable indiqu<71> par <i>level</i> <b>Uplevel</b> retourne le r<>sultat de cette <20>valuation . </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si <i>level</i> est un entier alors cela donne la distance (au-dessus de la pile d'appel de la fonction) <20> franchir avant l'ex<65>cution de la commande Si <i>level</i> consiste en <b>#</b> suivi par un nombre alors le nombre donne un num<75>ro absolu de niveau Si <i>level</i> est omis alors il est par d<>faut de <b>1</b> <i>Level</i> ne peut pas avoir la valeur par d<>faut si le premier argument <i>command</i> commence avec un chiffre ou un <b>#</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Par exemple, supposez que la fonction <b>a</b> a <20>t<EFBFBD> appel<65>e au premier plan, et qu'elle a appel<65> <b>b</b>, et que <b>b</b> appel<65> <b>c</b>. Supposez que <b>c</b> appelle la commande<b> uplevel</b> Si <i>level</i> est <b>1</b> ou <b>#2</b>&nbsp; ou omis, alors la commande sera ex<65>cut<75>e dans le contexte de variable de <b>b</b> Si <i>level</i> est <b>2</b> ou <b>#1</b> alors la commande sera ex<65>cut<75>e dans le contexte de variable de <b>a</b>. Si <i>level</i> est <b>3</b> ou <b>#0</b> alors la commande sera ex<65>cut<75> au premier plan (seulement les variables globales seront visibles). </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>uplevel</b> cause la disparition de la fonction appelante de la pile d'appel pendant la que commande est ex<65>cut<75>e. Dans l'exemple ci-dessus , supposez que <b>c</b> appelle la commande </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>uplevel 1 &#123;set x 43; d}</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">o<EFBFBD> <b>d</b> est une autre fonction Tcl La commande <A HREF="161.htm"><b>set</b></A> modifiera la variable <b>x</b> dans le contexte de<b> b</b>, et <b>d</b> s'ex<65>cutera au niveau 3, comme si elle etait appel<65>e de <b>b</b>. Si elle ex<65>cute ensuite la commande </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>uplevel &#123;set x 42}</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">alors la commande <A HREF="161.htm"><b>set</b></A> modifiera la m<>me variable <b>x</b> dans le contexte de<b> b</b>: la fonction <b>c</b> n'apparait pas <20>tre sur la pile d'appel quand <b>d</b> s'ex<65>cute. La commande &quot;<b>info level</b>&quot; peut <20>tre employ<6F>e pour obtenir le niveau de la fonction courante. </div>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>Uplevel</b> rend possible l'impl<70>mentation de nouvelles structures de contr<74>le comme fonctions Tcl (par exemple, <b>uplevel</b> pourrait <20>tre utilis<69>e pour impl<70>menter la construction <A HREF="181.htm"><b>while</b></A> comme fonction Tcl). </div>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>namespace eval</b> est une autre fa<66>on (outre l'appel de fonction) de modifier le contexte de nom Tcl. Elle ajoute un cadre d'appel <20> la pile pour repr<70>senter le contexte namespace. Ceci signifie que chaque commande <b>namespace eval</b> compte comme un autre niveau d'appel pour les commandes <b>uplevel</b> et <A HREF="178.htm"><b>upvar</b></A>. Par exemple, <b>info level 1</b> renverra une liste d<>crivant une commande qui est soit l'appel de fonction le plus externe ou la commande<b> namespace eval</b> la plus externe. Egalement, <b>uplevel #0</b> <20>value un script au premier plan dans le namespace le plus externe (le namespace global )
</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div><A HREF="141.htm">namespace</A>(n)</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="177.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="178.htm"><b>Suivant</b></A></div>
</BODY></HTML>

44
hlp/fr/tcl/upvar.htm Normal file
View File

@@ -0,0 +1,44 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>upvar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">upvar - Cr<43>e un lien vers une variable dans un cadre de pile diff<66>rent
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>upvar </b>?<i>level</i>? <i>otherVar myVar </i>?<i>otherVar myVar </i>...?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande pr<70>pare une ou plusieurs variables locales dans la fonction courante <20> se referer <20> des variables dans un appel de fonction externe ou <20> des variables globales. <i>Level</i> peut avoir quelconque des formes permises pour la commande<A HREF="177.htm"><b> uplevel</b></A>, et peut <20>tre omis si la premi<6D>re lettre de la premi<6D>re <i>otherVar</i> n'est pas <b>#</b> ou un chiffre (il est par d<>faut de <b>1</b>). Pour chaque argument<i> otherVar</i>, <b>upvar</b> rend la variable de ce nom dans le cadre de fonction indiqu<71> par <i>level</i> (ou au niveau global, si <i>niveau</i> est <b>#0</b>) accessible dans la fonction courante par le nom donn<6E> dans l'argument correspondant <i>myVar</i>. Le nom de variable <i>otherVar</i> n'a pas besoin d'exister <20> l'instant de l'appel il sera cr<63><72> la premi<6D>re fois que <i>myVar</i> est r<>f<EFBFBD>renc<6E>e, juste comme une variable ordinaire. Il ne doit pas exister une variable du nom de <i>myVar</i> <20> l'instant o<> <b>upvar</b> est appel<65>e. <i>MyVar</i> est toujours trait<69> comme le nom d'une variable, pas un <20>l<EFBFBD>ment de tableau. M<>me si le nom ressemble <20> un <20>l<EFBFBD>ment detableau, tel que <b>a(b)</b>, une variable ordinaire est cr<63><72>e. <i>OtherVar</i> peut se referer <20> une variable scalaire , un tableau, ou un <20>l<EFBFBD>ment de tableau. <b>Upvar</b> retourne une cha<68>ne vide. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>upvar</b> simplifie l'impl<70>mentation d'appel-par-nom des fonctions et facilite aussi la cr<63>ation de structures de contr<74>le en tant que fonctions Tcl. Par exemple, consid<69>rez les fonctions suivantes: </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>proc add2 name &#123;<br>
</b><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;upvar &#36;name x<br>
</b><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set x &#91;expr &#36;x+2]<br>
</b><b>}</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>Add2</b> est appel<65>e avec un argument donnant le nom d'une variable, et elle ajoute deux <20> la valeur de cette variable. Bien que <b>add2</b> aurait pu <20>tre impl<70>ment<6E>e en utilisant <A HREF="177.htm"><b>uplevel</b></A> au lieu de <b>upvar</b>, <b>upvar</b> simplifie l'acc<63>s aux variables de <b>add2</b> dans le cadre de la fonction appelante. </div>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>namespace eval</b> est une autre fa<66>on (en plus des appels de fonction)de changer le contexte de nom Tcl. Elle ajoute un cadre d'appel <20> la pile pour repr<70>senter le contexte namespace. Ceci signifie que chaque commande <b>namespace eval</b> compte comme un niveau d'appel suppl<70>mentaire pour les commandes<A HREF="177.htm"><b> uplevel</b></A> et <b>upvar</b>. Par exemple, <b>info level 1</b> renverra une liste d<>crivant une commande qui est soit l'appel de fonction le plus externe ou la commande <b>namespace eval </b>la plus externe. Egalement, <b>uplevel #0</b> <20>value un script au premier plan dans le namespace le plus externe (le namespace global ). </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si une variable upvar est effac<61>e (ex. <b>x</b> dans <b>add2</b> plus haut), l'op<6F>ration <A HREF="175.htm"><b>unset</b></A> affecte la variable li<6C>e, pas la variable upvar. Il n'y a aucun moyen d'effacer une variable upvar except<70> en sortant de la fonction dans lequel elle est d<>finie. N<>anmoins, il est possible de recibler une variable upvar par l'ex<65>cution d'une autre commande<b> upvar</b>.
</div><br>
<div><b>Traces et upvar</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Upvar interagit avec les traces d'une mani<6E>re directe mais qui peut <20>tre inattendue. Si une trace de variable est d<>finie sur <i>otherVar</i>, cette trace sera d<>clench<63>e par les actions impliquant <i>myVar</i>. N<>anmoins, <20> la fonction trace sera transmis le nom de <i>myVar</i>, plut<75>t que le nom de <i>otherVar</i>. Ainsi, la sortie du code suivant sera <b>localVar</b> plut<75>t que <b>originalVar</b>: </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>proc traceproc &#123; name index op } &#123;<br>
</b><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts &#36;name<br>
</b><b>}<br>
</b><b>proc setByUpvar &#123; name value } &#123;<br>
</b><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;upvar &#36;name localVar<br>
</b><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set localVar &#36;value<br>
</b><b>}<br>
</b><b>set originalVar 1<br>
</b><b>trace variable originalVar w traceproc<br>
</b><b>setByUpvar originalVar 2<br>
</b><b>}</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;"> Si <i>otherVar</i> se ref<65>re <20> un <20>l<EFBFBD>ment de tableau, alors les traces de variables fix<69>e pour le tableau entier ne seront pas appel<65>es quand <i>myVar</i> est acc<63>d<EFBFBD>e (mais les traces sur un <20>l<EFBFBD>ment particulier pourront <20>tre appel<65>es). En particulier, si le tableau est <b>env</b>, alors les changement faits <20> <i>myVar</i> ne seront pas transmis au sous-processus correctement
</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div><A HREF="141.htm">namespace</A>(n)</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="177.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="179.htm"><b>Suivant</b></A>
</div>
</BODY></HTML>

24
hlp/fr/tcl/variable.htm Normal file
View File

@@ -0,0 +1,24 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>variable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">variable - cr<63>e et initialise une variable namespace
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>variable </b>?<i>name value...</i>? <i>name </i>?<i>value</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande est normalement utilis<69>e <20> l'int<6E>rieur d'une commande <b>namespace eval</b> pour cr<63>er une ou plusieurs variables <20> l'int<6E>rieur un namespace. Chaque variable <i>name</i> est initialis<69>e avec <i>value</i>. La <i>value</i> pour la derni<6E>re variable est optionnelle. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si une variable <i>name</i> n'existe pas, elle est cr<63><72>e. Dans ce cas, si <i>value</i> est sp<73>cifi<66>e, elle est assign<67>e <20> la variable nouvellement cr<63><72>e. Si aucune <i>value</i> n'est sp<73>cifi<66>e, la nouvelle variable est ind<6E>finie. Si la variable existe d<>j<EFBFBD>, elle est fix<69>e <20> <i>value</i> si <i>value</i> est sp<73>cifi<66> ou laiss<73>e inchang<6E>e si aucune <i>value</i> n'est donn<6E>e. Normalement, <i>name</i> est non qualifi<66> (n'inclut pas les noms des eventuels namespaces contenant), et la variable est cr<63><72>e dans le namespace courant. Si <i>name</i> inclut des qualificateurs namespace quelconque, la variable est cr<63><72>e dans le namespace sp<73>cifi<66>. Si la variable n'est pas d<>finie, elle sera visible pour la commande<b> </b><b>namespace which</b>, mais pas pour <b>info exists</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si la commande <b>variable</b> est ex<65>cut<75>e dans une fonction Tcl, elle cr<63>e des variables locales li<6C>es aux variables namespace correspondantes. De cette fa<66>on la commande <b>variable</b> ressemble <20> la commande<A HREF="120.htm"><b> global</b></A>, bien que la commande <A HREF="120.htm"><b>global</b></A> cr<63>e des liens seulement vers les variables dans le namespace global . Si quelconque <i>value</i>s sont indiqu<71>es, elles sont utilis<69>es pour modifier les valeurs des variables namespace associ<63>es. Si une variable namespace n'existe pas, elle est cr<63><72>e et optionellement initialis<69>e. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Un argument <i>name</i> ne peut r<>f<EFBFBD>rencer un <20>l<EFBFBD>ment <20> l'int<6E>rieur un tableau. Par contre, <i>name</i> devra r<>f<EFBFBD>rencer le tableau entier, et la <i>value</i> d'initialisation sera ignor<6F>e. Apr<70>s que la variable ait <20>t<EFBFBD> declar<61>e, les <20>l<EFBFBD>ments <20> l'int<6E>rieur du tableau peuvent <20>tre fix<69>s en utilisant les commandes ordinaires <A HREF="161.htm"><b>set</b></A> ou <A HREF="89.htm"><b>array</b></A>
</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><A HREF="120.htm">global</A>(n), <A HREF="141.htm">namespace</A>(n)</div><br>
<div>Derni<EFBFBD>re r<>vision: 8.0</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="178.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="180.htm"><b>Suivant</b></A></div>
</BODY></HTML>

20
hlp/fr/tcl/vwait.htm Normal file
View File

@@ -0,0 +1,20 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>vwait&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">vwait - Traite les <20>v<EFBFBD>nements jusqu'a ce qu'une variable soit <20>crite
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>vwait</b> <i>varName</i>&nbsp; <br>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande entre dans la boucle d'<27>v<EFBFBD>nement Tcl pour traiter les <20>v<EFBFBD>nements, bloquant l'application si aucun <20>v<EFBFBD>nement n'est pr<70>t. Elle continue le traitement des <20>v<EFBFBD>nements jusqu'a ce que quelque gestionnaire d'<27>v<EFBFBD>nement fixe la valeur de la variable <i>varName</i>. Une fois que <i>varName</i> <20> <20>t<EFBFBD> fix<69>e, la commande <b>vwait</b> renverra aussit<69>t que le gestionnaire d'<27>v<EFBFBD>nement qui a modifi<66> <i>varName</i> se termine. <i>varName</i> doit <20>tre globalement visible (soit avec un appel de <A HREF="120.htm"><b>global</b></A> pour <i>varName</i>, ou avec la sp<73>cification du chemin namespace complet). </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Dans quelques cas la commande <b>vwait</b> ne peut pas retourner imm<6D>diatement apr<70>s que <i>varName</i> soit fix<69>e. Ceci peut arriver si le gestionnaire d'<27>v<EFBFBD>nement qui fixe <i>varName</i> ne se termine pas imm<6D>diatement. Par exemple, si un gestionnaire d'<27>v<EFBFBD>nement fixe <i>varName</i> et ensuite appelle lui-m<>me <b>vwait</b> pour attendre une variable diff<66>rente, alors il peut ne pas retourner pendant longtemps. Durant ce temps le <b>vwait</b> de premier plan est bloqu<71> en attendant que le gestionnaire d'<27>v<EFBFBD>nement soit compl<70>t<EFBFBD>, donc il ne peut pas retourner non plus </div><br>
<div>Derni<EFBFBD>re r<>vision: 8.0</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="179.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="180.htm"><b>Suivant</b></A>
</div>
</BODY></HTML>

23
hlp/fr/tcl/while.htm Normal file
View File

@@ -0,0 +1,23 @@
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>while&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">while - Execute un script r<>p<EFBFBD>titivement tant qu'une condition est rencontr<74>e
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>while </b><i>test body</i>
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>while</b> <20>value <i>test</i> comme expression (de la m<>me fa<66>on que <A HREF="107.htm"><b>expr</b></A> <20>value ses arguments). La valeur de l'expression doit une valeur bool<6F>enne correcte; si c'est la valeur true alors <i>body</i> est ex<65>cut<75> par transmission <20> l'interpr<70>teur Tcl. Une fois que <i>body</i> a <20>t<EFBFBD> ex<65>cut<75> alors <i>test</i> est <20>valu<6C> de nouveau, et le processus recommence jusqu'a ce que <20>ventuellement <i>test</i> <20>value <20> une valeur bool<6F>enne false. Des commandes <b>continue</b> peuvent <20>tre ex<65>cut<75>es <20> l'interieur de <i>body</i> pour terminer l'it<69>ration courante de la boucle, et des commandes <A HREF="92.htm"><b>break</b></A> peuvent <20>tre ex<65>cut<75>es <20> l'interieur <i>body</i> pour provoquer la fin imm<6D>diate de la commande<i> </i><b>while</b>. La commande <b>while</b> retourne toujours une cha&icirc;ne vide. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Note: <i>test</i> devra presque toujours <20>tre entour<75>e d'accolades Sinon, les substitutions de variable seront faites avant que la commande <b>while</b> d<>marre l'ex<65>cution, ce qui signifie que le changement de la variable fait par le corps de la boucle ne sera pas consider<65> dans l'expression. Ceci donnera souvent une boucle infinie. Si <i>test</i> est entour<75>e d'accolades, les substitutions de variables sont retard<72>es jusqu'a ce que l'expression soit <20>valu<6C>e (avant chaque it<69>ration de boucle), donc les changements de la variables seront visible. Comme exemple, essayez le script suivant avec et sans accolades autour de <b>&#36;x&lt;10</b>: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">set x 0<br>
while &#123;&#36;x&lt;10} &#123;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts &quot;x est &#36;x&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;incr x<br>
}</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="180.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A></div>
</BODY></HTML>