QString Prob

Alles rund um die Programmierung mit Qt
Antworten
chrisgl
Beiträge: 17
Registriert: 23. Dezember 2006 14:46

QString Prob

Beitrag von chrisgl »

hi
versuche QString zu string konvertieren doch es klappt nicht. Habe schon diverse Threads gelesen und probiert aber jedesmal nur fehler.
Habe Qt4.2.2 zulaufen und versuche QString zu string zu konvertieren aber das klappt nicht.
Wäre über einen Vorschlag froh...
Volker
Beiträge: 343
Registriert: 30. Juni 2005 05:27

Beitrag von Volker »

Eine präzisere Fehlerbeschreibung wäre sinnvoll:
Was klappt denn nicht, bzw. was machst Du bisher?

Wenn Du einen STL String haben willst, sollte dir die Member Funktion von QString namens toStdString () weiterhelfen. Und wenn Du einen const char* haben willst, dann hilft die toLatin1().constData() weiter.
Oder auch das Makro qPrintable(QString)

war aber neulich schon mal irgendwo zu lesen
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
chrisgl
Beiträge: 17
Registriert: 23. Dezember 2006 14:46

Beitrag von chrisgl »

versuche folgendes:
lineEdit->text().toStdString();
Da schmiert er mir jedes mal ab. Im Debugger sieht das dann so aus:

Code: Alles auswählen

Eine Ausnahme (erste Chance) bei 0x10252758 (msvcr80d.dll) in wavLesen.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0xcccccbf4.
Unbehandelte Ausnahme bei 0x10252758 (msvcr80d.dll) in wavLesen.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0xcccccbf4.
Das Programm "[3140] wavLesen.exe: Systemeigen" wurde mit Code 0 (0x0) beendet.
Ich brauche schon ein ganz normalen string der wiederrum einer Fkt übergeben werden soll. Dieser String soll der Name einer Datei sein die in der Fkt geöffnet werden soll.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Du hast die Release-Qt-Dll im Debug-Modus oder umgekehrt benutzt. Hätte man qmake benutzt wäre das nicht passiert.
Ausserdem mal wieder meine Standardfrage - was will man mit einem std::string in einem Qt-Programm??
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
chrisgl
Beiträge: 17
Registriert: 23. Dezember 2006 14:46

Beitrag von chrisgl »

Könntest du mir das erklären
Release-Qt-Dll im Debug-Modus
und wie qmake an der Stelle eingesetzt wird.
Weis das es ein Standardfrage ist habe auch verschiedene Threads gefunden aber jeder versuch diese Antworten zunutzen ging gegen den Baum.
Ich habe mir vorher eine Funktion geschrieben die aus den Chunks einer wav Datei einige Informationen ausliest. Dies geschieht in dem ich der Funktion einen Dateinamen übergebe. Dies Funktioniert im CmD ohne Probleme aber jetzt würde ich gern aus einem LineEdit den Dateinamen holen und nun hat die Funktion das Problem das sie einen String erwartet.
Hmm naja gut wenn das alles nicht geht muss ich sehen wie ich die ganze Funktion umschreiben kann.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wenn du dein Programm als Debug kompilierst, muss gegen QtCored4.lib/QtGuid4.lib/... gelinkt werden. Bei Release dagegen QtCore4.lib/QtGui4.lib/...
Wie qmake funktioniert steht in der Doku.

Allerdings weiss ich trotzdem noch nicht wofür std:string gut sein soll... wenn der Funktion ein String übergeben wird (und sie von Dir ist) - warum muss es dann ein std:string sein? Wandelst Du diesen dann intern wenn du per QFile() die Datei öffnest wieder um? Bei der Konvertierung nach std::string gehen wichtige Infos verloren.

btw: Kann es sein dass die E-Mail Benachrichtigung nicht mehr funktioniert?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
chrisgl
Beiträge: 17
Registriert: 23. Dezember 2006 14:46

Beitrag von chrisgl »

das mit dem linken machen wir das ist kein Problem das nur ne Einstellung. Habe die Datei sonst mit fopen geöffnet gut dann versuche ich es mit QFile.
Das mit der Mailbenachritigung scheint etwas zu dauern aber sollte doch gehen.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wenn Du sie mit fopen() öffnest, solltest Du trotzdem keinen std::string übergeben. Da verlierst Du nämlich die Kodierung -> immer solange QString verwenden bis es nicht mehr geht um die Kodierung nicht zu verlieren.

Des weiteren ist fopen() nicht gut da auch dort die Kodierung verloren geht (bei der Konvertierung von QString nach char*) -> es kann also auch dort sein dass Du eine Datei mit Sonderzeichen nicht öffnen kannst. Also entweder benutzt Du dann wfopen() in Zusammenspiel mit QString::toUtf16() oder eben gleich QFile - dann wird alles intern korrekt geregelt.

Ich habe seit gestern gar keine Mail bekommen... evtl. der gmx-Spamfilter?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten