[qt 4.1.2] QByteArray->replace will nicht, wie es soll
Verfasst: 9. Mai 2006 23:25
schoenen guten abend :)
wie schon im titel genannt, habe ich ein problem mit der replace funktion
dabei erstelle mittels
ein mit 0x00 gefuelltes QByteArray (512Byte)
mit der nachfolgenden funktion soll bei aufruf mit entsprechenden parametern zb.
das problem ist jetzt, dass das ergebnis in meinen augen recht unverstaendlich ist, da das array
a) auf 502 byte schrumpft
b) werte teilweise nicht geschrieben wurden
c) positionen teilweise nicht stimmen
d) etc.
meine frage ist daher:
was mache ich falsch *g
als ergebnis soll ein 512 byte grosses qbytearray entstehen wobei
- die ersten 4 bit die uebergebene zeit
- die naechsten die uebergebene zahl 0
- die naechsten die uebergebene clustergroesse
- etc.
enthalten sollen
ich hoffe, mir kann jmd helfen :)
mfg
wie schon im titel genannt, habe ich ein problem mit der replace funktion
Code: Alles auswählen
QByteArray & QByteArray::replace ( int pos, int len, const char * after )Code: Alles auswählen
QByteArray tmp = QByteArray::QByteArray(512, 0x00);mit der nachfolgenden funktion soll bei aufruf mit entsprechenden parametern zb.
Code: Alles auswählen
writeSuBlock(&tmp, 16*1024, Time_t, name, 4, 0, 0);Code: Alles auswählen
void writeSuBlock(QByteArray *tmp, size_t clustersize, size_t thetime, QString name, size_t maxsize, size_t frcount, size_t nodecount)
{
tmp->replace(0, 4, (const char *)&thetime);
QMessageBox::warning(NULL, QString::fromUtf8("nufs v%1").arg(VERSION), QString::fromUtf8("size of tmp 1: %1 - %2").arg(tmp->size()).arg(thetime), 1, 0, 0);
tmp->replace(4, 4, (const char *)&nodecount);
QMessageBox::warning(NULL, QString::fromUtf8("nufs v%1").arg(VERSION), QString::fromUtf8("size of tmp 2: %1 - %2").arg(tmp->size()).arg(nodecount), 1, 0, 0);
tmp->replace(8, 4, (const char *)&clustersize);
QMessageBox::warning(NULL, QString::fromUtf8("nufs v%1").arg(VERSION), QString::fromUtf8("size of tmp 3: %1 - %2").arg(tmp->size()).arg(clustersize), 1, 0, 0);
tmp->replace(12, name.size(), name.toLatin1());
QMessageBox::warning(NULL, QString::fromUtf8("nufs v%1").arg(VERSION), QString::fromUtf8("size of tmp 4: %1 - %2").arg(tmp->size()).arg(name), 1, 0, 0);
tmp->replace(267, 4, (const char *)&frcount);
QMessageBox::warning(NULL, QString::fromUtf8("nufs v%1").arg(VERSION), QString::fromUtf8("size of tmp 5: %1 - %2").arg(tmp->size()).arg(frcount), 1, 0, 0);
tmp->replace(271, 4, (const char *)&maxsize);
QMessageBox::warning(NULL, QString::fromUtf8("nufs v%1").arg(VERSION), QString::fromUtf8("size of tmp 6: %1 - %2").arg(tmp->size()).arg(maxsize), 1, 0, 0);
}a) auf 502 byte schrumpft
b) werte teilweise nicht geschrieben wurden
c) positionen teilweise nicht stimmen
d) etc.
meine frage ist daher:
was mache ich falsch *g
als ergebnis soll ein 512 byte grosses qbytearray entstehen wobei
- die ersten 4 bit die uebergebene zeit
- die naechsten die uebergebene zahl 0
- die naechsten die uebergebene clustergroesse
- etc.
enthalten sollen
ich hoffe, mir kann jmd helfen :)
mfg