mal wieder ein newbie on board.
Ich brauche bei folgender Aufgabe Hilfe.
Ich möchte eine txt-Datei Byteweise einlesen, einen Offset aufaddieren und das Ergebnis Wordweise in eine txt-Datei zurück schreiben.
Zur Info: Ich habe eine txt.Datei mit ASCII-Zeichen. Die wird in ein EPROM gebrannt um Texte an ein LCD aus zu geben.
Jetzt soll ein anderes LCD mit einem anderen Zeichensatz verwendet werden. Der neue Zeichensatz stellt jedes Zeichen mit einem WORD da.
Nun brauche ich also ein Programm, dass die bestehenden Texte vom alten in den neuen Zeichensatz umwandelt.
Also wird z.B. 0x41 für ein "A" ausgelesen. Darauf muss dann 0xA380 aufaddiert werden und das Ergebnis (0xA3C1) in eine neue Datei geschrieben werden.
Als zusatz muss in der Schleife noch darauf geachtet werden, ob das eingelesene Byte 0x0A (ein Zeilenumbruch) ist, das soll als 0x000A weg geschrieben werden.
Hier der Code, den ich schon mal habe.
Was meint Ihr zu der Grundfunktion?
Wie schreibe ich die Daten dann als WORD weg?
Code: Alles auswählen
#include <qfile.h>
#include <qstring.h>
#include <iostream>
#include <qmessagebox.h>
void Hauptfenster::init()
{
QFile lesefile( "input.txt" );
QFile schreibfile( "output.txt" );
int lesechar;
int schreibchar;
int offset=41921;
bool loop;
loop = true;
if (lesefile.open ( IO_ReadOnly ))
{
if (schreibfile.open ( IO_WriteOnly ))
{
while ( loop )
{
lesechar = lesefile.getch();
if (lesechar==-1)
{
// Fileende Schleife beenden
loop = false;
}
else
{
if ( lesechar == 10 )
{ // wenn 0A
schreibfile.putch(10); // 0A schreiben
}
else
{
schreibchar=lesechar + offset;
schreibfile.putch(schreibchar);
}
}
} // while (loop)
} // if (schreibfile.open ( IO_WriteOnly )
else
{
//QMessageBox::critical (0,"",QString::QString("Datei kann nicht geoeffnet werden: output.txt !!!"));
} // else if (schreibfile.open ( IO_WriteOnly )
schreibfile.close();
}
} // if (lesefile.open ( IO_ReadOnly ))
else
{
//QMessageBox::critical (0,"",QString::QString("Datei kann nicht geoeffnet werden: input.txt !!!"));
return;
}
lesefile.close();
textLabel1.setText( "Dateioperation beendet..." );
return;
}