Inhalte aus TXT-File in zwei Textfelder ausgeben

intercorni

Erfahrenes Mitglied
Hallo,

ich möchte den Inhalte eines TXT-Files (extern) mit verschiedenen Inhalten über zwei
Textfelder ausgeben, aber dabei die Inhalte den beiden Textfeldern auch zuordnen können.

In meinem TXT-File stehen zwei Variablen: "my_html_text" und "my_html_text2".
Diesen beiden Variablen sind Inhalte zugeordnet, z.B. so:
Code:
my_html_text=
<p align="left">
<textformat leftmargin="5" rightmargin="5">
<font face="verdana, arial, _sans" size="10" color="#000000">
<a href="asfunction:textlink,film.swf">
Beschreibung1
</a>
</font>
</p>
my_html_text2=
<p align="left">
<textformat leftmargin="5" rightmargin="5">
<font face="verdana, arial, _sans" size="10" color="#000000">
Beschreibung2
</font>
</p>

Nun möchte ich, dass Textfeld1 "mytxt" alles was zur Variable "my_html_text" zugeordent ist ausgibt und Textfeld2 "mytxt2" alles zur Variable "my_html_text2" ausgibt.
Bei mir ist es mom so, dass trotz Vergabe zweier unterschiedlicher Varibalen im TXT-File trotzdem die Inhalte beider Variablen ausgegeben werden, obwohl ich das TXT-File so einlade:
Code:
this.loadVariables("linkliste_web.txt");
this.onData = function() {
	mytxt.htmlText = my_html_text.split("\r\n").join("").split("\n").join("");
	zeilen = mytxt.bottomScroll;
	gesamt = mytxt.bottomScroll+mytxt.maxscroll-1;
	delete my_html_text;
};
Ich vermute, dass meine Variable-Zuordnung noch nicht richtig ist, oder?

Gruss,

Cornel
 
Hi,

in diesem Fall sollte das LoadVars-Objekt (oder noch besser: das XML-Objekt) Dein Freund sein. ;) Schau Dich einfach mal im Forum (insbesondere in den FAQ) nach diesen Begriffen um.

Gruß
.
 
Hallo,

danke für die Antwort.
Ich habe da schonmal einen Lösungsansatz, komme aber nicht richtig weiter:

Code:
lv = new LoadVars();
lv.onLoad = function() {
        //mytxt.htmlText = my_html_text.split("rn").join("").split("n").join("");

        trace(this.my_html_text);

        trace(this.my_html_text2);
        zeilen = mytxt.bottomScroll;
        gesamt = mytxt.bottomScroll+mytxt.maxscroll-1;
        delete my_html_text;
};

lv.load("linkliste_web.txt");

Wie bekomme ich nun die Variable "my_html_text2" auf ein zweites Textfeld "mytxt2"?

Gruss,

Cornel
 
Hi,

auf die Schnelle sollte folgendes gehen:
Code:
var lv = new LoadVars();
lv.onLoad = function() {
	var t1 =  this.my_html_text.split("\n").join();
	var t2 =  this.my_html_text2.split("\n").join();
	t1 =  t1.split("\r").join();
	t2 =  t2.split("\r").join();
	tf1.htmlText = t1;
	tf2.htmlText = t2;
}

lv.load("textdatei.txt");
(wobei tf1 und tf2 die Instanznamen der Textfelder sind, und in der Textdatei vor "my_html_text2=" ein & muss).

Eleganter wäre es wohl, den html-Text in einer XML-Datei als CDATA (Character-Data) zu speichern. Dann musst Du nur noch die html-Entitäten in lesbare Zeichen umwandeln (dazu habe ich hier schon mehrmals eine Funktion namens "parseET" gepostet - such mal danach ;) ).

Gruß

P.S.: Wohl noch einfacher: Das ganze in einer XML-Datei speichern (ohne die Variablen, dafür die beiden Textblöcke in zwei "Hauptknoten"), in ein XML-Objekt mit ignoreWhite = true einzulesen und den Inhalt der beiden Hauptknoten mit der toString-Methode den Textfeldern zu weisen. ;)
.
 
Zuletzt bearbeitet:
Hallo,

ja vielen Dank, so bekomme ich die Inhalte der beiden Variablen in die ScrollPaine.
Allerdings wird vor dem Inhalt in der ScrollPaine Punkte und Anführungszeichen gesetzt, die im TXT-File gar nicht vorhanden sind.
Wie kann man die wegbekommen?

Mein TXT-File schaut so aus:

HTML:
&my_html_text=
<p align="left">
<textformat leftmargin="5" rightmargin="5">
<font face="verdana, arial, _sans" size="10" color="#000000">
<a href="asfunction:textlink,film.swf">
Beschreibung1
</a>
</font>
</p>
&my_html_text2=
<p align="left">
<textformat leftmargin="5" rightmargin="5">
<font face="verdana, arial, _sans" size="10" color="#000000">
Beschreibung2
</font>
</p>&
 
Ups - stimmt! ;) Nun, das LoadVars-Objekt ist eigentlich nur zum Einlesen von URL-codierten Dateien bestimmt.

Ich würde wie gesagt ein XML-Objekt verwenden und die html-Inhalte als Character-Data speichern:
Code:
<node>
    <![CDATA[ -- Hier der Text ]]>
</node>
<node>
    <![CDATA[ -- Hier der andere Text ]]>
</node>

Gruß
.
 
Hm, nagut, dann komme ich wohl nicht umhin, mit XML zu programmieren.

