IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flash Discussion :

Flex / AIR String to ByteArray


Sujet :

Flash

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 32
    Points
    32
    Par défaut Flex / AIR String to ByteArray
    Bonsoir,

    J'aurais voulu savoir comment convertir une string en byteArray ou mieux comment ajouter une string a un byteArray

    Marci d'avance !!!

  2. #2
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    Bonjour a tous,

    Pour transtyper (conversir le type; cast en anglais) je te conseil ce document Le transtypage en ActionScript 2 et 3
    Si besoin, affiner tes recherche Avec google avec les mot cléf CAST ou TRANSTYPAGE

    Ensuite,

    Si tu souhaite concaténer un String à un ByteArray alors writeBytes() est fait pour toi

    @+

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 32
    Points
    32
    Par défaut
    Bonsoir,

    Je suis toujours sur ce problème et malheureusement je n'y arrive pas.
    pourrais tu mettre un bout de code utilisant writebytes.

    J'ai essayé :
    byteArray et str sont initialisés
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    str = "--|||-‹±ƒ0„wÁwø7LLhm'¡‚µ´ÚÎ)0¥jШøö¥7ÜqßqjÕeK›NöPÝ8ϝ²-„`ã$‡BaŠÔ‡ýh«µ:Áº®Ø»íµq/´måe•ÝkÈËú|‘“Ôb'.—÷Kµû{˜Ç=[3îÁ3-YnÈbâƒC†#†)#˜& ǐŠhl%Þɶà¯/";
    byteArray.writeBytes((str as ByteArray),0,(str as ByteArray).bytesAvailable);
    et aussi (car j'utilise le byteArray pour écrire un fichier) mais j'ai des erreurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    outStream.open(new File(path), FileMode.WRITE);
    outStream.writeBytes((str as ByteArray),0,(str as ByteArray).bytesAvailable);
    outStream.close();

  4. #4
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    L'Error #1009 parle d'elle meme ; outStream n'est pas définie. outStream est egale a null: Pas bon!
    As tu bien utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import flash.filesystem.*;
    As tu initialisé outStream
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var outStream=new FileStream();
    pourrais tu mettre un bout de code utilisant writebytes.
    Malheureusement non ... sauf si tu a une licence Adobe® Flash® CS3™ a me dépanner ... Sinon il y a la doc en français avec plein d'exemple tout bien expliqué et tout ... ( y'a presqu'a recopier ... )
    ByteArray exemple documentation

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 32
    Points
    32
    Par défaut
    Be justement l'objet outStream est bien initialise (variable global de ma classe)
    En realite, je suis ne train de créer un petit applicatif permettant de créer des archives .gz contenant plusieurs fichiers compressés.
    La création de l'archive est nikel mais comme elle contient plusieurs fichiers je selectionne le contenu de mon archive dans un tableau.
    Le contenu du tableau est nikel et les bytes sont bien les meme que dans l'archive

    Mon soucis est la création de fichiers a partir de ce tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    public function extract(archive_path:String, archiveUncompressed_path:String):void{
     
    	// le tableau en question avec le contenu de mon archive "slicé"
    var tabFilesFromArchive:Array = getFileListFromArchive(archive_path);
    var pattern:RegExp = /:/; // si c:\ ou d:\
    var path:String;
    var str:String;
    // key contient le path du fichier et tabFilesFromArchive[key] son contenu
    for (var key:String in tabFilesFromArchive){
     
    path = archiveUncompressed_path+key.replace(pattern,"_ROOT_ARCHIVE");
     
    str = tabFilesFromArchive[key];
     
    outStream.open(new File(path), FileMode.WRITE);
    outStream.writeBytes((str as ByteArray),0,(str as ByteArray).bytesAvailable);
    outStream.close();
    }
    }
    le probleme vient du (str as ByteArray) mais je n'arrive pas a le resoudre.

    Il faut juste que j'ecrive str dans un fichier mais pas en UTF8 en bytes

  6. #6
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 32
    Points
    32
    Par défaut
    En effet tu avais raison je n'initialisais pas mon outStream dans ma boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    outStream = new FileStream();
    J'ai résolu le probleme en utilisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    outStream.writeObject(tabFilesFromArchive[key]);

    une belle methode que je n'avais pas vu !!!
    programmez jusqu'a 3h du mat ce n'est pas tres top !

    Merci beaucoup pour tes conseil !

  7. #7
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    C'est cool pour toi si tu a résolut ton proleme ...

    J'aurais voulu savoir comment convertir une string en byteArray ou mieux comment ajouter une string a un byteArray
    Mais c'est quoi la réponse au finale ? C'est quoi le code que je doit écrire ?

  8. #8
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 32
    Points
    32
    Par défaut
    Apres de nombreux test, writeObject convertit mes données (en AMF) hors je veux ecrire sans qu'il y ai de conversion lol du coup retour au point de depart avec la recherche d'une methode pour convertir une string en byteArray() ou pour ecrire mon contenu sans conversion
    voici la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    public function extract(archive_path:String, archiveUncompressed_path:String):void{
                            // tabFilesFromArchive contient bien les données que je veux
     
    			var tabFilesFromArchive:Array = getFileListFromArchive(archive_path);
    			var pattern:RegExp = /:/;
    			var path:String;
    			var srcBytes:ByteArray;
    			var file:File;
                            // par exemple tabFilesFromArchive[key] = "-‹±ƒ0„wÁwø7LLhm'¡‚µ´ÚÎ)0¥jШøö¥7ÜqßqjÕeK›NöPÝ8ϝ²-„`ã$‡BaŠÔ‡ýh«µ:Áº®Ø»íµq/´måe•ÝkÈËú|‘“Ôb'.—÷Kµû{˜Ç=[3
    îÁ3-YnÈbâƒC†#†)#˜& ǐŠhl%Þɶà¯/"
    			for (var key:String in tabFilesFromArchive){
    		    	path = archiveUncompressed_path+key.replace(pattern,"_ROOT_ARCHIVE");
     
    		    	file = new File(path+".tmp");
    		    	outStream = new FileStream();
    		    	outStream.open(file, FileMode.WRITE);
    		    	outStream.writeBytes((tabFilesFromArchive[key] as ByteArray),0,(tabFilesFromArchive[key] as ByteArray).bytesAvailable);
    		    	outStream.close();
    			}
    		}
    et l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul. a la ligne : outStream.writeBytes((tabFilesFromArchive[key] as ByteArray),0,(tabFilesFromArchive[key] as ByteArray).bytesAvailable);
    qqn aurait une solution

  9. #9
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 32
    Points
    32
    Par défaut
    Z ai tout fini !!!!

    En effet j'ai trouve un moyen de lire mon archive morceau par morceau
    j'insere le contenu de mon archive dans un bytearray
    (je connais a l'avance les positions de mes fichiers dans celle-ci)
    je set l'attribut position du bytearray;
    je fais un read en readBytes(autreByteArray,0,length)
    et c good

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Flex / AIR String to ByteArray
    Par Cedwik dans le forum Flex
    Réponses: 1
    Dernier message: 14/04/2008, 11h25
  2. Plusieurs problèmes FLEX / AIR
    Par ®om dans le forum EDI/Outils
    Réponses: 0
    Dernier message: 03/04/2008, 11h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo