[MX] variablen anzahl

sancho

Erfahrenes Mitglied
¡hola!
hab folgendes problem (kam zwar glaub ich schonmal hier irgendwo aber ich finds nicht mehr)

ich hab variablen die sich im namen nur durch eine ziffer am ende unterscheiden. sie stehen alle in einer textdatei die ich einlade. wie kann ich jetzt immer aktuell rausfinden wie viele variablen in der datei stehen?

*sancho*
 
Hi sancho

gar nicht so einfach.

in meiner text.txt steht:
name=sancho&drinks=tequilla&hobbys=flash

im ertsen frame
PHP:
// erstellen einer loadvars instanz
var box = new LoadVars();
// laden der values aus der textdatei
box.load("D:/Flash Nov/Load Vars/daten/text.txt");
// erstellen einer array instanz um die variablen der 
// textdatei zu speichern
a1 = new Array();
// eventhandler, der uns meldet, wenn die daten vollständig 
// vom interpretor eingelesen wurden
box.onLoad = function(succes) {
	// variable um den array-index zu simulieren
	var n = 0;
	// box onLoad muss weg, weil es sonst als 
	// eigenschaft von box im array landet
	delete this.onLoad;
	// wenn daten geladen
	if (succes) {
		// durchlaufen der eigenschaften von box
		for (var i in box) {
			//einlesen in den array
			a1[n++] = i;
		}
	}
	// ausgabe anzahl variablen im textfile
	trace(a1.length);
	// ausgabe aller variablen in der textdatei
	for (var i2 in a1) {
		trace(a1[i2]);
	}
};


skyla...
:)
 
hi
danke skyla das klappt soweit sehr gut. nur eine frage noch: wohin werden die variablen durch
PHP:
box.load("D:/Flash Nov/Load Vars/daten/text.txt");
geladen? sie sind da, aber ich finde sie nicht mehr, kann sie also auch nicht abrufen.

meine textdatei sieht so aus:
news1 = inhalt
&news2 = inhalt2
&news3 = inhalt3

deswegen ruf ich die variablen dynamisch ab mit text = _level0["news"+n]. ging bis jetzt auch da ich die variablen per loadVariables() befel auf level0 geladen habe, aber jetzt weis ich nicht wo sie mit dem neuen befehl hingeladen werden..

*sancho*
 
Ja, wo wohl ?? in Box vielleicht ?;)

PHP:
// erstellen einer loadvars instanz
var box = new LoadVars();
// jetzt laden wir alle deine variablen aus der textdatei in unser loadVars Objekt
box.load("D:/Flash Nov/Load Vars/daten/text.txt");
// box ist nun nichts anderes als ein assoziativer array und man kann somit
// eigentlich normal auf ihn zugreifen. in deinem fall also trace(box.news1).
// beim loadVars_objekt muss man aber berücksichtigen, dass die daten zuerst 
// geladen werden müssen, weshalb wir den event handler onLoad verwenden.
box.onLoad = function(geladen) {
	if (geladen) {
		trace(box.news1);
	}
};


das ganze hat halt ein nachteil: das loadVars-Objekt box ist leider
kein array, sondern ein ganz normales Objekt, was du so

PHP:
trace(LoadVars.prototype.__proto__=== Object.prototype)

testen kannst: das resutat ist true.

das hat den nachteil, dass wir die array-methoden und eigenschaften auf unsere box nicht ansetzen können.

PHP:
trace(box.length)

sollte folglich undefined auswerfen.

Folglich musst du mein script aus meiner ersten antwort nehmen und die box-eigenschaften in einen array einlesen. Mit der Kombination, die du dann hast, solltest du in der lage sein, beliebig auf deine txt-variablen zuzugreifen. da kommt dann die stärke von loadVars voll zur geltung. so erklärt sich auch, dass mm empfiehlt, loadVariables nicht mehr zu verwenden.

aber mir erscheint das ehrlich gesagt ziemlich kompliziert. einen einfacheren weg sehe ich aber nicht.

das resultat ist aber absolut überzeugend:

du kannst aus jedem file: txt, php, cf alle variablen in flash erkennen, sortieren, anzeigen und das gleiche natürlich mit den dazugehörenden werten.


:eek: ;)
 
@Skyla:
*selberpatsch* mist das häte ich eigentlich auch selbst sehen müssen..

aber es klappt jetzt alles.
thx at everyone..

*sancho*
 
ok, irgendwas läuft doch wieder nicht.. lokal ist alles in ordnung und klappt super. aber wenn ich das ganze hochlade klappts nicht mehr. muss man bei dem script irgenwas beachten damit das auch aufm server funzt? die ordnerstruktur und die pfade sind noch genau so wie auf meinem rechner also kanns daran nicht liegen.

*sancho*
 
@geist: kein problem, wieso ? hab's ja in der ersten antwort gemacht...

@sancho: werd's morgen mal testen. aber bis dahin hast du's sicher selbst raus.

gruss skyla
 
wobei ein problem gibt es da natürlich schon, weil du in einem
array keine 'pairs' wie zb name = sancho speichern kannst. das kannst du nur in objekten nicht aber in arrays.

das problem um das es hier geht, ist folgendes: wie kann ich die array-methoden, wie zB array.sort() auf einen assoziativen array anwenden ?

aber eigentlich muss man meine beiden scripte oben nur zusammenbasteln und man hat die lösung.

wie würdest du es machen ?
 

Neue Beiträge

Zurück