Aktuelle Zeit: 28.03.2024, 11:26

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 21 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: xml auslesen!
BeitragVerfasst: 26.11.2007, 22:20 
Offline

Registriert: 11.05.2007, 16:35
Beiträge: 31
irr: 1.3.1
dev-c++: 4.9.9.2


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: xml auslesen!
BeitragVerfasst: 27.11.2007, 11:23 
Offline
Moderator
Benutzeravatar

Registriert: 11.03.2007, 20:25
Beiträge: 556
Wohnort: Frankfurt/Main
ok ich weiß nich ob das jetzt in der version schon so war dass es einfach eine createIrrXMLReader-fkt im irr::io gab...
eine alternative, die auf jeden fall (!) funktioniert ist:
Code:
#include "irrlicht.h"
using namespace irr;
using namespace io;

int main(){
   IrrlichtDevice* device = createDevice(EDT_NULL);
    IXMLReaderUTF8* xml = device->getFileSystem()->createXMLReaderUTF8("file.xml");

    // mach den xml-lese kram

    xml->drop();
    device->drop();

    device = createDevice(EDT_WAS_AUCH_IMMER);

}

also falls du irgendwelche daten zum erstellen des device aus dem xml liest.

_________________
yo. life's so bloody short.
Ihr dachtet Schulfernsehn sei die ultimative Folter? Falsch: Fahrstuhlmusik, extra leise.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: xml auslesen!
BeitragVerfasst: 27.11.2007, 16:33 
Offline

Registriert: 11.05.2007, 16:35
Beiträge: 31
kaum zu glauben
Zitat:
main.cpp: In function `int main()':
main.cpp:6: error: `EDT_NULL' undeclared (first use this function)
main.cpp:6: error: (Each undeclared identifier is reported only once for each function it appears in.)
main.cpp:7: error: `IXMLReaderUTF8' undeclared (first use this function)
main.cpp:7: error: `xml' undeclared (first use this function)
main.cpp:7: error: 'class irr::io::IFileSystem' has no member named 'createXMLReaderUTF8'

main.cpp:14: error: `EDT_WAS_AUCH_IMMER' undeclared (first use this function)

make.exe: *** [main.o] Error 1

Execution terminated

Wenn keiner mehr eine idee hat, nehme ich nen anderes framework zum xml auslesen.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: xml auslesen!
BeitragVerfasst: 27.11.2007, 16:54 
Offline
Moderator
Benutzeravatar

Registriert: 11.03.2007, 20:25
Beiträge: 556
Wohnort: Frankfurt/Main
ja nee also sry das war jetzt echt mein fehler.
is ja auch pseudocode..

muss natürlich heißen video::EDT_NULL..
udn das EDT_... gibts ja nich.
aber sonst..

also hier mal ein programm was ich auch getestet habe, also nicht nur ausm kopf..
Code:
#include <irrlicht.h>
#include <stdio.h>

using namespace irr;


using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;

int main()
{
    IrrlichtDevice* device=createDevice(EDT_NULL);
    IXMLReaderUTF8* xml = device->getFileSystem()->createXMLReaderUTF8("file.xml");

    while(xml->read())
    {
        printf("%s",xml->getNodeData());
    }


    xml->drop();
    device->drop();
    return 0;
}

_________________
yo. life's so bloody short.
Ihr dachtet Schulfernsehn sei die ultimative Folter? Falsch: Fahrstuhlmusik, extra leise.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: xml auslesen!
BeitragVerfasst: 27.11.2007, 17:03 
Offline

Registriert: 11.05.2007, 16:35
Beiträge: 31
Danke für deine hilfe, aber ich mache es glaub ich wie anders.
Zitat:
I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include" -I"C:/Users/Desktop/wapp/include" -g3

Untitled1.cpp: In function `int main()':
Untitled1.cpp:16: error: `IXMLReaderUTF8' undeclared (first use this function)
Untitled1.cpp:16: error: (Each undeclared identifier is reported only once for each function it appears in.)
Untitled1.cpp:16: error: `xml' undeclared (first use this function)
Untitled1.cpp:16: error: 'class irr::io::IFileSystem' has no member named 'createXMLReaderUTF8'

make.exe: *** [Untitled1.o] Error 1

