Choisir un fichier TXT à afficher

lordwinfield31 Messages postés 21 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 30 juin 2009 - 28 mai 2009 à 15:04
lordwinfield31 Messages postés 21 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 30 juin 2009 - 16 juin 2009 à 11:19
Bonjour,

J'utilise un fichier XML et une combobox pour lister des MP3 et le TXT des paroles qui va avec.
Une fonction "action" me permet actuellement d'afficher dans un champ de texte le nom du fichier texte associé.

   function traiteXML (){
    textab = playlist_xml.firstChild.childNodes;
    for(i=0; i<textab.length; i++){
     _root.liste.addItem(textab[i].attributes.nom,textab[i].attributes.texte);
     _root.liste.setChangeHandler("action");
     }

   function action(){
    _root.champ = _root.liste.getValue();
     }

J'aimerai afficher les données contenues "dans" le fichier txt. Je débute en action script et encore plus en XML alors je galère.

J'ai essayé
    loadVariables( _root.liste.getValue(), "champ");

puis
   paroles = _root.liste.getValue();

   loadVariables( paroles, "champ");

Bref je bidouille, je trifouille car je ne vois par où est stockée la variable récupérée ni sous quelle forme, et donc je ne sais pas comment l'appeller pour la réutiliser.


<hr />



Un  jour j'y arriverai ... c'est sur

7 réponses

cs_tom Messages postés 1511 Date d'inscription samedi 8 décembre 2001 Statut Modérateur Dernière intervention 11 juin 2009
28 mai 2009 à 15:32
Oui, y a une methode :

var monfichier:String = "textfile.txt";

var monLoadVars = new LoadVars();

// Pour l'évenement onData : 'source' contient tout les données du fichier appelé

monLoadVars.onData = function (source) {
        var nlPos;
// Optionnel : on vire les retour chariot
        while ((myPos=source.indexOf("\n")) >= 0) {
                source= source.slice(0, myPos) + source.slice(myPos+1);
        }
// enfin, on utilises 'source pour ce qu'on veut :
        trace(source);
}

monLoadVars.load(_root.monfichier);
0
lordwinfield31 Messages postés 21 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 30 juin 2009
28 mai 2009 à 16:18
Merci d'avoir répondu si vite.

mais j'ai du mal à comprendre comment ce que tu a mis
var monfichier:String = "textfile.txt";

peut me permettre d'afficher le contenu du fichier TXT de la variable selectionnée et renvoyée par la fonction:
   
function action(){
    _root.champ = _root.liste.getValue();
     }

c'est pas sensé permettre d'acceder uniquement au fichier "textfile.txt"?
<hr />
Un  jour j'y arriverai ... c'est sur
0
cs_tom Messages postés 1511 Date d'inscription samedi 8 décembre 2001 Statut Modérateur Dernière intervention 11 juin 2009
28 mai 2009 à 16:31
Ben c'est un exemple, pas du code pondu specialement pour toi ...
Pourtant il etait vraiment super facile à modifier...

Donc ça s'adapte :

function action(){
       monLoadVars.load(_root.liste.getValue());
}

Et de virer var monfichier:String = "textfile.txt"; qui n'es plus utile dans ce cas...

Et de rajouter un bout de code à la fonction que je t'ai filé, pour adapter la variable "source" à tes besoins (l'afficher dans une zone de texte par exemple)...
0
lordwinfield31 Messages postés 21 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 30 juin 2009
28 mai 2009 à 22:58
Merci beaucoup.
Je suis graphiste à la base et j'apprends le code au fur et à mesure avec celui que j'associe à mes sites, je m'essaye en autodidacte et tout seul à comprendre du code qui me serait utile. Faut dire qu'à 40 ans y'a pas beaucoup de possibilités pour obtenir une formation dans ce domaine, l'école est finie .... j'ai candidaté pour une Licence Professionelle RTAI à Toulouse m'ai j'ai peu d'espoir. .

Quand à ta precision  elle m'éclaire effectivement  non seulement sur le code que tu m'a donné mais aussi la syntaxe en général. J'ai du mal à voir quand utiliser " = " ou " ( ) "

