in QBitArray umwandeln
-
Troll.Soft
- Beiträge: 190
- Registriert: 18. Juni 2008 09:52
- Wohnort: Hamburg
in QBitArray umwandeln
hallo,
kennt jemand eine Möglichkeit einen Qt-Typ in ein QBitArray umzuwandeln oder muß ich das selbst basteln. QVariant kann es nicht.
tschüß
Troll.Soft
kennt jemand eine Möglichkeit einen Qt-Typ in ein QBitArray umzuwandeln oder muß ich das selbst basteln. QVariant kann es nicht.
tschüß
Troll.Soft
-
Troll.Soft
- Beiträge: 190
- Registriert: 18. Juni 2008 09:52
- Wohnort: Hamburg
in erster Linie QStringupsala hat geschrieben:Welchen Qt-Typ?
und was ist das????Und ein toBitArray bei QVariant gibt es.
Code: Alles auswählen
QBitArray QVariant::toBitArray () const
Returns the variant as a QBitArray if the variant has type() BitArray; otherwise returns an empty bit array.
See also canConvert() and convert().-
Troll.Soft
- Beiträge: 190
- Registriert: 18. Juni 2008 09:52
- Wohnort: Hamburg
Am Besten richtig.upsala hat geschrieben:Und wie soll bitteschön eine Konvertierung von einem QString zu einem QBitArray aussehen?
Alle Objecte im Speicher haben nun mal ein definiertes Bitmuster, das man folglicherweise auch in einem BitArray darstellen kann. Soll heißen man kann legal und sinnvoll alle Typen als Bitmuster darstellen.
In diesem Fall liefert eine fremde dll mir Daten (als QVariant) und den Typ der Daten (die nicht immer mit QVariantTypen korrespondieren, dann wird der nächst beste Typ genommen). Die dll liefert ein Bitfeld und QVariant meldet einen String. Offensichtlich ein Fehler in dieser dll. Schaue ich mir das Binärmuster der Buchstaben an, stellt sich heraus das das korrekte Binärmuster angekommen ist.
Nun kann ich das mit C Mitteln (Union) selber umwandeln, eine Qt-Methode wäre mir lieber.
tschüß
Troll.Soft
Naja, Qt iss nen Framework fuer c++.eine Qt-Methode wäre mir lieber.
Das heisst, es erweitert den umfang, und nicht, es reimplementiert alles neu. Also fuer spezielle Anwendungsfaelle wirst wohl doch auf C++ oder sogar C zurueckgreifen muessen.
WIe genau sieht der "String" aus, davon iss natuerlich die konvertierung abhaengig ! Also steht da sowas wie "01101010101" drin ?Die dll liefert ein Bitfeld und QVariant meldet einen String.
wie idendifizierst du das es ein bitfeld ist ?
Weisst du das anhand anderer parameter oder der Logic ? oder kommen strings als Rueckgabewert ned vor ?
Sowas wuerd mir viel mehr Sorgen machen.
Ciao ...
-
Troll.Soft
- Beiträge: 190
- Registriert: 18. Juni 2008 09:52
- Wohnort: Hamburg
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Häh? Ich kapier nichts - Du hast noch nicht ein Beispiel gebracht was denn jetzt falsch läuft...Troll.Soft hat geschrieben: Der fälschlicherweise gelieferte String enthält nur im ersten Byte das gerantiert richtige Bitmuster.
Hoffentlich korrigiert Nokia diesen Fehler bald.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
-
Troll.Soft
- Beiträge: 190
- Registriert: 18. Juni 2008 09:52
- Wohnort: Hamburg
Und ich dachte, ich sei ausführlich gewesen seufz.Christian81 hat geschrieben:Häh? Ich kapier nichts - Du hast noch nicht ein Beispiel gebracht was denn jetzt falsch läuft...
Also:
die Dll liefert zwei Werte. Ein QVariant und ein enum mit dem Typ. Die Typen entsprechen nicht ganz den C++ Qt Typen.
1) Wenn Type == Integer mit ein Byte Länge komme ich mit Variant.toInt() an den Wert.
2) Wenn Type == String komme ich mit Variant.toString() an den Wert. usw.
...
n) Wenn Type == Bitfeld erwarte ich mit Variant.toBitField() den Wert. Allein das klappt nicht, denn im Variant steht ein String. Wohl ein Fehler der Dll.
Gebe ich ein Bitfeld mit 8 Bit in die Dll ein, liefert mir die Dll einen String der Länge 1. Betrachte ich dieses eine Zeichen als Byte (Asccii) und schaue mir den Binärwert an (also die 8 Nullen und Einsen aus denen ein Byte besteht) ist das exakt das Bitfeld was in die Dll eingegeben wurde.
uff
tschüß
Troll.Soft
-
Troll.Soft
- Beiträge: 190
- Registriert: 18. Juni 2008 09:52
- Wohnort: Hamburg