Probleme bei Rückgabe von QString
Verfasst: 5. Januar 2018 19:35
Hallo, ich bräuchte noch mal Eure Hilfe, denn irgendwie verzweifel ich momentan an einer scheinbar total simplen Sache
Ich lese über eine DLL Werte von einem externen Gerät ein und erhalte dabei eine unsigned char Array, das ich in einen String mit unterschiedlichen Formaten wandeln möchte. Dazu übergebe ich das Array mit einigen weiteren Parametern einer statischen Methode in einer separaten Klasse. Diese Methode sieht momentan wie folgt aus:
Als der Fehler auftrat, habe ich Schritt für Schritt alles auskommentiert und das ist momentan übrig. Der Aufruf hingegen sieht wie folgt aus:
Die DLL-Funktion "reader->MF_Getsnr()" funktioniert und ich erhalte auch die erwarteten Werte. Ohne Fehler erhalte ich einen Rückgabewert von 0, deshalb springt das Programm auch in die if-Bedingung und sollte dann mit dataToString() den entsprechend aufbereiteten String zurück erhalten.
Das ist momentan natürlich alles auskommentiert, weil ich direkt nach dem Aufruf in eine Exception renne:
Ich habe das Konzept in einem kleinen Testprojekt praktisch 1:1 nachgebaut und da funktioniert es. Die Prototypen sind absolut identisch mit den Aufrufen. Wenn ich den Code Schritt für Schritt debugge, dann ist eine Sache sehr merkwürdig:
Ich springe in die statische Methode und durchlaufe sie auch ohne Probleme, dann springe ich zurück zur aufrufenden Methode und sehe noch die Anzeigen:
dataString = ""
this = Wert: DataDisplay Typ: DataDisplay
Gehe ich dann einen Einzelschritt weiter, was wohl der eigentlichen Zuweisung entspricht, dann erhalte ich:
dataString = <unzugänglich>
Noch zur Info: Ich entwickel auf einem Windows 10 Rechner mit QT5.10 und QT-Creator. Als Compiler nutze ich MinGW und MSVC15. Der Fehler kommt bei beiden Compilern.
Hat jemand eine Idee, was ich hier übersehe??
Ich lese über eine DLL Werte von einem externen Gerät ein und erhalte dabei eine unsigned char Array, das ich in einen String mit unterschiedlichen Formaten wandeln möchte. Dazu übergebe ich das Array mit einigen weiteren Parametern einer statischen Methode in einer separaten Klasse. Diese Methode sieht momentan wie folgt aus:
Code: Alles auswählen
QString Configuration::dataToString(unsigned char* chBuffer, int length, int offset){
QString valueString = "Test";
// for (int i=0 + offset; i < length + offset; i++)
// {
// valueString += valueString.number((int) chBuffer[i], format);
// if (i < (length -1))
// {
// valueString += chSeparator;
// }
// }
// valueString += chTerminator + "\0";
return valueString;
}
Code: Alles auswählen
void DataDisplay::on_btnRead_clicked()
{
QString dataString;
iReturn = reader->MF_Getsnr(0x52, 0, &snr, chTagID);
if (iReturn == 0)
{
dataString = Configuration::dataToString(chTagID, 4, 0);
dataString = "neu";
ui->tagList->append(dataString);
}
else
{
ui->tagList->append("Kein Tag erkannt");
}
}
Das ist momentan natürlich alles auskommentiert, weil ich direkt nach dem Aufruf in eine Exception renne:
Ich habe das Konzept in einem kleinen Testprojekt praktisch 1:1 nachgebaut und da funktioniert es. Die Prototypen sind absolut identisch mit den Aufrufen. Wenn ich den Code Schritt für Schritt debugge, dann ist eine Sache sehr merkwürdig:
Ich springe in die statische Methode und durchlaufe sie auch ohne Probleme, dann springe ich zurück zur aufrufenden Methode und sehe noch die Anzeigen:
dataString = ""
this = Wert: DataDisplay Typ: DataDisplay
Gehe ich dann einen Einzelschritt weiter, was wohl der eigentlichen Zuweisung entspricht, dann erhalte ich:
dataString = <unzugänglich>
Noch zur Info: Ich entwickel auf einem Windows 10 Rechner mit QT5.10 und QT-Creator. Als Compiler nutze ich MinGW und MSVC15. Der Fehler kommt bei beiden Compilern.
Hat jemand eine Idee, was ich hier übersehe??