Vous voulez de l'aide ? Postez ici
lg256
Posts: 15 Joined: 24 Oct 2013, 15:14
Post
by lg256 » 15 Mar 2014, 14:46
Bonjour je me demandais pourquoi ce type de code donne une boucle infinie
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<scriptfile>
<settings program="actionaz" version="3.7.0" scriptVersion="1.0.0" os="Windows"/>
<actions>
<action name="ActionCallProcedure" version="1.0.0"/>
<action name="ActionLoop" version="1.0.0"/>
<action name="ActionEndProcedure" version="1.0.0"/>
<action name="ActionMessageBox" version="1.0.0"/>
<action name="ActionVariable" version="1.0.0"/>
<action name="ActionCode" version="1.0.0"/>
<action name="ActionBeginProcedure" version="1.0.0"/>
</actions>
<parameters/>
<script pauseBefore="0" pauseAfter="0">
<action name="ActionVariable">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<exception id="32" action="0" line=""/>
<parameter name="colorValue">
<subParameter name="value" code="0">::</subParameter>
</parameter>
<parameter name="variable">
<subParameter name="value" code="0">a</subParameter>
</parameter>
<parameter name="type">
<subParameter name="value" code="0">integer</subParameter>
</parameter>
<parameter name="value">
<subParameter name="value" code="0">0</subParameter>
</parameter>
<parameter name="positionValue">
<subParameter name="value" code="0">:</subParameter>
</parameter>
</action>
<action name="ActionCallProcedure">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="name">
<subParameter name="value" code="0">a</subParameter>
</parameter>
</action>
<action name="ActionCode">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="code">
<subParameter name="value" code="1">a++;</subParameter>
</parameter>
</action>
<action name="ActionMessageBox">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="windowIcon">
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="message">
<subParameter name="value" code="0">$a</subParameter>
</parameter>
<parameter name="title">
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="textMode">
<subParameter name="value" code="0">automatic</subParameter>
</parameter>
<parameter name="ifYes">
<subParameter name="line" code="0"></subParameter>
<subParameter name="action" code="0">do_nothing</subParameter>
</parameter>
<parameter name="customIcon">
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="icon">
<subParameter name="value" code="0">none</subParameter>
</parameter>
<parameter name="type">
<subParameter name="value" code="0">ok</subParameter>
</parameter>
<parameter name="ifNo">
<subParameter name="line" code="0"></subParameter>
<subParameter name="action" code="0">do_nothing</subParameter>
</parameter>
</action>
<action name="ActionLoop">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="line">
<subParameter name="value" code="0">002</subParameter>
</parameter>
<parameter name="count">
<subParameter name="value" code="0">5</subParameter>
</parameter>
</action>
<action name="ActionBeginProcedure">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="name">
<subParameter name="value" code="0">a</subParameter>
</parameter>
</action>
<action name="ActionEndProcedure">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
</action>
</script>
</scriptfile>
Jmgr
Admin
Posts: 1651 Joined: 07 Dec 2005, 15:45
Contact:
Post
by Jmgr » 17 Mar 2014, 22:39
Salut, j'ai l'impression que c'est un bug. Apparemment l'action de boucle ne se remet pas à 0 lorsque la procédure retourne à l'action qui suit l'appel de la procédure. Merci de l'avoir signalé.
"My software never has bugs. It just develops random features."
francois
Posts: 460 Joined: 18 Oct 2010, 10:33
Location: France
Post
by francois » 19 Mar 2014, 07:07
Bonjour,
Suite au bug signalé j'ai fait un petit script :
//=======================
for(i=1;i<3;i=i+1)
{
Console.print("Dans boucle, avant appel procédure ")
Script.callProcedure('toto');
Console.print("Dans boucle, après appel procédure ")
}
Console.print("Après boucle ")
//======================
La procédure toto contient une ligne :
Console.print("Dans la procédure")
Le résultat :
===============================
"Dans boucle avant appel procédure "
"Dans boucle après appel procédure "
"Dans boucle avant appel procédure "
"Dans boucle après appel procédure "
"Dans boucle avant appel procédure "
"Dans boucle après appel procédure "
"après boucle "
"Dans la procédure "
===============================
Francois
Jmgr
Admin
Posts: 1651 Joined: 07 Dec 2005, 15:45
Contact:
Post
by Jmgr » 19 Mar 2014, 10:32
Ça par contre, c'est normal. Comme l'appel de procédure est une nouvelle action elle ne sera effective qu'à la fin de l'action actuelle. Ce n'est peut-être pas super intuitif, mais je ne peux pas vraiment faire autrement, à moins d'autoriser l'exécution de plusieurs actions en même temps. (et ça c'est vraiment compliqué et générateur de bugs)
"My software never has bugs. It just develops random features."
lg256
Posts: 15 Joined: 24 Oct 2013, 15:14
Post
by lg256 » 12 Jun 2014, 12:34
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<scriptfile>
<settings program="actionaz" version="3.8.0" scriptVersion="1.1.0" os="Windows"/>
<actions>
<action name="ActionStop" version="1.0.0"/>
<action name="ActionCallProcedure" version="1.0.0"/>
<action name="ActionLoop" version="1.0.0"/>
<action name="ActionEndProcedure" version="1.0.0"/>
<action name="ActionMessageBox" version="1.0.0"/>
<action name="ActionVariable" version="1.0.0"/>
<action name="ActionCode" version="1.0.0"/>
<action name="ActionPixelColor" version="1.0.0"/>
<action name="ActionBeginProcedure" version="1.0.0"/>
</actions>
<parameters/>
<resources/>
<script pauseBefore="0" pauseAfter="0">
<action name="ActionCallProcedure">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="name">
<subParameter name="value" code="0">2</subParameter>
</parameter>
</action>
<action name="ActionBeginProcedure">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="name">
<subParameter name="value" code="0">2</subParameter>
</parameter>
</action>
<action name="ActionVariable">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<exception id="32" action="0" line=""/>
<parameter name="colorValue">
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="variable">
<subParameter name="value" code="0">a</subParameter>
</parameter>
<parameter name="type">
<subParameter name="value" code="0">integer</subParameter>
</parameter>
<parameter name="value">
<subParameter name="value" code="0">0</subParameter>
</parameter>
<parameter name="positionValue">
<subParameter name="unit" code="0">0</subParameter>
<subParameter name="value" code="0"></subParameter>
</parameter>
</action>
<action name="ActionCode" label="++">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="code">
<subParameter name="value" code="1">a++;</subParameter>
</parameter>
</action>
<action name="ActionCallProcedure">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="name">
<subParameter name="value" code="0">1</subParameter>
</parameter>
</action>
<action name="ActionLoop">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="line">
<subParameter name="value" code="0">++</subParameter>
</parameter>
<parameter name="count">
<subParameter name="value" code="0">17</subParameter>
</parameter>
</action>
<action name="ActionMessageBox" label="postboucle">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="windowIcon">
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="message">
<subParameter name="value" code="0">$a</subParameter>
</parameter>
<parameter name="title">
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="textMode">
<subParameter name="value" code="0">automatic</subParameter>
</parameter>
<parameter name="ifYes">
<subParameter name="line" code="0"></subParameter>
<subParameter name="action" code="0">do_nothing</subParameter>
</parameter>
<parameter name="customIcon">
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="icon">
<subParameter name="value" code="0">none</subParameter>
</parameter>
<parameter name="type">
<subParameter name="value" code="0">ok</subParameter>
</parameter>
<parameter name="ifNo">
<subParameter name="line" code="0"></subParameter>
<subParameter name="action" code="0">do_nothing</subParameter>
</parameter>
</action>
<action name="ActionStop" enabled="false">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
</action>
<action name="ActionEndProcedure">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
</action>
<action name="ActionBeginProcedure">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="name">
<subParameter name="value" code="0">1</subParameter>
</parameter>
</action>
<action name="ActionPixelColor" comment="ne se verifie pas" timeout="200">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="2" line="postboucle"/>
<parameter name="comparison">
<subParameter name="value" code="0">equal</subParameter>
</parameter>
<parameter name="greenTolerance">
<subParameter name="value" code="0">0</subParameter>
</parameter>
<parameter name="variable">
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="blueTolerance">
<subParameter name="value" code="0">0</subParameter>
</parameter>
<parameter name="redTolerance">
<subParameter name="value" code="0">0</subParameter>
</parameter>
<parameter name="ifTrue">
<subParameter name="line" code="0"></subParameter>
<subParameter name="action" code="0">do_nothing</subParameter>
</parameter>
<parameter name="ifFalse">
<subParameter name="line" code="0"></subParameter>
<subParameter name="action" code="0">wait</subParameter>
</parameter>
<parameter name="positionOffset">
<subParameter name="unit" code="0">0</subParameter>
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="pixel">
<subParameter name="position" code="0">1180:1058</subParameter>
<subParameter name="color" code="0">9:554:122</subParameter>
</parameter>
</action>
<action name="ActionEndProcedure">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
</action>
</script>
</scriptfile>
Pourquoi la boucle continue ? la ligne stop est bien executée si activé,est-ce normal?
Jmgr
Admin
Posts: 1651 Joined: 07 Dec 2005, 15:45
Contact:
Post
by Jmgr » 12 Jun 2014, 13:33
Non, il y a bien un problème d'incompatibilité (bug) entre les procédures et l'action Boucle. Je n'ai pas le temps de m'en occuper en ce moment, mais tu peux remplacer cette action Boucle par un bout de code.
"My software never has bugs. It just develops random features."
lg256
Posts: 15 Joined: 24 Oct 2013, 15:14
Post
by lg256 » 14 Jun 2014, 20:07
Je pensais que ce cas était different désolé. Ca marche très bien avec du code ou des actions(une variable initialisée , incrementée et une condition de variable si quelqu'un a ce soucis).
Merci.
Jmgr
Admin
Posts: 1651 Joined: 07 Dec 2005, 15:45
Contact:
Post
by Jmgr » 27 May 2015, 20:56
Pour info : ce n'est pas à proprement parler un bug, en fait, comme précisé dans la doc :
Vous ne devriez pas utiliser d'action d'Aller à, d'action conditionnelle ou sauter en dehors de la procédure car cela va empêcher l'exécution de reprendre après l'action qui a appelé la procédure
Et là c'est exactement le problème : l'action Couleur de Pixel saute en dehors de la procédure. Du coup ça perturbe l'exécution du script.
Je me demande s'il ne faudrait pas déclencher une erreur systématiquement lorsque l'on saute en dehors d'une procédure ? Comment détecter ce cas de figure ? À étudier...
"My software never has bugs. It just develops random features."