Warum geht <QByteArray>.split("Split") nicht

Alles rund um die Programmierung mit Qt
qtp
Beiträge: 62
Registriert: 12. Februar 2007 19:37
Kontaktdaten:

Warum geht <QByteArray>.split("Split") nicht

Beitrag von qtp »

Hy,

in meinem Code lese ich ein QByteArray aus und möchte es teilen. Dafür gibt es ja die Fkt. split().
Der muss man aber ein char übergeben und ich stehe gerade völlig auf dem Schlauch, wie ich da "Split" übergeben muss?

Derzeit noch so (wird nicht kompiliert):

Code: Alles auswählen

QByteArray ba;
QList<QByteArray> baList;
// ba wird mit Daten gefüllt
baList=ba.split("Split"); //->geht nicht!!??
May-C
Beiträge: 20
Registriert: 28. März 2007 20:37

Beitrag von May-C »

"Split" ist ja wohl kein char oder ?

Folgendes wird funktionieren:

Code: Alles auswählen

baList=ba.split('s');
qtp
Beiträge: 62
Registriert: 12. Februar 2007 19:37
Kontaktdaten:

Beitrag von qtp »

Stimmt!, Klar! :D

Aber ich brauche unbedingt die Möglichkeit mehrere zeichen als Splitter zu benutzen, da es zu wahrscheinlich ist, dass das eine Zeichen auch nur so da drin ist!
@udisello
Beiträge: 50
Registriert: 19. März 2007 14:58
Wohnort: Sachsen

Beitrag von @udisello »

Dann pack das ganze in einen String und wende dessen Split Funktion an.
QStringList split ( const QString & sep, SplitBehavior behavior = KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const
MfG @udisello

Qt Version 4.3.0, MS VS 2005
qtp
Beiträge: 62
Registriert: 12. Februar 2007 19:37
Kontaktdaten:

Beitrag von qtp »

Und kann ich dann danach das einzelne Teile des QStringList wieder in QByteArrays zurückverwandeln?
@udisello
Beiträge: 50
Registriert: 19. März 2007 14:58
Wohnort: Sachsen

Beitrag von @udisello »

Sollte kein Problem darstellen. Einfach über die Stringliste jagen und
QByteArray & append ( const QString & str )
verwenden.
MfG @udisello

Qt Version 4.3.0, MS VS 2005
qtp
Beiträge: 62
Registriert: 12. Februar 2007 19:37
Kontaktdaten:

Beitrag von qtp »

Mmh, jetzt hab ich aber ein anderes problem: Ich habe das QByteArray durch

Code: Alles auswählen

QString str(ba);
in ein QString umgewandelt, aber str hat nicht den Inhalt von ba, sondern nur die ersten 3 Zeichen. Warum denn das?
@udisello
Beiträge: 50
Registriert: 19. März 2007 14:58
Wohnort: Sachsen

Beitrag von @udisello »

was steht denn in ba?
MfG @udisello

Qt Version 4.3.0, MS VS 2005
qtp
Beiträge: 62
Registriert: 12. Februar 2007 19:37
Kontaktdaten:

Beitrag von qtp »

Der Inhalt einer ganzen .dat Datei!
@udisello
Beiträge: 50
Registriert: 19. März 2007 14:58
Wohnort: Sachsen

Beitrag von @udisello »

Dann liegt es vielleicht daran
QString::QString ( const QByteArray & ba )

Constructs a string initialized with the byte array ba. The given byte array is converted to Unicode using fromAscii(). Stops copying at the first 0 character, otherwise copies the entire byte array.
MfG @udisello

Qt Version 4.3.0, MS VS 2005
qtp
Beiträge: 62
Registriert: 12. Februar 2007 19:37
Kontaktdaten:

Beitrag von qtp »

Mmh, und wie kann ich das trotzdem alles in den String kopieren?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Gar nicht. Mach es manuell. So aufwendig ist es nicht, eine Split-Methode nachzubilden.
qtp
Beiträge: 62
Registriert: 12. Februar 2007 19:37
Kontaktdaten:

Beitrag von qtp »

Mmh, Kannst du mir vllt. einen kleinen Denkanstoß geben? (bisschen Code?)
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

qtp hat geschrieben:Der Inhalt einer ganzen .dat Datei!
Dann solltest Du das einlesen der Datei noch mal überdenken. Bisher hast Du es anscheinend mit QIODevice::readAll() gemacht, besser wäre QTextStream::readAll(). Da könntest Du ein Encoding setzen und hättest es sofort in einem String.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
qtp
Beiträge: 62
Registriert: 12. Februar 2007 19:37
Kontaktdaten:

Beitrag von qtp »

Das mit QTextStream hab ich schon probiert, aber da stimmt der Inhalt des QStrings nicht mehr mit dem Original in der Datei überein!

EDIT: Was meinst du mit Encoding setzen ?
Zuletzt geändert von qtp am 4. Juli 2007 12:34, insgesamt 2-mal geändert.
Antworten