Programmabsturz beim kopieren aus Qtextedit

Alles rund um die Programmierung mit Qt
Antworten
JohnBergago
Beiträge: 2
Registriert: 14. November 2011 20:28

Programmabsturz beim kopieren aus Qtextedit

Beitrag von JohnBergago »

Hi,
Ich bin neu im Forum und habe ein Problem mit einer kleinen Anwendung.
Die Anwendung besitzt 2 Textfelder im ersten Textfeld wird text eingegeben und im 2. wir der text verändert ausgegeben.
Wenn ich versuche etwas aus einem Textfeld zu kopieren stürzt das programm ab und Windows XP meldet Project.exe hat ein Problem festgestellt und muss beendet werden.
Der Debugger sagt dazu: Fehler beim disassemblieren: cannot access memory at adress =x...

Hoffe ihr könnt mir elfen google konnte es bis jetzt noch nich.
hier der Code

main

Code: Alles auswählen

#include <QtGui>
#include "codierer.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    Codierer w;
    w.show();

    return a.exec();
}
codierer.cpp

Code: Alles auswählen

#include "codierer.h"
#include <iostream>
#include <sstream>


char pcBuff[3000];														// Array in dem die ausgelesenen Zeichen gespeichert werden
char useArray[3000];													// Array mit dem gearbeitet wird um den Text auszugegben
unsigned int length;													// Variable in der die Länge einer Zeile (Anzahl zeichen) gespeichet wird
int i = 0; 																// Hilfsvariable zugewiesener Wert = 0
int b = 0;																// Hilfsvariable zugewieseer Wert = 0
int c;

char zeichena[] = {... }; // hier könnt ihr selbst was reinschreiben wenn ihr das programm probieren wollt


Codierer::Codierer(QWidget *parent)
    : QWidget(parent)
{
    ui->setupUi(this);

    QObject::connect(ui->OkButton,SIGNAL(clicked()),  this, SLOT(OkButtonPressed()));

}

Codierer::~Codierer()
{
    delete ui;
}


void Codierer::OkButtonPressed()
{

    QString zahl;
    if(ui->CodierenAuswahl->isChecked())
    {
       QString text;

       text = ui->Eingabe->toPlainText();	// lese pro zeile max 3000 zeichen aus und speichere in pcBuff[]

       if(text.size()>0)
       {
           for(int z = 0; z<= text.size();z++)
           {
               useArray[z]= text[z].toAscii();

           }
     }
   //Verschlüsseln
       ui->Ausgabe->setPlainText("");
       for(int j = 0; j <= text.size(); j++)									// solange j <= length werden die nachfolgenden Schritte erfolgen wobei j
    {
         i = 0;																// pro Durchgang um 1 erhöht wird
         while(i <= 255)
         {
             if(zeichena[i] == useArray[j])
             {
                 zahl = zahl.setNum(i);
                 ui->Ausgabe->insertPlainText(zahl);
                 ui->Ausgabe->insertPlainText(" ");
                break;
             }
             i++;
         }
    }

}
}

meine klasse

Code: Alles auswählen

#ifndef CODIERER_H
#define CODIERER_H

#include <QObject>
#include "ui_codierer.h"

class Codierer : public QWidget
{
        Q_OBJECT //

public:
       Codierer(QWidget *parent = 0);
       virtual ~Codierer();


public slots:
        void OkButtonPressed();
private:
        Ui::Codierprogramm *ui;
};

#endif //CODIERER_H
die vom qt designer erstellte klasse

Code: Alles auswählen

#ifndef UI_CODIERER_H
#define UI_CODIERER_H

