Programm stürzt in Schleife ab

Alles rund um die Programmierung mit Qt
Antworten
Mefisto
Beiträge: 27
Registriert: 6. September 2008 13:37

Programm stürzt in Schleife ab

Beitrag von Mefisto »

Hallo!

Ich habe noch ein Problem mit meinem Programm zum Analysieren einer SMS-Archivdatei. Und zwar stürzt mein Programm bei dem folgenden Teil der Analyse-Funktion ab:

Code: Alles auswählen

const int overallSMS = fileAnalyse.size();

for(int i=0; i<overallSMS;i++) {
            QString contact = fileAnalyse[i][0];
            if(contact.left(1)!="+") {
                QString contact = "+49"+contact.right(contact.length()-1);
            }
            QString contactName = fileAnalyse[i][4];
            QDateTime smsDateTime;
            smsDateTime.setTime_t(fileAnalyse[i][1].left(10).toInt());
            QString content = fileAnalyse[i][3];
            QString type = fileAnalyse[i][2];

            labelCurrent->setText("SMS from "+contact+" ("+contactName+") on "+smsDateTime.toString("dd.MM.yyyy hh:mm"));


            int currentContactPosition =-1;

            for (int k=0;k<contacts.size();k++) {
                if (contacts[k][0]==contact) {
                    currentContactPosition = k;
                }
            }

            if (currentContactPosition==-1) {
                QStringList currentContact;
                currentContact.append(contact);
                currentContact.append(contactName);

                contacts.append(currentContact);

                currentContactPosition = contacts.size()-1;
            }

            QStringList currentSMS;
            currentSMS.append(QString::number(currentContactPosition));
            currentSMS.append(content);
            currentSMS.append(type);
            sms.append(currentSMS);

            if((((double)i+1)/50)==(qFloor(((double)i+1)/50))) {
                progressBarPart->setValue(qFloor(((double)i)/overallSMS*100));
                progressBarOverall->setValue(50+qFloor((double)i/overallSMS*30));
            }
}
Erklärung zum Code: fileAnalyse ist vom Typ QList<QStringList>. Jedes einzelne Element enthält an den jeweiligen Positionen [0]->Kontaktnummer [1]->timestamp, [2]->SMS-Typ (1/2), [3]->SMS-Inhalt in Reintext, [4]->Kontaktname in Reintext

contacts und sms sind ebenfalls jeweils vom Typ QList<QStringList>

Wichtig ist der Teil ab "int currentContactPosition =-1;"... Dort soll die Liste mit allen SMS (fileAnalyse) in Kontakte und Nachrichten geteilt werden. contacts soll jeden Kontakt, unabhängig von der Anzahl der ihn betreffenden SMS in fileAnalyse, nur einmal beinhalten. Jede Stelle in contacts ist ja eine QStringList - und zwar, um Nummer und Kontaktnamen zu speichern.

In "sms" werden alle sms gespeichert, diesmal aber nicht mit Nummer und Name des Kontakts, sondern mit Position des betreffenden Kontakts in "contacts".

Soweit so gut. Das Programm läuft die 5000 Elemente große "QList<QStringList> fileAnalyse" immer exakt 154 SMS lang durch, danach stürzt es ab. Ich habe die betreffende SMS in der Archivdatei schon untersucht und konnte nichts merkwürdiges feststellen. Daher meine Frage: Kann mir jemand sagen, warum das Programm abstürzt?

Vielen Dank im Voraus und liebe Grüße!
Mefisto
Beiträge: 27
Registriert: 6. September 2008 13:37

Re: Programm stürzt in Schleife ab

Beitrag von Mefisto »

Ich habe meinen Fehler gefunden, es war mal wieder ein Flüchtigkeitsfehler. Aber damit man daraus lernen kann:

Code: Alles auswählen

QString contact = fileAnalyse[i][0];
if(contact.left(1)!="+") {
    QString contact = "+49"+contact.right(contact.length()-1);
}
Das zweite "QString" muss natürlich weg. SMS 154 war die erste SMS, bei der die Rufnummer nicht mit +49, sonder mit einer 0 angefangen hat. Deswegen trat da der Fehler auf.

Gute Nacht!
Antworten