Execution terminated


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: xml auslesen!
BeitragVerfasst: 27.11.2007, 17:19 
Offline
Moderator
Benutzeravatar

Registriert: 11.03.2007, 20:25
Beiträge: 556
Wohnort: Frankfurt/Main
hmm naja du könntest auch auf 1.4 aktualisieren. weiß nich obs das bringt.
ansonsten, feel free to wear gar nix. ;)

_________________
yo. life's so bloody short.
Ihr dachtet Schulfernsehn sei die ultimative Folter? Falsch: Fahrstuhlmusik, extra leise.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: xml auslesen!
BeitragVerfasst: 27.11.2007, 17:50 
Offline
Newsposter
Benutzeravatar

Registriert: 12.03.2007, 10:42
Beiträge: 338
Wohnort: Berlin
wenn du es nich hinkriegst benutz doch tinyxml das benutz ich auch für mein MainMenu zur configuration


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: xml auslesen!
BeitragVerfasst: 27.11.2007, 18:42 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
oder einfach das hier *werbung mach*

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: xml auslesen!
BeitragVerfasst: 21.01.2008, 21:38 
Offline

Registriert: 16.01.2008, 12:31
Beiträge: 79
In der Headerdatei folgende Includes:
Code:
#include <irrlicht.h>
#include <irrXML.h>
#include <string>
#include <iostream> // Wobei ich gerade nicht weiss wofür ich das brauchte.


Code:
void CSettings::Load(std::string fileName)
{
  irr::io::IrrXMLReader* xml = irr::io::createIrrXMLReader(fileName.c_str());

  if (xml == 0)
    return; // file could not be opened

  bool isScreenOpen = false;
  bool isWidthOpen = false;
  bool isHeightOpen = false;
  bool isBppOpen = false;
  bool isFullScreenOpen = false;

  // parse the file until end reached
  while(xml->read())
  {
    switch(xml->getNodeType())
    {
    case irr::io::EXN_ELEMENT:
      {
        std::string data = xml->getNodeData();
        if (data == "width")
        {
          isWidthOpen = true;
        } else if(data == "height") {
          isHeightOpen = true;
        } else if( data == "bpp") {
          isBppOpen = true;
        } else if(data == "fullscreen") {
          isFullScreenOpen = true;
        }
        break;
      } // end irr::io::EXN_ELEMENT
    case irr::io::EXN_ELEMENT_END:
      {
        std::string data = xml->getNodeData();
        if (data == "width")
        {
          isWidthOpen = false;
        } else if(data == "height") {
          isHeightOpen = false;
        } else if( data == "bpp") {
          isBppOpen = false;
        } else if(data == "fullscreen") {
          isFullScreenOpen = false;
        }
        break;
      } // end irr::io::EXN_ELEMENT_END
    case irr::io::EXN_TEXT:
      {
        std::string data = xml->getNodeData();
        if(isWidthOpen)
        {
          this->screenWidthValue = atoi(data.c_str());
        } else if(isHeightOpen) {
           this->screenHeightValue = atoi(data.c_str());
        } else if(isBppOpen) {
          this->screenBppValue = atoi(data.c_str());
        } else if(isFullScreenOpen) {
          __int32 i = atoi(data.c_str());
          if (i == 0) {
            this->isFullScreenValue = false;
          } else {
            this->isFullScreenValue = true;
          }
        }
        break;
      } // end irr::io::EXN_TEXT
    } // end switch
  } // end while

  delete xml;
}



Die Datei dazu sieht so aus:
Code:
<xml>
  <screen>
    <width>1024</width>
    <height>768</height>
    <bpp>16</bpp>
    <fullscreen>0</fullscreen>
  </screen>
</xml>


Das ganze wäre auch noch variabler machbar, in dem man eine Klasse baut die von std::map<std::string, std::string> erbt. Und entsprechende Methoden zum Konvertieren hat.
Also in etwa so.
Code:

class MySett : std::map<std::string, std::string>
{
public:
  __int16 GetInt16(std::string key);
  __int32 GetInt32(std::string key);
  std::string GetString(std::string key);
// etc.
};

Das ganze , in dem man z.B. alle Werte in eine std::map<std::string, std::string> einliest, dann hätte man wieder sowas wie *.ini Dateien.


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 21 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de