Da dies mein erster Theard in diesen Forum ist, kurz was zu meiner Person. Ich bin Schüler und beschäftige mich viel mit Pc's. Seit kurzen befasse ich mich mit Irrlicht um ein kleines Game mit meiner Freundin zusammen zu erstellen. Da ich das programmieren übernehme und sie das Designern, bin ich dabei einen Editor zu erstellen, da habe ich nun folgende Frage.
Ich möchte in eine normale Textdatei eine variable speichern. Der Typ ist wchar_t [20]. Mein Problem liegt nun darin, dass in die Datei nur der erste Buchstabe des Strings gespeichert wird. Ich habe hier mal meine Funktion, in der wird erst die Länge einer Variable angegeben und dann die Variable selbst.
Code:
void saveObajkteSonstige()
{
wchar_t name[MAX_OBJEKTE_STRING];
wchar_t mesh[MAX_OBJEKTE_STRING];
wchar_t textur[MAX_OBJEKTE_STRING];
char czeichen[3];
int izeichen;
char cname[MAX_OBJEKTE_STRING];
strcpy(cname,"loling");
cSonstige.setPointerStart();
io::IWriteFile* write = device->getFileSystem()->createAndWriteFile("test.txt");
for(int i=0;i<cSonstige.getMaxEntry();i++)
{
cSonstige.getNextEntry(name,mesh,textur);
strcpy(czeichen,"");
izeichen = wcslen(name);
if(izeichen < 10)
{
sprintf(czeichen, "0%d", izeichen);
}
else
{
sprintf(czeichen, "%d", izeichen);
}
write->write(czeichen,2);
write->write(name,izeichen);
strcpy(czeichen,"");
izeichen = wcslen(mesh);
if(izeichen < 10)
{
sprintf(czeichen, "0%d", izeichen);
}
else
{
sprintf(czeichen, "%d", izeichen);
}
write->write(czeichen,2);
write->write(mesh,izeichen);
strcpy(czeichen,"");
izeichen = wcslen(textur);
if(izeichen < 10)
{
sprintf(czeichen, "0%d", izeichen);
}
else
{
sprintf(czeichen, "%d", izeichen);
}
write->write(czeichen,2);
write->write(textur,izeichen);
}
}
Hier ist zum Verständnis auch mal der Code zum auslesen.
Code:
void loadObjekteSonstige()
{
for(int i=0;i<2;i++)
{
wchar_t name[MAX_OBJEKTE_STRING];
wchar_t mesh[MAX_OBJEKTE_STRING];
wchar_t textur[MAX_OBJEKTE_STRING];
char czeichen[2];
int izeichen;
io::IReadFile* read = device->getFileSystem()->createAndOpenFile("test.txt");
read->read(czeichen,2);
izeichen = atoi(czeichen);
read->read(name,izeichen);
read->read(czeichen,2);
izeichen = atoi(czeichen);
read->read(mesh,izeichen);
read->read(czeichen,2);
izeichen = atoi(czeichen);
read->read(textur,izeichen);
cSonstige.addEntry(name,mesh,textur);
}
}
Ich hoffe, ihr könnt mir helfen. Ich meine dies lässt sich auch mit Irr:XML erledigen, jedoch bin ich mir da nicht so sicher und ich habe irgendwie kein Tutorial gefunden, in dem es ausreichend und verständlich erklärt wurde.
Roba