• SpryFlashCMS das Flash CMS
  • TWUMBLE - bald online
  • Adobe User Group
Zurück   Flashforum > Flash und Server > Flash und Datenbanken

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 14-03-2010, 15:33   #1 (Permalink)
Neuer User
 
Registriert seit: Nov 2009
Beiträge: 9
Daten aus CSV-Datei in Flash einlesen

Hi,

ich habe eine CSV-Datei mit der Struktur

1;3;5;9;14
2;4;8;16;25

Um in Flash mit diesen Werten zu arbeiten, nutze ich derzeit diesen (anscheinend fehlerhaften) Code:

function loadCSV(file:String):Void{
var lv:LoadVars = new LoadVars();
lv.onLoad = function(success:Boolean) {
if(success){
splitCSV(this.csv);
}
}
lv.load(file);
}

function splitCSV(csv:String):Void{
var rows:Array = csv.split("\n");
var values:Array = new Array(rows.length);
for(var i:Number=0; i<rows.length; i++){
values[i] = rows[i].split(";");
}
for(var i:Number=0; i<values.length; i++){
for(var j:Number=0; j<values[i].length; j++){
trace("Zeile "+(i+1)+", Spalte "+(j+1)+": "+values[i][j]);
}
}
}

loadCSV("test.csv");

Wäre schön, wenn mir jemand bei dem Problem helfen könnte. Vielen Dank schon einmal!
salomon80 ist offline   Mit Zitat antworten
Alt 14-03-2010, 16:18   #2 (Permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg // München
Beiträge: 944
servus salomon,

so sollte es funktionieren
PHP-Code:
function loadCSV(file:String):Void {
    var 
lv:LoadVars = new LoadVars();
    
lv.onLoad = function(success:Boolean) {
        if (
success) {
            
splitCSV(unescape(lv.toString()).split("=&onLoad=[type Function]")[0]);//da war der fehler
        
}
    };
    
lv.load(file);
}

function 
splitCSV(csv:String):Void {
    var 
rows:Array = csv.split("\r\n").join("\n").split("\r").join("\n").split("\n");//damit sollte linux, mac und win funktionieren
    
var values:Array = new Array(rows.length);
    for (var 
i:Number 0rows.lengthi++) {
        
values[i] = rows[i].split(";");
    }
    for (var 
i:Number 0values.lengthi++) {
        for (var 
j:Number 0values[i].lengthj++) {
            
trace("Zeile " + (1) + ", Spalte " + (1) + ": " values[i][j]);
        }
    }
}

loadCSV("test.csv"); 
mfg

sx
__________________
pasta lover
shin10 ist offline   Mit Zitat antworten
Alt 15-03-2010, 00:42   #3 (Permalink)
Neuer User
 
Registriert seit: Nov 2009
Beiträge: 9
Vielen Dank!

Das funktioniert im Grunde einwandfrei.

Doch leider schaffe ich es noch immer nicht, mit den Werten, die nun im Ausgabefenster angezeigt werden, zu arbeiten. Wie spreche ich diese nun an?

Danke nochmals!
salomon80 ist offline   Mit Zitat antworten
Alt 15-03-2010, 00:49   #4 (Permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg // München
Beiträge: 944
kann ich dir erst sagen, wenn ich weiß was du vorhast.
visitenkarten, stundenpläne... ?

beschreibs ruhig ausführlich - ich geh jetzt schlafen

mfg

sx
__________________
pasta lover
shin10 ist offline   Mit Zitat antworten
Alt 15-03-2010, 22:06   #5 (Permalink)
Neuer User
 
Registriert seit: Nov 2009
Beiträge: 9
Vorab schon mal Danke für Deine Mühe!

Ich betreibe einen ausschließlich Flash-basierten Web-Auftritt meiner Fußball-Mannschaft. U. a. gehören dazu Spielerportraits, die sich in einem eigenem Fenster/Tab öffnen. Bislang standen da so Dinge drin wie Geburtsort, Lieblingsverein, ehemalige Vereine, etc... Es zeigte sich jedoch, dass man den Leuten ständig hinterrennt, um derartige Informationen einzuholen. Also möchte ich dort beispielsweise auflisten, wie viele Spiele jemand gemacht, wie viele Tore er geschossen hat und ähnliche Dinge, die sich aber selbstverständlich wöchentlich ändern können.

Deshalb schwebt mir vor, die Änderungen in eine Excel-Tabelle einzugeben und mir diese als csv-Datei in der oben beschriebenen Form ausspucken zu lassen. Im Flash-Code stünde dann der Verweis auf den Ort der sich ggf. wöchentlich ändernden Variable und ich bräuchte nichts weiter zu tun, als im Wochenrhytmus die csv-Datei anzupassen. Andernfalls müsste ich im selben Zeitraum kleinteilig mindestens 20 Flash-Files anpassen; und das kann ja keiner wollen.

