Alles rund um die Programmierung mit Qt
qtp
Beiträge: 62 Registriert: 12. Februar 2007 19:37
Kontaktdaten:
Beitrag
von qtp » 3. Juli 2007 12:51
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 » 3. Juli 2007 13:10
"Split" ist ja wohl kein char oder ?
Folgendes wird funktionieren:
qtp
Beiträge: 62 Registriert: 12. Februar 2007 19:37
Kontaktdaten:
Beitrag
von qtp » 3. Juli 2007 13:24
Stimmt!, Klar!
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 » 3. Juli 2007 13:28
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 » 3. Juli 2007 13:59
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 » 3. Juli 2007 14:15
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 » 3. Juli 2007 15:51
Mmh, jetzt hab ich aber ein anderes problem: Ich habe das QByteArray durch
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 » 3. Juli 2007 16:02
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 » 4. Juli 2007 11:26
Der Inhalt einer ganzen .dat Datei!
@udisello
Beiträge: 50 Registriert: 19. März 2007 14:58
Wohnort: Sachsen
Beitrag
von @udisello » 4. Juli 2007 11:29
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 » 4. Juli 2007 11:38
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 » 4. Juli 2007 12:19
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 » 4. Juli 2007 12:22
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 » 4. Juli 2007 12:28
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 » 4. Juli 2007 12:32
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.