Recupérer une variable pour effectuer un calcul [Résolu]

Signaler
Messages postés
2203
Date d'inscription
lundi 12 juillet 2004
Statut
Membre
Dernière intervention
26 janvier 2010
-
Messages postés
2203
Date d'inscription
lundi 12 juillet 2004
Statut
Membre
Dernière intervention
26 janvier 2010
-
J'aimerais récupérer une valeur numérique contenue dans un .txt et de m'en servir pour faire une opération. (je sais que cela se fait d'un xml, mais pour des raisons pratiques de MAJ, il me faut un txt). Actuellement undefined (NaN) !!
Quelqu'un a-t'il une idée ? Comment convertir une variable importée d'un fichier texte en number ?

Alise
from FlashForum-oi.info

16 réponses

Messages postés
759
Date d'inscription
mercredi 11 décembre 2002
Statut
Membre
Dernière intervention
12 novembre 2008

salut,

Number(tonStringAConvertir);

<hr />http://www.carton.c.la
Messages postés
2203
Date d'inscription
lundi 12 juillet 2004
Statut
Membre
Dernière intervention
26 janvier 2010

merci shubenka, mais ça j'avais déjà essayé, marche pas !

Alise
from FlashForum-oi.info
Messages postés
759
Date d'inscription
mercredi 11 décembre 2002
Statut
Membre
Dernière intervention
12 novembre 2008

fait voir ton code et ton fichier texte stplait

<hr />http://www.carton.c.la
Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
2
Hello,

je suis étonné que la solution du number(string) ne fonctionne pas.

Es-tu sure que flash à bien chargé la variable du fichier .txt avant d'effectué une opération dessus ?.

Comme les opérations de chargement de flash sont asynchrone je me pose la question.
Peut-être essayes-tu d'eefectué une opération sus une variable pas encore en mémoire.

Jo
Messages postés
2203
Date d'inscription
lundi 12 juillet 2004
Statut
Membre
Dernière intervention
26 janvier 2010

[auteurdetail.aspx?ID=19113 shubenka]
 
je te prépares ça
[auteurdetail.aspx?ID=65895 Girou]
regardes aussi les fichiers tu verras qu"après la conversion le champs affiche NaN, alors
que j'ai besoin de récupérer un chiffre pour effectuer ensuite un calcul.

Mais peut-être est-ce aussi mal formulé du coté code.

voilà les fichiers de test

Alise
from FlashForum-oi.info
Messages postés
759
Date d'inscription
mercredi 11 décembre 2002
Statut
Membre
Dernière intervention
12 novembre 2008

Alors j'ai trouver pourquoi
deja il faut attendre que flash est fini de charger les variables avant de les utiliser ce sui donne un truc comme ca

loadVariablesNum("vari.txt", 0);
function checkParamsLoaded() {
 if (_root.dm1 == undefined) {
 trace("not yet.");
 } else {
 clearInterval(param_interval);
 afterLoad();
 }
}
var param_interval:Number = setInterval(checkParamsLoaded, 100);
 
function afterLoad(){
    r1=Number(dm1)-Number(dm2);
}

et ensuite ton txt doit resembler a ca dm1=10&dm2=15&dm3=20
sinon il prend les retour a la ligne et ca fou la merde pour la convertion
ou alors mais c'est plus chiant tu vire les retour chariot
en faisant
dm1= Number(substring(dm1,0,dm1.length-2));
j'ai pas trouver mieux

<hr />http://www.carton.c.la
Messages postés
2203
Date d'inscription
lundi 12 juillet 2004
Statut
Membre
Dernière intervention
26 janvier 2010

Merci shubenka,
tu m'as déjà bien éclairé sur une grande partie du problème, je récupère bien un nombre
reste maintenant le prob des variables du txt, j'en ai 365 (de dm=160 à dm365 =160) donc pas très pratique
de les mettre bout à bout.

Alise
from FlashForum-oi.info
Messages postés
759
Date d'inscription
mercredi 11 décembre 2002
Statut
Membre
Dernière intervention
12 novembre 2008

dans ce cas la automatise le 2iéme parsage indiqué
for(i=1;i<366;i++){
var = "dm"+i;
_root[var]= Number(substring(_root[var],0,_root[var].length-2));
}
Pour la petite explication ce que tu optient dans dm1 par exemple c'est la chaine de caractére tonNombre\t\r (\t\r étant le retour chariot et correspondant a 2 caractéres) donc il faut les enlever pour que la convertion marche.

ps: pas sur à 100% que ce soit \t\r mais en tout cas il a  2 caractéres à virer
<hr />http://www.carton.c.la
Messages postés
759
Date d'inscription
mercredi 11 décembre 2002
Statut
Membre
Dernière intervention
12 novembre 2008

Oups ne prend pas "var" comme nom de variable c'est un truc réserver

<hr />http://www.carton.c.la
Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
2
Hello,


dans ton cas, vu le nombre conséquent de variables, n'aurais-tu pas interet a fonctionner avec un fichier XML.
Ou bien encore avoir une seule variable (texte) à charger et ensuite tu traites le tout dans un tableau.
fichier .txt
&mesValeurs=10_15_20_...


ensuite, dès que tu as récupéré ta variable dans Flash, tu 'exploses' ta chaine de caractère dans un tableau.

var dm:Array=new Array()
dm=mesValeurs.split("_");
tu récupèreras alors un tableau
dm[0]=10 dm[1]=15 dm[2]=20 etc...

Personnellement, je trouve assez facile et utile de travailler avec des tableaux (facilité de retrouver une valeur, plusieurs opérations possible sur un tableau genre tri,...)

Tout dépend bien sur de comment ou d'où proviennent les données du fichier txt de base.

Jo
Messages postés
2203
Date d'inscription
lundi 12 juillet 2004
Statut
Membre
Dernière intervention
26 janvier 2010

Merci shubenka, je vais essayer tout ça tranquillement et je te tiens au courant. Pour "var" ça je savais

Alise
from FlashForum-oi.info
Messages postés
2203
Date d'inscription
lundi 12 juillet 2004
Statut
Membre
Dernière intervention
26 janvier 2010

Bonsoir Girou, je vais aussi tester ta suggestion, je sais faire tout ça avec du xml (ça m'aurait simpliflé la tâche) ou un bdd, mais je ne peux pas dans le cas présent, il me faut absolumment un fichier .txt, car c'est le client qui le génère et xml, ça ne lui va pas.
En clair la paersonne gérant ce truc devrait avoir un fichier hyper simple et facile à mettre à jour, style :
dm1=120
&dm2=78
&dm3=148

etc, etc (et disposé comme ça), tous les jours, ces données sont mises à jour (en dégressif) et je doit récupérer le résultat dans Flash pour lafficher d'une part et m'en servir pour faire un calcul dégressif d'autre part !

Alise
from FlashForum-oi.info
Messages postés
2203
Date d'inscription
lundi 12 juillet 2004
Statut
Membre
Dernière intervention
26 janvier 2010

Girou, je tenais à te remercier pour ta réponse

Alise
from FlashForum-oi.info
Messages postés
759
Date d'inscription
mercredi 11 décembre 2002
Statut
Membre
Dernière intervention
12 novembre 2008

Allé un dernié ptit truc ^^ qui je pense est une solution pas mal pour toi et ton client en reprenant l'idée de Girou

function afterLoad(){
    dm=mesValeurs.split("\r\n");
    for(elt in dm){
        dm[elt]=Number(dm[elt]);
    }
    r1 = dm[0]+dm[1];
}

Et dans le txt tu sépare les valeurs par un simple retour chariot :

&mesValeurs=10
15
20
5
...

ca peut chié si il y a un espace qui traine tu peux rajouter une boucle pour vérifié ca
<hr />http://www.carton.c.la
Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
2
Au passage,


j'ai déjà testé un fichier excel qui, via une macro (le VBA, c'est sympa !) génère un fichier xml (que je récupère dans flash)


Dans ton cas, le client aurait un fichier Excel où il lui suffit de mettre à jour ses valeurs, de cliquez sur un bouton (gros et gras q'il puisse pas le louper) et hop, le nouveau fichier n'a plus qu'a être uploadé.

Jamais testé mais via flash 8 je pense qu'il y a une fonction d'upload.

comme je le disait tout dépend de comment le fichier est généré...

Jo
Messages postés
2203
Date d'inscription
lundi 12 juillet 2004
Statut
Membre
Dernière intervention
26 janvier 2010

Merci à vous Girou et shubenka, je vais essayer vos méthodes et vous tiens au courant.

Par contre Girou, c'est intéressant ta soluce via un fichier excel, tu fais ça comment ? Là je suis vraiment néophite.
Flash8, n'a pas de fonction intégrée d'upload, mais ce n'est pas un problème pour le client

Alise
from FlashForum-oi.info