Danke nochmals für Deine Anregungen!
salomon80 ist offline   Mit Zitat antworten
Alt 15-03-2010, 22:58   #6 (Permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg // München
Beiträge: 944
na gut,

und wo hakt es? wie soll das dann aussehen? offenbar hast du schon ne seite. poste doch einfach mal nen link. dann kann man sich am leichtesten ein bild davon machen.

mfg

sx
__________________
pasta lover
shin10 ist offline   Mit Zitat antworten
Alt 16-03-2010, 01:01   #7 (Permalink)
Neuer User
 
Registriert seit: Nov 2009
Beiträge: 9
Gerne: home (Wenn Du Dir die Spielerportraits anschaust, dann bitte das von Bardies El-Mahgzangy, da dieses bereits nach den neuen Maßgaben geformt ist)

Mein aktuelles Problem besteht darin, dass die Daten aus der csv-Datei zwar eingelesen werden, ich diese aber nicht mit einem Namen ansprechen kann.

Diesen benötige ich jedoch, um in einem zu erzeugendem Textfeld den Wert widerzugeben. Also wäre es schön, wenn der eingelesene Wert einer Variable zugeordnet wird.

PHP-Code:
function splitCSV(csv:String):Void {
    var 
rows:Array = csv.split("\r\n").join("\n").split("\r").join("\n").split("\n");
    var 
values:Array = new Array(rows.length);
    for (var 
i:Number 0rows.lengthi++) {
        
values[i] = rows[i].split(";");
    }
    for (var 
i:Number 0values.lengthi++) {
        for (var 
j:Number 0values[i].lengthj++) {
            
trace("Zeile " + (1) + ", Spalte " + (1) + ": " values[i][j]);
            var [
"z"+(i)+"s"+(j)]=values[i][j];//Hier habe ich eine Zeile ergänzt
        
}
    }

Deshalb habe ich den Code wie angezeigt ergänzt. Da erhalte ich dann aber folgende Fehlermeldung:

PHP-Code:
**Error** Scene=Scene 1layer=Layer 1frame=1:Line 20Identifier expected
                 
var ["z"+(i)+"s"+(j)]=values[i][j];

**
Error** Scene=Scene 1layer=Layer 1frame=1:Line 23Unexpected '}' encountered
     
}

Total ActionScript Errors2      Reported Errors
Ich hoffe, Du kannst mir auch dabei helfen. Mein Dank ist Dir in jedem Fall abermals gewiss.

Geändert von salomon80 (16-03-2010 um 01:03 Uhr)
salomon80 ist offline   Mit Zitat antworten
Alt 16-03-2010, 01:21   #8 (Permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg // München
Beiträge: 944
ok,

so wie ich das aus dem code rauslese möchtest du die daten mit zeilen und spalten nummer ansprechen können.
PHP-Code:
var ["z"+(i)+"s"+(j)]=... 
funktioniert nicht. man kann keine variablen dynamisch definieren.
du kannst aber alles in ein objekt schreiben bzw. ein zweidimensionales array