Je trafique tout ça et je te tiens au courant, et encore merci.
<hr />
Un  jour j'y arriverai ... c'est sur
0

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

Posez votre question
lordwinfield31 Messages postés 21 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 30 juin 2009
16 juin 2009 à 09:54
Après plusieurs essais j'abandonne....
Je n'ai pas reussi à comprendre comment utiliser tes indications.
Je n sais pas ce que je dois garder de ton code, qu'est ce qui est de l'ordre de l'exemple général qu'est ce qui relève de mon exemple?

Quel est donc ce code mystérieux qu'il me faudrait rajouter à trace?

A force de faire des tentatives plus infructueuses les unes que les autres tout ça n'a servi qu'a m'embrouiller un peu plus.

Je poste ma dernière tentative , dont le champ de texte ne m'affiche que "true"- Où est l'erreur?:

textab = new Array();
base_XML = new XML();
base_XML.onLoad = traiteXML;
base_XML.ignoreWhite = true;
base_XML.load("test.xml");

function traiteXML (){
textab = base_XML.firstChild.childNodes;
for(i=0; i<textab.length; i++){="" _root.liste.additem(textab[i].attributes.titre,textab[i].attributes.texte);="" _root.liste.setchangehandler("action");="" }="" var="" monloadvars="new" loadvars();="" monloadvars.ondata="function" (source)="" {="" nlpos;="" while="" ((mypos="source.indexOf("\n"))">= 0) {
source= source.slice(0, myPos) + source.slice(myPos+1);
}
trace(source);
}
function action(){
_root.champ = monLoadVars.load(_root.liste.getValue());

}

Structure du XML:
<liste><file id="1" titre="fiche1" texte="fiche1.txt"><file id="2" titre="fiche2" texte="fiche2.txt"></file></file></liste></textab.length;>
0
lordwinfield31 Messages postés 21 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 30 juin 2009
16 juin 2009 à 09:58
Après plusieurs essais j'abandonne....
Je n'ai pas reussi à comprendre
comment utiliser tes indications.
 Je n sais pas ce que je dois garder
de ton code, qu'est ce qui est de l'ordre de l'exemple général qu'est
ce qui relève de mon exemple?
Quel est donc ce code mystérieux qu'il me
faudrait rajouter à trace?
A force de faire des tentatives plus
infructueuses les unes que les autres tout ça n'a servi qu'a
m'embrouiller un peu plus.

Je poste ma dernière tentative , dont le
champ de texte ne m'affiche que "true"- Où est l'erreur?:
textab = new Array();
base_XML = new XML();
base_XML.onLoad = traiteXML;
//base_XML.html=true;
base_XML.ignoreWhite = true;
base_XML.load("test.xml");
stop();

function traiteXML (){
    textab = base_XML.firstChild.childNodes;
    for(i=0; i<textab.length; i++){
        _root.liste.addItem(textab[i].attributes.titre,textab[i].attributes.texte);
        _root.liste.setChangeHandler("action");
        }
}
var monLoadVars = new LoadVars();

monLoadVars.onData = function (source) {
        var nlPos;
        while ((myPos=source.indexOf("\n")) >= 0) {
                source= source.slice(0, myPos) + source.slice(myPos+1);
        }
        trace(source);
}
function action(){
      _root.champ = monLoadVars.load(_root.liste.getValue());    
}

La structure du XML est:

<Liste>
<File id="1" titre="fiche1" texte="fiche1.txt"/>
<File id="2" titre="fiche2" texte="fiche2.txt"/>
</Liste>
0
lordwinfield31 Messages postés 21 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 30 juin 2009
16 juin 2009 à 11:19
Avec ceci le résultat s'affiche dans le panneau de sortie mais pas dans le champ de texte.

var monLoadVars = new LoadVars();

monLoadVars.onData = function (source) {

        var nlPos;

        while ((myPos=source.indexOf("\n")) >= 0) {

                source= source.slice(0, myPos) + source.slice(myPos+1);

        }

        trace(source);

}

function action(){

       monLoadVars.load=(_root.liste.getValue());

}
0
Rejoignez-nous