Forum de discussion
Forum « Flash et Shockwave » (archives)
re : Lire un txt et extraire une partie
Envoyé: 15 juin 2006, 10h18 par Oznog
Il doit y avoir quelqu'un qui fait de la désinformation quelque part ;-) Vaut mieux ne jamais charger un texte directement, ajoutez au moins une assignation :
monTexte=Le Texte ICI...
C'est la façon de faire, c'est la façon dont fonctionne les en-têtes http et c'est la seule façon de distinguer et de récupérer plusieurs valeurs.
À ce stade il y a des dizaines de méthodes, selon tes besoins. EN ne les connaissant pas, je dois deviner.
Le plus simple est de prévoire une variable par valeur (mais sache que tu peux utiliser des déloimitateurs comme tu propose, notamment si tu ne connait pas la quantité de données) :
// FICHIER 1 : textfile.txt
hPersonne1=pierre martin&hMot1=bonjour&hPersonne2=jacques henri&hMot2=salut
Nous alons transposer le tout dans un tableau (array). Et ainsi les rendre disponibles individuellement. :
Pour simplifier l'accès, je vais créer une classe personne avec un nom et un mot.
// Sauver dans le même dossier
// FICHIER 2 : twClassePersonne.as
class twClassePersonne {
public var nom: String;
public var mot: String;
}
Et dans ton Flash, tu inclu la classe comme ceci :
// FICHIER .fla
// Première image-clé du premier calque.
import twClassePersonne;
// On déclare ensuite le tableau
var aPersonnes:Array = new Array();
// Et ton fichier bien sûr
_root.file = "textfile.txt";
Note que j'utilise « onLoad » au lieu de « onData »
var lv = new LoadVars();
lv.onLoad = function (success) {
if (success) {
// Création d'un objet Personne
var oPersonne:twClassePersonne = new twClassePersonne();
// Assignation des deux valeurs récupérées
oPersonne.nom = this.hPersonne1;
oPersonne.mot = this.hMot1;
// Et on pousse le tout à la fin du tableau
_root.aPersonnes.push(oPersonne);
// Même chose pour le deuxième nom
var oPersonne:twClassePersonne = new twClassePersonne();
oPersonne.nom = this.hPersonne2;
oPersonne.mot = this.hMot2;
_root.aPersonnes.push(oPersonne);
// L'idée est d'avoir accès partout
// exemple au nom du premier
trace(_root.aPersonnes[0].nom);
// Ou au mot du deuxième
_root.dspText.text = _root.aPersonnes[1].mot;
}
}
// Chargement du fichier
lv.load(_root.file);
Tout ce script pour être refait dans une boucle, si le nombre de personnes est illimité. Mais dans tout les cas, tu te retrouve avec les valeurs disponibles individuellement. Bien que le test ne soit plus n'écessaire (puisque tu connait le mot de chaque nom selon l'index!), tu pourrais faire ce que tu demande, à savoir :
if (_root.aPersonnes[0].nom) = "pierre martin") {
trace("égal");
} else {
trace("pas égal");
};
Ciao
Oznog
Réponses
|