z.b.:
PHP-Code:
function splitCSV(csv:String):Void {
    var 
tabelle:Array = csv.split("\r\n").join("\n").split("\r").join("\n").split("\n");
    for (var 
i:Number 0tabelle.lengthi++) {
        
tabelle[i] = tabelle[i].split(";");//ersetzt den string wieder durch ein array, wie zuvor schon oben
    
}

dann kannst du bspw. mit
PHP-Code:
var zeile1;
var 
spalte2;
trace(tabelle[zeile][spalte]) 
die daten einer zelle (hier zeile 2, reihe 3 (es wird ja mit 0 begonnen)) ausgeben/ansprechen

ich hoffe ich hab mich nicht vertippt.
ist das was du willst?

mfg

sx
__________________
pasta lover
shin10 ist offline   Mit Zitat antworten
Alt 16-03-2010, 07:48   #9 (Permalink)
Neuer User
 
Registriert seit: Nov 2009
Beiträge: 9
Ja, genau so soll das am Ende möglich sein. Schön handlich!

Doch leider bekomme ich derzeit immer nur ein "undefined" ausgegeben. Ich habe den von Dir in Deinem letztem Post genommen erst trivial eingefügt, dann an verschiedenen Stellen eingesetzt. Das "undefined" blieb leider fortwährend.

Ich muss allerdings auch zugeben, dass meine Erfolgsaussichten eher mau waren, da das Array-Konzept für mich quasi neu ist (Wir hatten das mal im Schul-Informatik-Unterricht; das ist aber schon ein Weilchen her).

Wenn es für Dich nicht zu unübersichtlich ist, poste ich meinen aktuellen Code und bitte Dich ihn durchzuschauen. Vielen Dank zum wiederholten Male!

PHP-Code:
function loadCSV(file:String):Void {
    var 
lv:LoadVars = new LoadVars();
    
lv.onLoad = function(success:Boolean) {
        if (
success) {
            
splitCSV(unescape(lv.toString()).split("=&onLoad=[type Function]")[0]);//da war der fehler
        
}
    };
    
lv.load(file);
}

function 
splitCSV(csv:String):Void {
    var 
rows:Array = csv.split("\r\n").join("\n").split("\r").join("\n").split("\n");
    var 
values:Array = new Array(rows.length);
    var 
tabelle:Array = csv.split("\r\n").join("\n").split("\r").join("\n").split("\n");
    for (var 
i:Number 0tabelle.lengthi++) {
        
tabelle[i] = tabelle[i].split(";")
    }
    for (var 
i:Number 0rows.lengthi++) {
        
values[i] = rows[i].split(";");
    }
    for (var 
i:Number 0values.lengthi++) {
        for (var 
j:Number 0values[i].lengthj++) {
            
trace("Zeile " + (1) + ", Spalte " + (1) + ": " values[i][j]);
        }
    }
}

loadCSV("test.csv"); 

this.createTextField("test",getNextHighestDepth(),0,0,100,20);
var 
zeile=0;
var 
spalte=0;
trace (tabelle[zeile][spalte]);
test.text=tabelle[zeile][spalte]; 
salomon80 ist offline   Mit Zitat antworten
Alt 16-03-2010, 14:31   #10 (Permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg // München
Beiträge: 944
liegt daran, dass die datei noch nicht geladen war
der aufruf ist natürlich erst danach erfolgreich
PHP-Code:
function loadCSV(file:String):Void {
    var 
lv:LoadVars = new LoadVars();
    
lv.onLoad = function(success:Boolean) {
        if (
success) {
            
splitCSV(unescape(lv.toString()).split("=&onLoad=[type Function]")[0]);//da war der fehler
        
}
    };
    
lv.load(file);
}
var 
zeile=0;
var 
spalte=0;
var 
tabelle:Array;
function 
splitCSV(csv:String):Void {
    
tabelle csv.toString().split("\r\n").join("\n").split("\r").join("\n").split("\n");
    for (var 
i:Number 0tabelle.lengthi++) {
        
tabelle[i] = tabelle[i].split(";")
    }
    
test.text=tabelle[zeile][spalte]; 
}

loadCSV("test.csv"); 

this.createTextField("test",getNextHighestDepth(),0,0,100,20);

//nur mal zum test für dich: erst gibt er immer undefined raus,
//wenn die datei geladen und verarbeitet wurde den wert
onEnterFrame = function(){
    
trace(tabelle[zeile][spalte]);

__________________
pasta lover
shin10 ist offline   Mit Zitat antworten
Alt 21-03-2010, 21:33   #11 (Permalink)
Neuer User
 
Registriert seit: Nov 2009
Beiträge: 9
Sorry, dass ich mich erst so spät zurückmelde. Aber über mich trifft gerade Umzugs-/Renovierungsstress herein. Ich habe es aber schon mal kurz anschauen können und glaube, damit jetzt meine Vorhaben umsetzen zu können. Dafür und für den schon zuvor beschrittenen Weg vielen Dank (abermals ). Sollten nochmals Hindernisse auftreten, hoffe ich, mich nochmals bei Dir melden zu können. In jedem Fall für die kompetente und stets unmittelbare Hilfe Danke!
salomon80 ist offline   Mit Zitat antworten
Alt 21-03-2010, 23:26   #12 (Permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg // München
Beiträge: 944
gern geschehen,
wenn was ist meld dich einfach.

bis denne und viel spass beim umzug

sx
__________________
pasta lover
shin10 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Combobox - Daten aus xml Datei einlesen - Wie bekomme ich das hin? Mirco_XP Flash CS3 Professional 5 03-09-2008 16:26
Daten aus .csv datei einlesen AchimLerm Flash MX 1 20-05-2006 14:17
daten aus datenbank ins flash einlesen engel73 Flash und Datenbanken 3 19-11-2003 14:05
Daten aus einer txt-Datei einlesen girl-scout Flash 4 und Flash 5 9 19-08-2003 19:41
html- datei oder ähnliche datei in flash-film einlesen ! Snake_2002 HTML und CSS 1 23-05-2002 16:12


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:48 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2010 Marc Thiele und Sascha Wolter.