#include <QtCore>
#include <QtGui>
/********************************************************************************
** Form generated from reading UI file 'mainbO2104.ui'
**
** Created: Mon 31. Oct 19:50:44 2011
**      by: Qt User Interface Compiler version 4.7.4
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QFrame>
#include <QtGui/QGridLayout>
#include <QtGui/QHeaderView>
#include <QtGui/QLabel>
#include <QtGui/QPushButton>
#include <QtGui/QRadioButton>
#include <QtGui/QSpacerItem>
#include <QtGui/QTextEdit>
#include <QtGui/QWidget>

QT_BEGIN_NAMESPACE

class Ui_Codierprogramm
{
public:
    QGridLayout *gridLayout_5;
    QSpacerItem *horizontalSpacer_13;
    QFrame *frame;
    QGridLayout *gridLayout;
    QSpacerItem *horizontalSpacer_2;
    QRadioButton *CodierenAuswahl;
    QRadioButton *DecodierenAuswahl;
    QSpacerItem *horizontalSpacer_3;
    QSpacerItem *horizontalSpacer;
    QSpacerItem *horizontalSpacer_11;
    QSpacerItem *verticalSpacer_2;
    QSpacerItem *horizontalSpacer_10;
    QFrame *frame_2;
    QGridLayout *gridLayout_3;
    QLabel *label;
    QSpacerItem *horizontalSpacer_5;
    QTextEdit *Eingabe;
    QSpacerItem *horizontalSpacer_4;
    QSpacerItem *horizontalSpacer_8;
    QSpacerItem *verticalSpacer;
    QSpacerItem *horizontalSpacer_14;
    QFrame *frame_3;
    QGridLayout *gridLayout_4;
    QLabel *label_3;
    QSpacerItem *horizontalSpacer_7;
    QSpacerItem *horizontalSpacer_6;
    QTextEdit *Ausgabe;
    QSpacerItem *horizontalSpacer_9;
    QSpacerItem *horizontalSpacer_15;
    QSpacerItem *verticalSpacer_3;
    QSpacerItem *horizontalSpacer_12;
    QPushButton *OkButton;

    void setupUi(QWidget *Codierprogramm)
    {
        if (Codierprogramm->objectName().isEmpty())
            Codierprogramm->setObjectName(QString::fromUtf8("Codierprogramm"));
        Codierprogramm->resize(485, 588);

        Codierprogramm->setStyleSheet(QString::fromUtf8("#Main{\n"
"background:white;\n"
"}\n"
"#frame{\n"
"border: 3px solid gray;\n"
"border-radius: 40px;\n"
"background: QLinearGradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #eef, stop: 1 #ccf);\n"
"}\n"
"#frame_2{\n"
"border: 3px solid gray;\n"
"border-radius: 40px;\n"
"background: QLinearGradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #eef, stop: 1 #ccf);\n"
"}\n"
"#frame_3{\n"
"border: 3px solid gray;\n"
"border-radius: 40px;\n"
"background: QLinearGradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #eef, stop: 1 #ccf);\n"
"}"));
        gridLayout_5 = new QGridLayout(Codierprogramm);

       gridLayout_5->setObjectName(QString::fromUtf8("gridLayout_5"));
        horizontalSpacer_13 = new QSpacerItem(31, 44, QSizePolicy::Expanding, QSizePolicy::Minimum);

        gridLayout_5->addItem(horizontalSpacer_13, 0, 0, 1, 1);

        frame = new QFrame(Codierprogramm);
        frame->setObjectName(QString::fromUtf8("frame"));
        frame->setFrameShape(QFrame::StyledPanel);
        frame->setFrameShadow(QFrame::Raised);
        gridLayout = new QGridLayout(frame);
        gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
        horizontalSpacer_2 = new QSpacerItem(15, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

        gridLayout->addItem(horizontalSpacer_2, 0, 0, 1, 1);

        CodierenAuswahl = new QRadioButton(frame);
        CodierenAuswahl->setObjectName(QString::fromUtf8("CodierenAuswahl"));
        CodierenAuswahl->setStyleSheet(QString::fromUtf8("font: 75 11pt \"MS Shell Dlg 2\";"));

        gridLayout->addWidget(CodierenAuswahl, 0, 1, 1, 1);

        DecodierenAuswahl = new QRadioButton(frame);
        DecodierenAuswahl->setObjectName(QString::fromUtf8("DecodierenAuswahl"));
        DecodierenAuswahl->setStyleSheet(QString::fromUtf8("font: 75 11pt \"MS Shell Dlg 2\";"));

        gridLayout->addWidget(DecodierenAuswahl, 0, 3, 1, 1);

        horizontalSpacer_3 = new QSpacerItem(14, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

        gridLayout->addItem(horizontalSpacer_3, 0, 4, 1, 1);

        horizontalSpacer = new QSpacerItem(128, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

        gridLayout->addItem(horizontalSpacer, 0, 2, 1, 1);


        gridLayout_5->addWidget(frame, 0, 1, 1, 5);

        horizontalSpacer_11 = new QSpacerItem(41, 44, QSizePolicy::Expanding, QSizePolicy::Minimum);

        gridLayout_5->addItem(horizontalSpacer_11, 0, 6, 1, 1);

        verticalSpacer_2 = new QSpacerItem(66, 0, QSizePolicy::Minimum, QSizePolicy::Expanding);

        gridLayout_5->addItem(verticalSpacer_2, 1, 2, 1, 1);

        horizontalSpacer_10 = new QSpacerItem(31, 237, QSizePolicy::Expanding, QSizePolicy::Minimum);

        gridLayout_5->addItem(horizontalSpacer_10, 2, 0, 1, 1);

        frame_2 = new QFrame(Codierprogramm);
        frame_2->setObjectName(QString::fromUtf8("frame_2"));
        frame_2->setFrameShape(QFrame::StyledPanel);
        frame_2->setFrameShadow(QFrame::Raised);
        gridLayout_3 = new QGridLayout(frame_2);
        gridLayout_3->setObjectName(QString::fromUtf8("gridLayout_3"));
        label = new QLabel(frame_2);
        label->setObjectName(QString::fromUtf8("label"));
        label->setStyleSheet(QString::fromUtf8("font: 75 11pt \"MS Shell Dlg 2\";"));

        gridLayout_3->addWidget(label, 0, 1, 1, 1);

        horizontalSpacer_5 = new QSpacerItem(35, 189, QSizePolicy::Expanding, QSizePolicy::Minimum);

        gridLayout_3->addItem(horizontalSpacer_5, 1, 0, 1, 1);

        Eingabe = new QTextEdit(frame_2);
        Eingabe->setObjectName(QString::fromUtf8("Eingabe"));

        gridLayout_3->addWidget(Eingabe, 1, 1, 1, 1);

        horizontalSpacer_4 = new QSpacerItem(35, 189, QSizePolicy::Expanding, QSizePolicy::Minimum);

        gridLayout_3->addItem(horizontalSpacer_4, 1, 2, 1, 1);


        gridLayout_5->addWidget(frame_2, 2, 1, 1, 5);

        horizontalSpacer_8 = new QSpacerItem(41, 237, QSizePolicy::Expanding, QSizePolicy::Minimum);

        gridLayout_5->addItem(horizontalSpacer_8, 2, 6, 1, 1);

        verticalSpacer = new QSpacerItem(66, 1, QSizePolicy::Minimum, QSizePolicy::Expanding);

        gridLayout_5->addItem(verticalSpacer, 3, 2, 1, 1);

        horizontalSpacer_14 = new QSpacerItem(31, 219, QSizePolicy::Expanding, QSizePolicy::Minimum);

        gridLayout_5->addItem(horizontalSpacer_14, 4, 0, 1, 1);

        frame_3 = new QFrame(Codierprogramm);
        frame_3->setObjectName(QString::fromUtf8("frame_3"));
        frame_3->setFrameShape(QFrame::StyledPanel);
        frame_3->setFrameShadow(QFrame::Raised);
        gridLayout_4 = new QGridLayout(frame_3);
        gridLayout_4->setObjectName(QString::fromUtf8("gridLayout_4"));
        label_3 = new QLabel(frame_3);
        label_3->setObjectName(QString::fromUtf8("label_3"));
        label_3->setStyleSheet(QString::fromUtf8("font: 75 11pt \"MS Shell Dlg 2\";"));

        gridLayout_4->addWidget(label_3, 0, 1, 1, 1);

        horizontalSpacer_7 = new QSpacerItem(44, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

        gridLayout_4->addItem(horizontalSpacer_7, 1, 0, 1, 1);

        horizontalSpacer_6 = new QSpacerItem(44, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

        gridLayout_4->addItem(horizontalSpacer_6, 1, 2, 1, 1);

        Ausgabe = new QTextEdit(frame_3);
        Ausgabe->setObjectName(QString::fromUtf8("Ausgabe"));

        gridLayout_4->addWidget(Ausgabe, 1, 1, 1, 1);


        gridLayout_5->addWidget(frame_3, 4, 1, 1, 5);

        horizontalSpacer_9 = new QSpacerItem(41, 219, QSizePolicy::Expanding, QSizePolicy::Minimum);

        gridLayout_5->addItem(horizontalSpacer_9, 4, 6, 1, 1);

        horizontalSpacer_15 = new QSpacerItem(107, 21, QSizePolicy::Expanding, QSizePolicy::Minimum);

        gridLayout_5->addItem(horizontalSpacer_15, 5, 0, 1, 2);

        verticalSpacer_3 = new QSpacerItem(66, 21, QSizePolicy::Minimum, QSizePolicy::Expanding);

        gridLayout_5->addItem(verticalSpacer_3, 5, 2, 1, 1);

        horizontalSpacer_12 = new QSpacerItem(117, 21, QSizePolicy::Expanding, QSizePolicy::Minimum);

        gridLayout_5->addItem(horizontalSpacer_12, 5, 5, 1, 2);

        OkButton = new QPushButton(Codierprogramm);
        OkButton->setObjectName(QString::fromUtf8("OkButton"));
        OkButton->setStyleSheet(QString::fromUtf8("background-color:qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(46,207,255, 255), stop:1 rgba(0, 85, 255, 255));\n"
"font: 11 pt \"Roland\";\n"
"\n"
"color:rgb(255, 255, 127);\n"
"\n"
"border-width: 3px; \n"
"	border-color: rgb(0, 0, 255);\n"
"border-style :solid;\n"
"border-radius: 7 ;\n"
"padding: 3px;"));

        gridLayout_5->addWidget(OkButton, 5, 3, 1, 1);


        retranslateUi(Codierprogramm);

        QMetaObject::connectSlotsByName(Codierprogramm);
    } // setupUi

    void retranslateUi(QWidget *Codierprogramm)
    {
        Codierprogramm->setWindowTitle(QApplication::translate("Codierprogramm", "Form", 0, QApplication::UnicodeUTF8));
        CodierenAuswahl->setText(QApplication::translate("Codierprogramm", "Codieren", 0, QApplication::UnicodeUTF8));
        DecodierenAuswahl->setText(QApplication::translate("Codierprogramm", "Decodieren", 0, QApplication::UnicodeUTF8));
        label->setText(QApplication::translate("Codierprogramm", "Zu codierender bzw. decodierender Text:", 0, QApplication::UnicodeUTF8));
        label_3->setText(QApplication::translate("Codierprogramm", "Ausgabe:", 0, QApplication::UnicodeUTF8));
        OkButton->setText(QApplication::translate("Codierprogramm", "OK", 0, QApplication::UnicodeUTF8));
    } // retranslateUi

};

namespace Ui {
    class Codierprogramm: public Ui_Codierprogramm {};
} // namespace Ui

QT_END_NAMESPACE

#endif
Bin Qt anfänger und komm einfach nicht drauf wo das problem ist. Ich hoffe ihr könnt helfen
John
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Programmabsturz beim kopieren aus Qtextedit

Beitrag von Christian81 »

Man nehme einen Debugger und schaue wo genau er abstürzt. Abgesehen davon würde ich weder globale Arrays benutzen noch Arrays mit fester Länge ohne Überprüfung wie viel Daten reingeschrieben werden. Des weiteren bringt toAscii() nur Ascii-Zeichen zurück - was also wenn non-Ascii zeichen im Text stehen etc?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Re: Programmabsturz beim kopieren aus Qtextedit

Beitrag von solarix »

Ausserdem zeigt "Codierer::ui" ins Nirvana.. purer Zufall also, dass sich das Programm nicht sofort verabschiedet.
JohnBergago
Beiträge: 2
Registriert: 14. November 2011 20:28

Re: Programmabsturz beim kopieren aus Qtextedit

Beitrag von JohnBergago »

Danke solarix daran lags vielen vielen Dank. Ich bin so froh :D
Und Danke Christian81 für die Tipps.
MfG John
Antworten