Autoit [AutoIt] What the actual fuck.

Sparkdaemon

Staff
Membre du personnel
Inscrit
7 Avril 2009
Messages
556
Reactions
3
#1
Yop les vieux !

Bon, Comme certains d'entre vous le savent, Je ne quitterais pour rien au monde autoIt ! Et il m'arrive encore de tomber sur des erreurs et de ne pas comprendre.

Mon souci est simple:

Sur cette fonction, j'ai pris soin de faire en sorte que $data ne soit pas vide, MAIS.
Code:
J:\Boulot\Dev\IRC\MailSender.au3 (186) : ==> Variable used without being declared.:
PHP:
<span class="syntaxdefault">Func _CheckPong</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$data </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"err"</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// DATA EST DECLARE ICI.<br /></span><span class="syntaxdefault">    Global $TCPTimer<br />    Global $GUITimer<br />    Switch $data </span><span class="syntaxcomment">// CETTE LIGNE POSE PROBLEME.<br /></span><span class="syntaxdefault">        Case </span><span class="syntaxstring">"TCP"<br /></span><span class="syntaxdefault">            $Timer </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> TimerDiff</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$TCPTimer</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">        Case </span><span class="syntaxstring">"GUI"<br /></span><span class="syntaxdefault">            $Timer </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> TimerDiff</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$GUITimer</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">        Case Else<br />            _GUICtrlEdit_AppendText</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$hEdit</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"[CONSOLE] ERROR, PING TIMOUT."</span><span class="syntaxkeyword">&@</span><span class="syntaxdefault">CRLF</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">    EndSwitch<br /><br />EndFunc   </span><span class="syntaxkeyword">;==></span><span class="syntaxdefault">_CheckPong</span>

La fonction _CheckPong est appelée quand le thread principal reçoit "PONG" de la GUI, Ou du module TCP.

PHP:
<span class="syntaxdefault">_CheckPong</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$from</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">])</span><span class="syntaxdefault"> </span>
J'suis sûr d'avoir foiré mon coup quelque part, mais où? ...

*Retourne coder* :evil:
 

Geraff

Administrateur
Membre du personnel
Inscrit
13 Mars 2008
Messages
564
Reactions
0
#2
Tu as essayé de faire ça?
$data = $data;
 

RedBust

Membre Actif
Inscrit
1 Decembre 2009
Messages
260
Reactions
0
#3
$data n'est en effet pas déclarée dans ton code.
Quand tu utilises une variable en paramètre dans une de tes fonctions cela n'est pas valable comme une déclaration, tu dois faire au préalable dans une région dédiée à la déclaration de tes variables $data = ""; (par exemple).
C'est une particularité d'AutoIt, mais je suis presque sur que c'est valable dans beaucoup de languages (il me semble qu'en C et dérivés c'est la même chose).
Ca fait plaisir de ne pas avoir perdu la main après tout ce temps sans coder :cool:

EDIT : Si je me suis planté je mérite la mort.
 

Kyu

Staff
Membre du personnel
Inscrit
4 Octobre 2009
Messages
327
Reactions
8
#4
En C/C++ et langages dérivés, les paramètres optionnels avec valeur par défaut n'existent pas, il faut une surcharge pour chaque méthode ou constructeurs
 

RedBust

Membre Actif
Inscrit
1 Decembre 2009
Messages
260
Reactions
0
#5
C'est bien ce qu'il me semblait, merci pour la confirmation !
HS : Tu es resté bien actif sur le forum malgré tout jones, que fais-tu de beau en ce moment ?
EDIT : En relisant le corde de spark il me semble que la définition d'une valeur pas défaut de data en paramètre dans la fonction ne peut pas suffire comme une déclaration, au mieux si la variable a été déclarée avant la chaîne "err" remplacera la valeur donnée initialement.
J'ai un doute en fait :shock:
 

Kyu

Staff
Membre du personnel
Inscrit
4 Octobre 2009
Messages
327
Reactions
8
#6
En ce moment, je travaille sur de la 2D.
 

RedBust

Membre Actif
Inscrit
1 Decembre 2009
Messages
260
Reactions
0
#7
En C/C++ et langages dérivés, les paramètres optionnels avec valeur par défaut n'existent pas, il faut une surcharge pour chaque méthode ou constructeurs
Je remonte sur ça : c'est FAUX ! On peut tout à fait utiliser des paramètres optionnels en C++. En C ce n'est pas intégré au language, mais on peut utiliser des petites astuces pour arriver à un effet similaire (varargs).
 

Kyu

Staff
Membre du personnel
Inscrit
4 Octobre 2009
Messages
327
Reactions
8
#8
En effet, je viens de voir qu'on peux utiliser des paramètres par défaut en C++, en revanche, les vargargs ne peuvent être considérés comment tels.
 
Haut Bas