Bonsoir,
J'aurais voulu savoir comment convertir une string en byteArray ou mieux comment ajouter une string a un byteArray :D
Marci d'avance !!!
Version imprimable
Bonsoir,
J'aurais voulu savoir comment convertir une string en byteArray ou mieux comment ajouter une string a un byteArray :D
Marci d'avance !!!
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
@+
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
et aussi (car j'utilise le byteArray pour écrire un fichier) mais j'ai des erreursCode:
1
2
3 str = "--|||-±0wÁwø7LLhm'¡µ´ÚÎ)0¥jШøö¥7ÜqßqjÕeKNö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);
Code: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:
1
2
3
4 outStream.open(new File(path), FileMode.WRITE); outStream.writeBytes((str as ByteArray),0,(str as ByteArray).bytesAvailable); outStream.close();
L'Error #1009 parle d'elle meme ; outStream n'est pas définie. outStream est egale a null: Pas bon!
As tu bien utilisé
As tu initialisé outStreamCode:import flash.filesystem.*;
Code:var outStream=new FileStream();
Malheureusement non ... sauf si tu a une licence Adobe® Flash® CS3™ a me dépanner :mouarf: ... Sinon il y a la doc en français avec plein d'exemple tout bien expliqué et tout ... ( y'a presqu'a recopier ... )Citation:
pourrais tu mettre un bout de code utilisant writebytes.
ByteArray exemple documentation
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
le probleme vient du (str as ByteArray) mais je n'arrive pas a le resoudre.:(Code:
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(); } }
Il faut juste que j'ecrive str dans un fichier mais pas en UTF8 en bytes
En effet tu avais raison je n'initialisais pas mon outStream dans ma boucle
J'ai résolu le probleme en utilisantCode:outStream = new FileStream();
:yaisse2:Code: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 ! :mrgreen:
Merci beaucoup pour tes conseil !
C'est cool pour toi si tu a résolut ton proleme ...
Mais c'est quoi la réponse au finale ? C'est quoi le code que je doit écrire ?Citation:
J'aurais voulu savoir comment convertir une string en byteArray ou mieux comment ajouter une string a un byteArray
Apres de nombreux test, writeObject convertit mes données (en AMF) hors je veux ecrire sans qu'il y ai de conversion :evilred: 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
et l'erreurCode:
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] = "-±0wÁwø7LLhm'¡µ´ÚÎ)0¥jШøö¥7ÜqßqjÕeKNö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(); } }
qqn aurait une solutionCode: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);
Z ai tout fini !!!!
En effet j'ai trouve un moyen de lire mon archive morceau par morceau :yaisse2:
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 :king: