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

Alles rund um die Programmierung mit Qt
Antworten
][ch!ll$mOk@h][
Beiträge: 6
Registriert: 7. Juni 2005 14:57

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

Beitrag 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!
][ch!ll$mOk@h][

"Vergessen du musst,was früher du hast gelernt!!!"
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
][ch!ll$mOk@h][
Beiträge: 6
Registriert: 7. Juni 2005 14:57

THX!!

Beitrag 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.
][ch!ll$mOk@h][

"Vergessen du musst,was früher du hast gelernt!!!"
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
][ch!ll$mOk@h][
Beiträge: 6
Registriert: 7. Juni 2005 14:57

i18n brauch ich im mom nicht

Beitrag 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!!!
][ch!ll$mOk@h][

"Vergessen du musst,was früher du hast gelernt!!!"
][ch!ll$mOk@h][
Beiträge: 6
Registriert: 7. Juni 2005 14:57

%s ????

Beitrag 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??? :(
][ch!ll$mOk@h][

"Vergessen du musst,was früher du hast gelernt!!!"
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag 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()
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Schneller :D
][ch!ll$mOk@h][
Beiträge: 6
Registriert: 7. Juni 2005 14:57

*g*

Beitrag 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! ;)
][ch!ll$mOk@h][

"Vergessen du musst,was früher du hast gelernt!!!"
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Sollte deine Signatur nicht so lauten:
Vergessen du musst, was früher du gelernt hast???
:D
][ch!ll$mOk@h][
Beiträge: 6
Registriert: 7. Juni 2005 14:57

Beitrag 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!
][ch!ll$mOk@h][

"Vergessen du musst,was früher du hast gelernt!!!"
Hakener
Beiträge: 8
Registriert: 8. Juni 2005 12:12

Beitrag 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
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag 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.
Antworten