Ralentissements dus à la fonction split();

Résolu
matthos Messages postés 24 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 18 mai 2006 - 4 avril 2006 à 10:30
matthos Messages postés 24 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 18 mai 2006 - 5 avril 2006 à 10:05
salut
je travail en ce moment sur un projet où je dois importer un fichier .txt. Jusque la, pas de problèmes(quoique l'importation est un peu spéciale avec des logiciels autres que flash MX ou autres dérivés de Macromédia... Je travail personnellement sur Glanda)
Je veux ensuite effectuer un split le texte importé pour pouvoir traiter les données à l'intérieur...
Mais ce texte est assez (pour pas dire très) long, donc cela engendre un freeze du pc pendant la fonction...

Je vous met le code, au cas où :

//LoadVarsText est la variable dans laquelle j'ai chargé mon .txt
LoadVarsText.onLoad = function (succes) {
if (succes) {
Mavar = loadVarText+"";
// le +"" permet à flash d'interpréter le texte importé comme une chaine de caractère, sans quoi il ne le coprend pas comme tel
impor = Mavar.split("");
compteur(); // la fonction compteur permet juste d'afficher le texte importé... mais ce n'est pas ça qui ralentit l'application
}
};

voila... si quelqu'un a une solution, merci de la faire partagée ;)
a+

6 réponses

matthos Messages postés 24 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 18 mai 2006
5 avril 2006 à 10:05
bon, pour boucler ce sujet... j'ai finit par faire acheter le logiciel flash, et je récupère les données de mon fichier txt avec la fonction substr()...

donc comme conclusion : utilisez flash.... pas glanta ni d'autres substitus de flash...
3
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
4 avril 2006 à 12:34
1° Toute variable importée dans un .TXT est considérée comme un texte de base.
2° Il existe une fonction qui change une variable quelconque en texte : mavariable.toString();
3° Slipt("") te crée un tableau dans lequel chaque élément contiendras un caractère de ton texte;
4° Sachant qu'au bout de 20.000 instructions exécutées dans une même frame, Flash considère qu'il y a boucle infinie, et que ton texte est trés long, il est normal que Flash plante ...

Ma question : pourquoi placer chaque caractère de ton texte dans une case de tableau ?

Peg'
0
matthos Messages postés 24 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 18 mai 2006
4 avril 2006 à 13:36
je ne connaissais pas cette fonction toString (oui... j'suis pas vraiment ce qu'on pourrait appeler un expert en flash) donc je vais l'appliquer, mais cela ne changera pas mon problème...
je m'explique :
Ce ne sont pas des variables que j'importes dans mon swf, mais des lignes de textes de type
"colone1;colone2;colone3;....;colone n"
Ce dossier txt est en fait issu d'un xls (inexploitable sous cette forme avec glanta), convertit en csv (les colones sont converties en ;), puis en txt.
Donc je veux utiliser le split pour faire une boucle sur ce texte, afin que flash restitue mon tableau (retour à la ligne apres des guillemets, avec modulo pour le faire qu'une fois sur 2, et ajout d'une nouvelle colone quand il y a un ;)
De plus, Glanta est un logiciel assez... particulier, qui ne comprend pas du tout les accents des .txt, ni les virgules et tous les caractères spéciaux. Du coup ma boucle sur mon tableau me permet également de refaire correctement tous ces caractères spéciaux (quand il voit %2D -> un tiret, %20 -> un espace; %0D un retour à la ligne, etc...)

J'ai cru que le split était la meilleur méthode pour faire ce travail, mais si tu en connais une autre, je serais ravi de la connaitre aussi ;)

PS: j'effectue ce travail dans le cadre proffessionel, il m'est donc impossible de changer de logiciel (macromédia coute trop cher...) ou d'importer un document sous une autre forme (un .xml m'aurait plus aidé... mais je n'ai pas le temps de former les gens de l'entreprise à utiliser ce type de fichier)

a+
0
matthos Messages postés 24 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 18 mai 2006
4 avril 2006 à 13:39
a oui et pour info, glanta ne considère pas les variables importées de mon txt comme des chaines de caractères... il ne parvenait pas à faire un split sur la variable loadVarText avant que je ne rajoute le +""

(un conseil... ceux qui le peuvent... restez sur les produits macromédia...)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
4 avril 2006 à 14:03
ben ne connaissant pas glanta, je crois malheureusement que je ne peux pas grand choses pour toi .... Seul Flash fait du Flash et trés sèrieusement il ne faut pas s'étonner qu'avec les autres "herzatz" de ce logiciel, rien ne fonctionne comme il faut.

Et pour finir, je ne sais pas si tu es au courant, mais il y a une source ici qui permet de récupérer les données d'un txt non formatée genre "&variable1=...&".. cherche un peu tu devrais trouver ;)

Peg'
0
matthos Messages postés 24 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 18 mai 2006
4 avril 2006 à 14:14
Ouaip j'ai déja trouuvé cette source... J'ai cherché partout, sur pas mal d'autres sites avant de venir poster ici... 4 jours de recherche, mais rien. Tout ce qui marcherait avec flash est changé avec Glanta (j'ai essayé la fonction toString, mais malheureusement, elle ne marche pas non plus)

Bon ba c'est pas grave, merci quand même d'avoir essayé de m'aider ;)
0
Rejoignez-nous