Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-11-2003, 23:54   #1 (permalink)
Nub
 
Benutzerbild von Hehler
 
Registriert seit: Aug 2002
Beiträge: 357
Talking externe Daten - brauchbar

Ahoi allesamt
Da mich Variablen-Dateien stören , in denen haufenweise nummerierte String-Variablen (und nur die) stehen , hab ich mich mal daran gemacht , des etwas erträglicher zu gestalten - daher nun dieses Skript :
ActionScript:
  1. Format = function (Obj) { //formatiert importierte Daten zur besseren Verarbeitung
  2.     for (x in Obj) {
  3.         if (Obj[x].charAt(0) =="{" && Obj[x].charAt(Obj[x].length-1) == "}") {// nach Object prüfen
  4.             var Arr = Obj[x].slice(1,-1).split(",");
  5.             Obj[x] = {};
  6.             for (e in Arr) {
  7.                 Arr[e] = Arr[e].split(":");
  8.                 Obj[x][Arr[e][0]] = Obj[x][Arr[e][1]];
  9.             }
  10.             Format (Obj[x]);
  11.         }
  12.         else if (Obj[x].charAt(0) =="[" && Obj[x].charAt(Obj[x].length-1) == "]") {// nach Array prüfen
  13.             Obj[x] = Obj[x].slice(1,-1).split(",");
  14.             Format (Obj[x]);
  15.         }
  16.         else if ((Obj[x].charAt(0) =='"' && Obj[x].charAt(Obj[x].length-1) == '"') || (Obj[x].charAt(0) =="'" && Obj[x].charAt(Obj[x].length-1) == "'")) Obj[x] = Obj[x].slice(1,-1);// nach String prüfen
  17.         else if (!isNaN(Obj[x])) Obj[x] = Number(Obj[x]); // nach Zahl prüfen
  18.     }
  19. }
des bedingt jetz eine strenge Formatierung(keineAbstände zwischenArray-Elementen und so) seitens der Textdatei , aber das is ja nich weiter schlimm

Des Problem is , bisher funktioniert des nur flach - verschachtelte Arrays und Objekte sind nich möglich ... Mir fällt leider im Moment nix kompaktes ein , um des zu ändern .. hat da jemand ne Idee ?
__________________

Wozu Freiheit ?

"Eine gute Theorie ist das Praktischste, was es gibt."
Gustav Robert Kirchhoff (1827-87), dt. Physiker

"Human beings, who are almost unique in having the ability to learn from the experience of others, are also remarkable for their apparent disinclination to do so."
Douglas Adams
Hehler ist offline   Mit Zitat antworten
Alt 27-11-2003, 01:06   #2 (permalink)
anyway
Gast
 
Beiträge: n/a
Mh, jo...ich weiss schon gar nicht so recht, wie das...

ActionScript:
  1. else if ((Obj[x].charAt(0) =='"' && Obj[x].charAt(Obj[x].length-1) == '"') || (Obj[x].charAt(0) =="'" && Obj[x].charAt(Obj[x].length-1) == "'")) Obj[x] = Obj[x].slice(1,-1);// nach String prüfen
  2.  


funktionieren soll...

und..vielleicht mißverstehe ich ja das ziel Deiner Unternehmung, aber.: Es gibt doch XML...

anyway.

Geändert von anyway (27-11-2003 um 01:07 Uhr)
  Mit Zitat antworten
Alt 27-11-2003, 08:36   #3 (permalink)
.--. .. ..- ...
 
Benutzerbild von pius
 
Registriert seit: Jul 2002
Ort: munich
Beiträge: 1.345
jep anyway .... XML !!!

womit ich mal wieder auf 'xml2tree' verweisen möchte

xml nach array parsen - ganz einfach ...
__________________
one out of many

Geändert von pius (27-11-2003 um 08:37 Uhr)
pius ist offline   Mit Zitat antworten
Alt 27-11-2003, 10:50   #4 (permalink)
Nub
 
Benutzerbild von Hehler
 
Registriert seit: Aug 2002
Beiträge: 357
Jo , da habt Ihr wohl Recht - aber als ich des XML Zeugs mal ausprobiert hab , is nur'n großer Haufen nutzloser Mist rausgekommen , daher hab ich des über Bord geworfen ...

@anyway
die Zeile kuckt , ob die Variable von Anführungszeichen eingegrenzt ist und entfernt sie ...

@pius
Ich werd mir das mal durchlesen , vielleicht hilft's ja ..
__________________

Wozu Freiheit ?