Hier mein erstes kurzes XML-Beispiel:
Code:
<?xml version='1.0' encoding='utf-8'?>
<inhalte>
<linkliste>
	<link linkname="movie1.swf" linkbeschreibung="Movie 1"/>
        <link linkname="movie2.swf" linkbeschreibung="Movie 2"/>
</linkliste>
<beschreibung>
	<link beschreibung="Das ist die Beschreibung 1"/>
        <link beschreibung="Das ist die Beschreibung 2"/>
</beschreibung>
</inhalte>

Dann habe ich XML in Flash eingeladen und die Inhalte auf die beiden
ScrollPaines "mytxt1" und "mytxt2" ausgegeben:

Code:
stop();
meinXML = new XML();
meinXML.ignoreWhite = true;
meinXML.load("einfaches_textfeld.xml");
meinXML.onLoad = function(success) {
		meinXML_beschreibung = []; // Erstellt ein neues Array namens meinXML_namen,
		meinXML_link = []; // Erstellt ein neues Array namens meinXML_link,
		meinXML_linkname = []; // Erstellt ein neues Array namens meinXML_linkname,
		if (success) { //wenn das laden der File erfolgreich war
        for (var i=0; i<meinXML.childNodes[0].childNodes.length; i++) {//for schleife-> für
                        //alle elemente die firstChild (childNode[0]) besitzt...
        meinXML_beschreibung[i] = meinXML.firstChild.childNodes[1].childNodes[i].attributes.beschreibung; //namen Attribut
                        //des aktuellen Elements auslesen und ins XMLdaten_namen
                        //array schreiben
		meinXML_link[i] = meinXML.firstChild.childNodes[0].childNodes[i].attributes.linkname;
		meinXML_linkname[i] = meinXML.firstChild.childNodes[0].childNodes[i].attributes.linkbeschreibung;

                }
		
        //Aktionen folgen:
		_root.mytxt1.htmlText = meinXML_beschreibung[0];
		_root.mytxt2.htmlText = meinXML_linkbeschreibung[0];
        }
}

//Textfeldformatierung 1
mytxt1._width = 260;
mytxt1._height = 120;
mytxt1._x=11;
mytxt1._y=262;
//Ausrichtung der Scrollbar 1 am Textfeld 1
mybar1.setSize(mytxt1._height);
mybar1._x = mytxt1._x+mytxt1._width;

//Textfeldformatierung 2
mytxt2._width = 260;
mytxt2._height = 120;
mytxt2._x=271;
mytxt2._y=138;
//Ausrichtung der Scrollbar 2 am Textfeld 2
mybar2.setSize(mytxt2._height);
mybar2._x = mytxt2._x+mytxt._width;

Wie bekomme ich es aber hin, dass alle im XML-File vorhandenen Linkbeschreibungen "linkbeschreibung" in der ScrollPaine aufgelistet und dann auch noch mit einem Link "linkname" versehen werden, sodass ich die im XML-File enthaltenen MCs z.B. in einen Container einladen kann?

Viele Grüße,

Cornel
 
So ich habe mal probiert, die Anzahl der Linkbeschreibungen auszulesen, jedoch klappts leider so nicht:
Code:
stop();
meinXML = new XML();
meinXML.ignoreWhite = true;
meinXML.load("einfaches_textfeld.xml");
meinXML.onLoad = function(success) {
		meinXML_beschreibung = []; // Erstellt ein neues Array namens meinXML_namen,
		meinXML_link = []; // Erstellt ein neues Array namens meinXML_link,
		meinXML_linkname = []; // Erstellt ein neues Array namens meinXML_linkname,
		anz = []; //neues array
		if (success) { //wenn das laden der File erfolgreich war
		//anzahl linkbeschreibung auslesen--------------------------------
		        for (var i=0; i<anzahl; i++) {
                anz[i] = XMLdaten.firstChild.firstChild.childNodes[i].attributes.linkbeschreibung;//auslesen
				}
		//--------------------------------------------------------------------------------
        for (var i=0; i<meinXML.childNodes[0].childNodes.length; i++) {//for schleife-> für
                        //alle elemente die firstChild (childNode[0]) besitzt...
        meinXML_beschreibung[i] = meinXML.firstChild.childNodes[1].childNodes[i].attributes.beschreibung; //namen Attribut
                        //des aktuellen Elements auslesen und ins XMLdaten_namen
                        //array schreiben
		meinXML_link[i] = meinXML.firstChild.childNodes[0].childNodes[i].attributes.linkname;
		meinXML_linkname[i] = meinXML.firstChild.childNodes[0].childNodes[i].attributes.linkbeschreibung;

                }
		
        //Aktionen folgen:
		_root.mytxt1.htmlText = meinXML_beschreibung[0];
		_root.mytxt2.htmlText = meinXML_linkname[0];
        }
}

//Textfeldformatierung 1
mytxt1._width = 260;
mytxt1._height = 120;
mytxt1._x=11;
mytxt1._y=262;
//Ausrichtung der Scrollbar 1 am Textfeld 1
mybar1.setSize(mytxt1._height);
mybar1._x = mytxt1._x+mytxt1._width;

//Textfeldformatierung 2
mytxt2._width = 260;
mytxt2._height = 120;
mytxt2._x=271;
mytxt2._y=138;
//Ausrichtung der Scrollbar 2 am Textfeld 2
mybar2.setSize(mytxt2._height);
mybar2._x = mytxt2._x+mytxt._width;

trace(anz[1]);
 
Zurück