Daten permanent speichern

Dieses Tutorial zeigt drei Wege, wie man Daten in einer externen Datei schreibt und diese später wieder auslesen kann. In jedem Beispiel verwenden wir die folgenden drei Variablen:

Framereate = 30
screenWidth = 1280
screenHeight = 1024

Original von „BUnzaga“ Brett Unzaga

1. String Array (*.txt Datei)

Der folgende Code erstellt eine einfache Text-Datei. Deren Inhalt sieht wie folgt aus:

30
1280
1024

//javascript Version einer 'Objekt-Klasse' 
function PersistantData(fr, sw, sh) 
{ 
  this.framerate = fr; 
  this.screenWidth = sw; 
  this.screenHeight = sh; 
} 
 
//deklariert, aber nicht definiert
var pd; 
 
//prüfen, ob die Datei schon existiert
function onInit()
{
  if(system.file.exists(system.folders.document+"persistantData.txt"))
  { 
    //wenn sie existiert, dann wird sie geöffnet 
    var fileIn = system.file.openRead(system.folders.document+"persistantData.txt"); 
 
    //die Daten werden in ein Array geladen
    var dataArray = fileIn.readStringArray(); 
 
    //und die Datei wird wieder geschlossen
    fileIn.close(); 
 
    //Daten an die parsePD Funktion übergeben 
    parsePD(dataArray);  
  } 
  else //falls die Datei nicht existiert
  { 
    //erzeugen einer neuen Datei
    var fileOut = system.file.openWrite(system.folders.document+"persistantData.txt"); 
 
    //erzeugen eines neuen Arrays
    var dataArray = new Array("30", "1280", "1024"); 
 
    //und das Ganze exportieren 
    fileOut.writeStringArray(dataArray); 
 
    //Datei wieder schließen
    fileOut.close(); 
 
    //Daten an die parsePD Funktion übergeben 
    parsePD(dataArray); 
 } 
}
 
//neues "PersistantData"-Objekt mit den übergebenen Daten erzeugen
function parsePD(pdArray) 
{ 
  //neues Objekt (pd) erzeugen
  pd = new PersistantData(pdArray[0], pdArray[1], pdArray[2]); 
}

2. Object String (*.txt Datei)

Dieser Code erzeugt eine Text-Datei die folgendermaßen aussieht:

({framerate:30, screenWidth:1280, screenHeight:1024})

//javascript Version einer 'Objekt-Klasse'
function PersistantData(fr, sw, sh)
{
  this.framerate = fr;
  this.screenWidth = sw;
  this.screenHeight = sh;
}
 
// pd deklarieren
var pd; 
 
function onInit()
{
  // prüfen, ob die Datei schon existiert
  if(system.file.exists(system.folders.document+"persistantData.txt"))
  {
    // Datei einlesen
    var fileIn = system.file.openRead(system.folders.document+"persistantData.txt");
 
    // Daten in ein PersistantData-Objekt umwandeln
    pd = eval(fileIn.readString());
 
    // Datei schließen
    fileIn.close();
  }
  else // falls die Datei nicht (mehr) existiert
  {
    // neues "PersistantData"-Objekt erzeugen und standard Werte zuweisen
    pd = new PersistantData(30, 1280, 1024);
 
    // erstellen und öffnen einer Datei namens 'persistantData.txt'
    var fileOut = system.file.openWrite(system.folders.document+"persistantData.txt");
 
    // Objekt in String umwandeln und in die Datei schreiben
    fileOut.writeString(pd.toSource());
 
    // Datei schließen
    fileOut.close();
  }
}

3. XML (*.xml Datei)

Die aus diesem Code resultierende .xml Datei sieht so aus:

<persistantData>
    <framerate>30</framerate>
    <screenWidth>1280</screenWidth>
    <screenHeight>1024</screenHeight>
<persistantData>

//javascript Version einer 'Objekt-Klasse'
function PersistantData(fr, sw, sh)
{
  this.framerate = fr;
  this.screenWidth = sw;
  this.screenHeight = sh;
}
 
// pd deklarieren
var pd;
 
function onInit()
{
  // prüfen, ob die Datei existiert
  if(system.file.exists("persistantData.xml"))
  {
    // wenn sie existiert, dann laden
    var fileIn = system.xml.loadDocument("persistantData.xml");
 
    // und an die "parsePD" Funktion übergeben
    parsePD(fileIn);
  }
  else // wenn sie nicht existiert, dann wird sie erzeugen
  {
    var fileOut = system.xml.createDocument();
 
    // mit Hilfsfunktionen werden die XML Daten erzeugt
    fileOut.addChild("persistantData");
    fileOut.selectSingle("persistantData").addChild("framerate").text = "[30]";
    fileOut.selectSingle("persistantData").addChild("screenWidth").text = "[1280]";
    fileOut.selectSingle("persistantData").addChild("screenHeight").text = "[1024]";
 
    // Datei speichern
    fileOut.save(system.folders.document+"persistantData.xml");
 
    // Daten an die "parsePD"-Funktion übergeben
    parsePD(fileOut);
  }
}
 
//Funktion um die XML Daten in ein "PersistantData"-Objekt zu konvertieren
function parsePD(xmlFile)
{
  // neues Objekt aus den XML Daten erzeugen
  pd = new PersistantData(parseInt(xmlFile.selectSingle("persistantData").selectSingle("framerate").text),
           parseInt(xmlFile.selectSingle("persistantData").selectSingle("screenWidth").text),
           parseInt(xmlFile.selectSingle("persistantData").selectSingle("screenHeight").text));
}

tutorials/dxstudio/daten_speichern.txt · Zuletzt geändert: 2009/07/25 23:15 von dave
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki Recent changes RSS feed Valid XHTML 1.0