"Eine gute Theorie ist das Praktischste, was es gibt."
Gustav Robert Kirchhoff (1827-87), dt. Physiker

"Human beings, who are almost unique in having the ability to learn from the experience of others, are also remarkable for their apparent disinclination to do so."
Douglas Adams
Hehler ist offline   Mit Zitat antworten
Alt 27-11-2003, 14:19   #5 (permalink)
Nub
 
Benutzerbild von Hehler
 
Registriert seit: Aug 2002
Beiträge: 357
@pius
Ich hab mir des mal durchgelesen , und denke , ich bin jetz wieder um einiges schlauer - danke dafür Aber für mein Projekt verwend ich trotzdem lieber erstmal meine Formatierung , zumal ich die schon ganz gut find ..

@alle
So sieht mein Fortschritt jetz aus :
ActionScript:
  1. Format = function (Obj) { //formatiert importierte Daten zur besseren Verarbeitung
  2.     for (x in Obj) {
  3.         if (Obj[x].charAt(0) =="{" && Obj[x].charAt(Obj[x].length-1) == "}") {// nach Object prüfen
  4.             Obj[x] = Objekt (Obj[x]);
  5.             Format (Obj[x]);
  6.         }
  7.         else if (Obj[x].charAt(0) =="[" && Obj[x].charAt(Obj[x].length-1) == "]") {// nach Array prüfen
  8.             Obj[x] = Feld (Obj[x]);
  9.             Format (Obj[x]);
  10.         }
  11.         else if (Obj[x].charAt(0) =='"' && Obj[x].charAt(Obj[x].length-1) == '"') Obj[x] = Obj[x].slice(1,-1);// nach String prüfen
  12.         else if (!isNaN(Obj[x])) Obj[x] = Number(Obj[x]); // nach Zahl prüfen
  13.     }
  14.     return Obj
  15. }
  16.  
  17.  
  18. Objekt = function (Str) {
  19.     var Obj = {} , Block = 0 , s = -1 , trenn = false ;
  20.     Str = Str.slice(1,-1);
  21.     for (i=Str.length-1 ; i>=0 ; i--) {
  22.         if (Str.charAt(i)=="," && trenn) {
  23.             Obj[Str.slice(i+1,trenn)] = Str.slice(trenn+1);
  24.             Str = Str.slice(0,i);
  25.             trenn = false;
  26.         }
  27.         else if (i==0 && trenn) Obj[Str.slice(i+1,trenn)] = Str.slice(trenn+1);
  28.         else if (Str.charAt(i)==":" && Block==0) trenn = i;
  29.         else if (Str.charAt(i) == "}" || Str.charAt(i) == "]") Block += 1;
  30.         else if (Str.charAt(i) == "{" || Str.charAt(i) == "[") Block -= 1;
  31.         else if (Str.charAt(i) == '"') Block += (s*=-1);
  32.     }
  33.     return Obj;
  34. }
  35. Feld = function (Str) {// Feld = Array ;)
  36.     var Arr = [] , Block = 0 , s = -1 ;
  37.     Str = Str.slice(1,-1);
  38.     for (i=Str.length-1 ; i>=0 ; i--) {
  39.         if (Str.charAt(i)=="," && Block==0) {
  40.             Arr.unshift(Str.slice(i+1));
  41.             Str = Str.slice(0,i);
  42.         }
  43.         else if (i==0) Arr.unshift(Str);       
  44.         else if (Str.charAt(i) == "}" || Str.charAt(i) == "]") Block += 1;
  45.         else if (Str.charAt(i) == "{" || Str.charAt(i) == "[") Block -= 1;
  46.         else if (Str.charAt(i) == '"') Block += (s*=-1);
  47.     }
  48.     return Arr;
  49. }
scheint soweit alles zu stimmen - bei meinen Tests sind keine Fehler aufgetreten Ich glaub , des is jetz gebrauchsfertig - damit kann man nu .txts im AS Format schreiben und importieren

Wenn's da Probleme oder Fehler gibt , würd ich die gern erfahren , ansonsten wünsch ich den Lesern hiervon viel Spaß damit
__________________

Wozu Freiheit ?

"Eine gute Theorie ist das Praktischste, was es gibt."
Gustav Robert Kirchhoff (1827-87), dt. Physiker

"Human beings, who are almost unique in having the ability to learn from the experience of others, are also remarkable for their apparent disinclination to do so."
Douglas Adams
Hehler 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



Alle Zeitangaben in WEZ +1. Es ist jetzt 08:51 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele