Russian Qt Forum
Сентябрь 23, 2024, 18:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Простите не понимаю где я ошибся?  (Прочитано 4192 раз)
Scotty
Гость
« : Октябрь 24, 2009, 22:54 »

Доброго времени суток !!!
Код:
int TestSuite::openFile(QString aFileName){
    //Get file info from file name such as Path and Full Name and set fields of class
    QFileInfo vFileInfo(aFileName);
    this->gFilePath = vFileInfo.canonicalPath() ;
    this->gFileName = vFileInfo.fileName();

    QFile * vFile = new QFile(aFileName);
    qDebug() << "Opened : " + this->gFileName;
    qDebug() << "Path : " + this->gFilePath;

    if (vFile->exists()){
        if (!vFile->open(QIODevice::ReadOnly)){
            qDebug() << QString("File opened: ") + vFile->fileName();
            return 2; //file exists but we can't open
        }
    } else{
        qDebug() << QString("File not exists:") + vFile->fileName();
        return 1; //file not exists
    }
    //now we set content to XML object
    if (!gTestSuite->setContent(vFile)){
        vFile->close();
        qDebug() << "Can't set context!";
        return 3; // Can't set context to xml object file
    } else{
        vFile->close();
        qDebug() << "Context is set!";
    }
    return 0;
}

А вот код консольного приложения которое юзает этот класс:

Код:
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    TestSuite * ts = new TestSuite;
    qDebug() << ts->openFile(QString("E:/Exam/Exam/ExamTest/1.xml"));

    return a.exec();
}

Вылетает с такой вот красотой :
  Имя события проблемы:   APPCRASH
  Имя приложения:   ExamTest.exe
  Версия приложения:   0.0.0.0
  Отметка времени приложения:   4ae35aa2
  Имя модуля с ошибкой:   QtXmld4.dll
  Версия модуля с ошибкой:   4.5.2.0
  Отметка времени модуля с ошибкой:   4a3f7c18
  Код исключения:   c0000005
  Смещение исключения:   00017be7
  Версия ОС:   6.1.7600.2.0.0.256.1
  Код языка:   1049
  Дополнительные сведения 1:   0a9e
  Дополнительные сведения 2:   0a9e372d3b4ad19135b953a78882e789
  Дополнительные сведения 3:   0a9e
  Дополнительные сведения 4:   0a9e372d3b4ad19135b953a78882e789

Внимание вопрос: ПОЧЕМУ Непонимающий  Нефига не понимаю почему такое произошло ... и как с этим бороться ... подскажите пожалуйста ... просто пробовал сделать тестовый прогон классов
« Последнее редактирование: Октябрь 24, 2009, 22:56 от Scotty » Записан
BRE
Гость
« Ответ #1 : Октябрь 24, 2009, 23:08 »

А где создается объект gTestSuite? В конструкторе или нигде?
Записан
Scotty
Гость
« Ответ #2 : Октябрь 24, 2009, 23:14 »

Это поле - ссылка на объект, я может и не правильно делаю (я новичек в Qt и C++ тоже Улыбающийся ) но у меня класс описан так
Код:
class TestSuite{
public:
    TestSuite();
    int openFile(QString aFileName);
    /*Тут много всякого*/
private:
    QString gFilePath;
    QString gFileName;
   /*и тут тоже*/
protected:
    QDomDocument * gTestSuite;
};
Наставьте меня пожалуйста на путь истенный  Обеспокоенный
Записан
BRE
Гость
« Ответ #3 : Октябрь 24, 2009, 23:15 »

Это поле - ссылка на объект, я может и не правильно делаю (я новичек в Qt и C++ тоже Улыбающийся ) но у меня класс описан так
Указатель ты описал, а где объект создаешь?
Код
C++ (Qt)
gTestSuite = new QDomDocument;
 
Или нигде не создаешь?
Записан
Scotty
Гость
« Ответ #4 : Октябрь 24, 2009, 23:20 »

ОЙ! Улыбающийся Вот я Отстойник  Рот на замке Прошу прощения за глуппость, просто замылились мозги  Строит глазки Благодарю за терпение и толерантность, забыл в конструкторе написать создание объекта QDomDocument'а ... этож надо быть таким д***оё*ом! Ещё раз огромное спасибо!!!
Записан
ax
Чайник
*
Offline Offline

Сообщений: 60


Просмотр профиля
« Ответ #5 : Октябрь 25, 2009, 17:51 »

// я бы добавил
delete vFile;

Записан
BRE
Гость
« Ответ #6 : Октябрь 25, 2009, 18:19 »

// я бы добавил
delete vFile;
Лучше его вообще на стеке определить.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.123 секунд. Запросов: 23.