1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
<?xml version="1.0" encoding="UTF-8"?>
<!--
* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
* Copyright (C) XXXX-2008 - INRIA
*
* This file must be used under the terms of the CeCILL.
* This source file is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at
* http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
*
-->
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" version="5.0-subset Scilab" xml:lang="fr" xml:id="execstr">
<info>
<pubdate>$LastChangedDate$</pubdate>
</info>
<refnamediv>
<refname>execstr</refname>
<refpurpose> exécution d'instructions Scilab contenues dans des chaînes de caractères</refpurpose>
</refnamediv>
<refsynopsisdiv>
<title>Séquence d'appel</title>
<synopsis>execstr(instr)
ierr=execstr(instr,'errcatch' [,msg])</synopsis>
</refsynopsisdiv>
<refsection>
<title>Paramètres</title>
<variablelist>
<varlistentry>
<term>instr </term>
<listitem>
<para>vecteur de chaînes de caractères</para>
</listitem>
</varlistentry>
<varlistentry>
<term>ierr </term>
<listitem>
<para>entier, 0 ou numéro de l'erreur</para>
</listitem>
</varlistentry>
<varlistentry>
<term>msg </term>
<listitem>
<para>chaîne de caractères (<literal>'m'</literal> ou <literal>'n'</literal>). La valeur
par défaut est <literal>'n'</literal>. </para>
</listitem>
</varlistentry>
</variablelist>
</refsection>
<refsection>
<title>Description</title>
<para>Exécute les instructions Scilab données dans l'argument
<literal>instr</literal>. </para>
<para>Note : les instructions ne doivent pas comporter de marques de suite (..). </para>
<para> </para>
<para>Si 'errcatch' n'est pas présent dans les arguments, les erreurs sont contrôlées comme d'habitude.</para>
<para>Si 'errcatch' est présent dans les arguments, et qu'une erreur est
rencontrée lors de l'évaluation d'un élément de <literal>instr</literal>,
<literal>execstr</literal> ne produit aucun message d'erreur, mais stoppe
l'exécution des instructions stockées dans <literal>instr</literal> (au point
où l'erreur s'est produite), et renvoie dans <literal>ierr</literal> le numéro
de l'erreur. Dans ce cas l'affichage du message d'erreur est contrôlé par
l'option <literal>msg</literal> : </para>
<variablelist>
<varlistentry>
<term>"m"</term>
<listitem>
<para>le message d'erreur est affiché et enregistré</para>
</listitem>
</varlistentry>
<varlistentry>
<term>"n"</term>
<listitem>
<para>le message d'erreur n'est pas affiché mais il est enregistré
(voir <literal>lasterror</literal>). Il s'agit du comportement par
défaut. </para>
</listitem>
</varlistentry>
</variablelist>
<para> ierr=execstr(instr,'errcatch') peut gérer les erreurs de syntaxes. Ceci
peut être utile pour évaluer les instructions obtenues par une requète à
l'utilisateur (interface homme-machine).</para>
</refsection>
<refsection>
<title>Exemples</title>
<programlisting role="example"><![CDATA[
execstr('a=1') // affecte a=1.
execstr('1+1') // ne fait rien de particulier (alors que evstr('1+1') renvoie 2)
execstr(['if %t then';
' a=1';
' b=a+1';
'else'
' b=0'
'end'])
// récupération des erreurs d'exécution
execstr('a=zzzzzzz','errcatch')
execstr('a=zzzzzzz','errcatch','m')
// récupération des erreurs de syntaxe
execstr('a=1?02','errcatch')
lasterror(%t)
execstr('a=[1 2 3)','errcatch')
lasterror(%t)
// variable1 n'existe pas
if execstr('variable1;','errcatch')<>0 then disp("Declenche une erreur"),end
// variable2 existe ... Pas d'erreur dans execstr
variable2=[2,3];
if execstr('variable2;','errcatch')<>0 then
disp("Declenche une erreur");
else
disp("execstr est content");
end
]]></programlisting>
</refsection>
<refsection>
<title>Voir Aussi</title>
<simplelist type="inline">
<member>
<link linkend="try">try</link>
</member>
<member>
<link linkend="errclear">errclear</link>
</member>
<member>
<link linkend="iserror">iserror</link>
</member>
<member>
<link linkend="whereami">whereami</link>
</member>
<member>
<link linkend="execstr">execstr</link>
</member>
</simplelist>
</refsection>
</refentry>
|