Comunidad de diseño web y desarrollo en internet online

Cómo cargar un array, desde un archivo de texto

Citar            
MensajeEscrito el 21 Abr 2009 06:47 pm
Llevo varios días buscándole la solución a lo que expondré a continuación y agradezco de antemano cualquier solución u orientación para solucionarlo.

En el frame 1 del _level0:

Tengo un componente ‘datagrid’ con el nombre “misceldas”

y las siguientes ‘Actions’

Código :


miarray = new Array({campo1:"uno", campo2:"dos"}, {campo1:"tres", campo2:"cuatro"});
misceldas.dataProvider=miarray;



De este modo lleno una tabla (o datagrid) en flash con campo1(uno, tres) y campo2 (dos, cuatro) similar a

Código :

<table>
         <tr><td>campo1</td> <td>campo2</td></tr>
         <tr><td>uno</td>      <td>dos</td></tr>
         <tr><td>tres</td>      <td>cuatro</td></tr>
</table>


Por otro lado, si creo un archivo de texto llamado “mitexto.txt”, y almaceno el contenido:

Código :

contenido=({campo1:"uno", campo2:"dos"}, {campo1:"tres", campo2:"cuatro"}


ahora puedo cargar el contenido a un campo de texto dinámico llamado ‘contenido’ o a la variable ‘contenido’ de la siguiente manera:

Código :

mitexto=loadVariablesNum("mitexto.txt",0);


Hasta aquí, perfecto. La cuestión es ¿cómo puedo hacer para insertar el contenido del archivo de texto donde están declarados todos los campos y sus valores a la hora de declarar el Array?

He probado con:

eval(“miarray = new Array(“ + contenido + “)”;

para ActionScript 2.0 y no vale

con miarray= new Array(this[contenido]) y tampoco.

En definitiva, ¿como puedo cargar el datagrid con la declaración de campos y valores que tengo en el archivo de texto?

Nota: conozco la forma de hacerlo mediante un new XML() pero éste no es el caso.
También es posible usar ‘split’ para cargar un Array, pero como vemos aquí no es válido, porque cada elemento lleva su campo y además es bidimensional.

Muchísimas Gracias aunque sólo sea por leerlo.

Un saludo desde Tenerife, España.

Por ahp

1 de clabLevel



 

msie
Citar            
MensajeEscrito el 22 Abr 2009 06:37 am
Te cuento cómo suelo hacerlo yo, aunque no es un método muy ortodoxo. La verdad es que no he trabajado nunca con arrays asociativas como las que tú propones del tipo
miarray = new Array({campo1:"uno", campo2:"dos"}, {campo1:"tres", campo2:"cuatro"});
En todo caso, te explico cómo lo hago yo con arrays normales por si te sirve de pista.

En el txt tengo algo como:

&elArray=01>tiem1>texto1@02>tiem2>texto2@03>tiem3>texto3&

Y tú dirás ¿qué diantre es esto?

Te cuento. En este array "de texto" determino 3 objetos que tienen:
1º un número identificativo (01)
2ª un valor determinado (item1)
3º un texto asociado (texto1)

Verás que cada uno de los 3 objetos están separados por "@" y, dentro de ellos, cada uno de sus elementos están separados por ">"

Los caracteres de separación son arbitrarios. Puedes escoger los que quieras, incluso, cadenas compuestas como "<=>". Lo importante de estos caracteres o cadenas es que no los utilices en el "texto normal" de tu aplicación.

Para cargar todo esto en arrays dentro de flash, sólo tengo que hacer un "split":

Código :

Objetos = elArrray.split ("@");


Con esto el array Objetos adquiere estos valores:

Objetos[0] = 01>tiem1>texto1
Objetos[1] = 02>tiem2>texto2
Objetos[2] = 03>tiem3>texto3

De igual forma, para obtener los elementos de cada objeto, hago un nuevo split:

Código :

elementosObj1 = Objetos[0].split(">")


con lo que obtendré:

elementosObj1[0] = 01
elementosObj1[1] = item1
elementosObj1[2] = texto1

Y así sucesivamente.

Sé que no es exactamente lo que necesitas, pero espero que te sirva como pista para conseguir meter tus arrays asociativos en el flash.

Suerte.

Por CidDeMizar

81 de clabLevel



 

msie7
Citar            
MensajeEscrito el 22 Abr 2009 01:57 pm
Muchísimas Gracias "CidDeMizar"

La idea es tan sencilla como buenísima. Me ha servido de mucho y no sólo para este caso. Diferentes caracteres para separar filas(;) y columnas (,) y realizar los split por separado.

En este caso, tendría que modificar el PHP para evitar los nombres de los campos (campo1:...) antes de los valores de cada campo. Otro inconveniente, es que sólo me genera un array unidimensional, asunto que se podría resolver con dos bucles anidados para ir recorriendo todo el contenido.

Si no aparece otra solución, utilizaré esta. No sé porqué tengo la impresión de que debe haber algo que cargue un array con el valor de una variable....No sé...

Pero te agradezco mucho que me hayas iluminado con algo tan simple y tan valioso a la vez...

Un abrazo...

Por ahp

1 de clabLevel



 

msie
Citar            
MensajeEscrito el 22 Abr 2009 02:36 pm
De nada, compañero. A mandar.

Por CidDeMizar

81 de clabLevel



 

msie7

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.