Seite 1 von 1

[gelöst] MFC(CString) auf QT(QString)

Verfasst: 7. Juni 2005 15:17
von ][ch!ll$mOk@h][
Hallo,
ich versuche ein kleines Programm von der MFC auf QT zu portieren.

ich finde einfach keine Lösung zu folgendem Problem:
wie mache ich aus MFC
fertig.Format("%s%02X", fertig_temp, (char)msg78);
oder
len_temp.Format("%02X", number.GetLength() );
etwas identisches in QT???
(alle variablen hier sind CStrings)

ich habe es versucht mit:
len_temp=len_temp.setNum(strlen(number),16 );
(jetzt QString!)
aber ich kann mir nicht vorstellen, dass das identisch sein soll!
Vielleicht kann mir ja jemand helfen!

Verfasst: 7. Juni 2005 17:15
von Christian81

THX!!

Verfasst: 8. Juni 2005 10:11
von ][ch!ll$mOk@h][
ja ich habe das jetzt mal so reingeschrieben!Das scheint zu funzen!
Diese Funktion hatte ich glatt übersehen.

Danke für die schnelle Hilfe.

Verfasst: 8. Juni 2005 11:25
von Christian81
Allerdings würde ich trotzdem versuchen, dies hier zu verwenden:
http://doc.trolltech.com/3.3/qstring.html#arg
Da hast du bei i18n weniger Probleme...

i18n brauch ich im mom nicht

Verfasst: 8. Juni 2005 11:41
von ][ch!ll$mOk@h][
Ich will mein Programm ersteinmal so zu laufen bekommen, da ist die Übersetzung ersteinmal egal!
;)
ich werde mir das zu gegebener Zeit mal genauer anschauen!

THX!!!

%s ????

Verfasst: 9. Juni 2005 10:30
von ][ch!ll$mOk@h][
so er übersetzt das aber mit einer Warnung, dass er zur Laufzeit abstürzen würde.
Wieso nimmt der das nicht??
fertig=fertig.sprintf("%s%02X",fertig_temp,(unsigned char)convnum);
Fehlermeldung:
warning: cannot pass objects of non-POD type `class QString' through `...'; call will abort at runtime

das nimmt er:
len_temp=len_temp.sprintf("%02X",strlen(message));

Was soll ich tun was soll ich machen??? :(

Verfasst: 9. Juni 2005 10:54
von FlorianBecker
fertig_temp scheint dabei ein QString zu sein. Damit die Warnung geht und die ausgabe funktioniert musst du den String in einen c_str umwandeln, mit QString wäre das ascii() oder latin1()

Verfasst: 9. Juni 2005 10:55
von Christian81
Ich vermute mal fertig_temp ist vom Typ QString, oder? Du musst ihn erst nach .latin1() konvertieren wenn du sprintf verwenden willst. Deshalb habe ich ja .arg() vorgeschlagen.
Also so ( fertig und fertig_temp sind vom Typ QString);

Code: Alles auswählen

fertig = QString("%1%2").arg(fertig_temp).arg(convnum[i],2,16);
oder

Code: Alles auswählen

fertig=fertig_temp+QString::number(convnum[i],16);
Allerdings kannst Du hier nicht die Länge einstellen.

Verfasst: 9. Juni 2005 10:57
von FlorianBecker
Schneller :D

*g*

Verfasst: 9. Juni 2005 11:25
von ][ch!ll$mOk@h][
jo funzt!

aber nicht dass ihr euch noch streitet! ;)

Vielen Dank!
ich hatte es mit .utf8() versucht, wie es im Assistant beschrieben war.
...aber latin1 is besser! ;)

Verfasst: 9. Juni 2005 11:35
von FlorianBecker
Sollte deine Signatur nicht so lauten:
Vergessen du musst, was früher du gelernt hast???
:D

Verfasst: 9. Juni 2005 11:41
von ][ch!ll$mOk@h][
Da könntest du recht haben.:)...ich wurde auch schon darauf hingewiesen!

aber ich finde so klingt es noch abstruser!

Verfasst: 13. Juni 2005 13:25
von Hakener
Auch wenn es nicht wirklich wichtig ist,
der Spruch stammt von Joda!

Original:
You must unlearn what you have learned.

Im deutschem Film:
Vergessen du musst was früher du gelernt.


Gruß ERiK

Verfasst: 13. Juni 2005 13:35
von FlorianBecker
Ich habe es nicht aus dem englischen übersetzt, sondern von dem bereits vorhandenen Spruch. Und das er von Meister Joda stammt ist den mitredenden bestimmt klar.

Außerdem heißt es ... what you have learned.

Also doch ein hast.