![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
kemiisto |
![]() ![]()
Сообщение
#1
|
![]() Студент ![]() Группа: Участник Сообщений: 27 Регистрация: 5.9.2009 Из: Осло, Норвегия Пользователь №: 1054 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Здравствуйте!
Если у кого-нибудь найдётся минутка-другая, посмотрите проектик. Исходники тут. Я не стал убирать *.dll и *.a от QGLViewer'а и инклюды от QGLViewer'а и Eigen'а. Так чтоб под Windows собиралось "из коробки"... Я первый раз пишу на ++ и проект только-только начинается. Так что там много методов-пустышек и "говнокода". ![]() Собственно, беда такая. Есть у нас класс (молекула)
В Render::Viewer попытка использовать экземпляр этого класса
Попытка не совсем успешная. Когда отрабатывает конструктор Chemistry::Molecule, все 3 списка инициализируются. ![]() При попытке добавить атом в Render::Viewer::mousePressEvent в самом начале ставим точку останова: ![]() Вот. Куда то пропал incidenceMatrix_. Куда? А самое интересное. Если в объявлении поменять местами скажем так:
то на точке останова не будет уже chemistryBonds_. То есть получается: кто первым объявлен (первым инициализируется в конструкторе), тот куда-то пропадает. Немного побегал дебагом. Список портится внутри void Render::Viewer::updateMolecule(). До вызова updateGL() всё отлично, после <internal error>. А это метод (точнее слот) QGLViewer'а. Мыслей больше нет. ![]() |
|
|
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
В отладчике не смотрел, воткнул qDebug в Chemistry::Molecule::Molecule(const Chemistry::Molecule& chemistryMolecule)
запустил программу, открыл пример H2O, в консоль напечаталось:Цитата Internal debug: initializeGL() is called in QGLViewer constructor. (выделил для удобства)chemistryAtoms_ (0x54659f8, 0x62d1f00, 0x62dafa0, 0x62cf9d8, 0x6315cb0, 0x62cfd6 8, 0x62d1ac8, 0x62cefe0, 0x62c1298, 0x62ce8c0, 0x6305a58, 0x62cf610, 0x62d07f0, 0x62d1cf0, 0x62d2668, 0x62d2010, 0x62d2480, 0x62d4f48, 0x62d1918, 0x62d1450, 0x6 2cfb88, 0x62cff78, 0x62d04f8, 0x62d06e0) chemistryBonds_ (0x62ca5b8, 0x6315ec8, 0x62cc1d8, 0x62ce218, 0x62d0f80, 0x631f36 0, 0x62b6f88, 0x62b6db8, 0x6315258, 0x546a2c0, 0x546b2d8, 0x63159a8, 0x63152b8, 0x54659e0, 0x631f9d0, 0x62fffc8, 0x546aca8, 0x631f950, 0x631f990, 0x631f9e8, 0x6 31f5d0, 0x631fa78, 0x62b2ee8, 0x62b90c8, 0x631f540) incidenceMatrix_ ((0x62ca5b8, 0x6315ec8, 0x62cc1d8) , (0x62ce218, 0x62d0f80) , (0x631f360, 0x62b6f88, 0x62b6db8) , (0x6315258, 0x546a2c0, 0x546b2d8) , (0x62 ca5b8, 0x63159a8, 0x63152b8) , (0x62ce218, 0x631f360, 0x63159a8) , (0x6315ec8, 0x62d0f80, 0x54659e0) , (0x6315258, 0x63152b8, 0x631f9d0) , (0x62b6f88, 0x546 a2c0, 0x62fffc8) , (0x546b2d8, 0x546aca8, 0x631f950, 0x631f990) , (0x62b6db8, 0x631f9e8, 0x631f5d0, 0x631fa78) , (0x62cc1d8, 0x62b2ee8, 0x62b90c8, 0x631f540) , (0x631f9d0) , (0x62fffc8) , (0x54659e0) , (0x546aca8) , (0x631f950) , ( 0x631f990) , (0x631f9e8) , (0x631f5d0) , (0x631fa78) , (0x62b2ee8) , (0x62b 90c8) , (0x631f540) ) charge_ 0 Т.е. неинициализированных значений нет. Может помогалка для отладчика (в Креаторе) глючит? П.С. Малекула прикольно крутится, надо будет разобратся с такими штуками |
|
|
kemiisto |
![]()
Сообщение
#3
|
![]() Студент ![]() Группа: Участник Сообщений: 27 Регистрация: 5.9.2009 Из: Осло, Норвегия Пользователь №: 1054 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Litkevich Yuriy, спасибо, что не бросаете в беде!
![]() Может помогалка для отладчика (в Креаторе) глючит? Хм... Врядли. Оно падает при попытке добавить атом в Render::Viewer::mousePressEvent. Сначала импортируем молекулу, потом пытаемся добавить атом. Доходит до
идёт в else веточку и падает на addAtom(). Или чуть ниже на updateMolecule(). Так как к этому моменту один из QList в составе Chemistry::Molecule "побит". Бъётся при updateGL(). Какой - зависит от порядка объявления. Вот... |
|
|
Litkevich Yuriy |
![]()
Сообщение
#4
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
kemiisto |
![]()
Сообщение
#5
|
![]() Студент ![]() Группа: Участник Сообщений: 27 Регистрация: 5.9.2009 Из: Осло, Норвегия Пользователь №: 1054 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
объясни как это в программе сделать (куда кликать?). OK. Сначала Job - Dalton Input. Выбираем последовательно H2O.dal, затем, скажем, caffeine.mol. Видим молекулу. Справа в тулбоксе переходим на вкладку Add. Жмакаем внутри вьювера по пустому месту (мимо атомов). Должен добавится атом (пока прям в начало координат). Но... =( |
|
|
Litkevich Yuriy |
![]()
Сообщение
#6
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
kemiisto |
![]()
Сообщение
#7
|
![]() Студент ![]() Группа: Участник Сообщений: 27 Регистрация: 5.9.2009 Из: Осло, Норвегия Пользователь №: 1054 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Добавился, а соединения между атомами исчезли Ага. Такое тоже возможно. Портится список, объявленный первым в Chemistry::Molecule. Сейчас это список связей (QList<Chemistry::Bond*> chemistryBonds_;). Он не обязательно становится недоступным (<internal error>). Иногда оттуда просто исчезают элементы, иногда их там становится бесконечно много. Как бы то ни было, портится список. ![]() |
|
|
kwisp |
![]()
Сообщение
#8
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
kemiisto,
то что кто первый в объявлении класса тот и "портится" это вполне возможно где то в программе на память "наступил". ПС. тоже интересно не могу проект открыть чего то архив сопротивляется. ![]() |
|
|
Litkevich Yuriy |
![]()
Сообщение
#9
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
kwisp |
![]()
Сообщение
#10
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
kemiisto,
вот так не стоит писать.. в этом конструкторе каждый лист создается по 2 раза(если лист имеет конструктор по умолчанию без аргументов). не знаю, может с оператором присваивания у тебя в классе не лады ты во вьюер устанавливаешь молекулу в setMolecul(...) т.е. chemistryMolecul_ у тебя уже инициализирован конструктором по умолчанию в конструкторе вьюера( листы пустые там). ну попробуй так
Сообщение отредактировал kwisp - 5.9.2009, 19:58 |
|
|
BRE |
![]()
Сообщение
#11
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
kemiisto,
вот так не стоит писать.. в этом конструкторе каждый лист создается по 2 раза(если лист имеет конструктор по умолчанию без аргументов). Причем копируются только указатели, а не сами объекты атомов и связей. Если бы был деструктор корректно уничтожающий все объекты атомов и связей, проблемы начались бы раньше. ![]() Кстати в матрице тоже список указателей. Сообщение отредактировал BRE - 5.9.2009, 19:42 |
|
|
kwisp |
![]()
Сообщение
#12
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
ну да по идее у 2 разных молекул должны быть разные атомы...
|
|
|
BRE |
![]()
Сообщение
#13
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
Жаль под linux собрать не могу, по исходникам не легко разбираться.
![]() |
|
|
kemiisto |
![]()
Сообщение
#14
|
![]() Студент ![]() Группа: Участник Сообщений: 27 Регистрация: 5.9.2009 Из: Осло, Норвегия Пользователь №: 1054 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
BRE, kwisp, я учитываю ваши комментарии. Спасибо. Избавлюсь от ссылок в списках, вспомню об инициализаторах в конструкторах, ... Потихоньку перепишу, а там видно будет.
Тему не закрываю пока. |
|
|
Litkevich Yuriy |
![]()
Сообщение
#15
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Жаль под linux собрать не могу, по исходникам не легко разбираться. тебе наверно надо QGLViewer собрать сначала (проект тут)
|
|
|
BRE |
![]()
Сообщение
#16
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
Жаль под linux собрать не могу, по исходникам не легко разбираться. тебе наверно надо QGLViewer собрать сначала (проект тут)Сейчас гляну, но у меня еще на этапе компиляции проекта kemiisto ошибку выдает. Разбираться придется. |
|
|
kemiisto |
![]()
Сообщение
#17
|
![]() Студент ![]() Группа: Участник Сообщений: 27 Регистрация: 5.9.2009 Из: Осло, Норвегия Пользователь №: 1054 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
kwisp |
![]()
Сообщение
#18
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
kemiisto,
значит надо досканалнее. глянуть. расскажи где ты удаляешь атомы? подумай где можешь наступать на память? |
|
|
kemiisto |
![]()
Сообщение
#19
|
![]() Студент ![]() Группа: Участник Сообщений: 27 Регистрация: 5.9.2009 Из: Осло, Норвегия Пользователь №: 1054 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
kwisp, хорошо. Напишу explicit деструкторы для классов, погоняю код. А там видно будет.
![]() |
|
|
kemiisto |
![]() ![]()
Сообщение
#20
|
![]() Студент ![]() Группа: Участник Сообщений: 27 Регистрация: 5.9.2009 Из: Осло, Норвегия Пользователь №: 1054 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Ну вот, потихоньку изменил код. Убрал пока указатели где только возможно. Нашлись ошибки!
![]() Во-первых, вот тут был бред:
В первой строчке в теле. Ну это ляп, конечно же. Когда начал переписывать со списками инициализаторов - заметил. Ну и там ещё по мелочи. Но толку нет. Симптомы теже. Портятся мои списки. ![]() Архивчик обновил. Может посмотрите? |
|
|
Kagami |
![]()
Сообщение
#21
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 601 Регистрация: 2.2.2009 Пользователь №: 523 Спасибо сказали: 101 раз(а) Репутация: ![]() ![]() ![]() |
У меня не собирается
Раскрывающийся текст Цитата Sources/Render/RenderViewer.cpp: In member function ‘virtual void Render::Viewer::draw()’: Sources/Render/RenderViewer.cpp:144: error: ‘((Render::Viewer*)this)->QWidget::font’ does not have class type Sources/Render/RenderViewer.cpp:145: error: no matching function for call to ‘Render::Viewer::renderText(int, int, const char [11], <unresolved overloaded function type>)’ /usr/include/qt4/QtOpenGL/qgl.h:441: note: candidates are: void QGLWidget::renderText(int, int, const QString&, const QFont&, int) /usr/include/qt4/QtOpenGL/qgl.h:443: note: void QGLWidget::renderText(double, double, double, const QString&, const QFont&, int) Sources/Render/RenderViewer.cpp:146: error: ‘((Render::Viewer*)this)->QWidget::font’ does not have class type Sources/Render/RenderViewer.cpp:150: error: no matching function for call to ‘Render::Viewer::renderText(int, int, const char [11], <unresolved overloaded function type>)’ /usr/include/qt4/QtOpenGL/qgl.h:441: note: candidates are: void QGLWidget::renderText(int, int, const QString&, const QFont&, int) /usr/include/qt4/QtOpenGL/qgl.h:443: note: void QGLWidget::renderText(double, double, double, const QString&, const QFont&, int) Sources/Render/RenderViewer.cpp:158: error: no matching function for call to ‘Render::Viewer::renderText(int, int, const char [10], <unresolved overloaded function type>)’ /usr/include/qt4/QtOpenGL/qgl.h:441: note: candidates are: void QGLWidget::renderText(int, int, const QString&, const QFont&, int) /usr/include/qt4/QtOpenGL/qgl.h:443: note: void QGLWidget::renderText(double, double, double, const QString&, const QFont&, int) Sources/Render/RenderViewer.cpp:161: error: no matching function for call to ‘Render::Viewer::renderText(int, int, QString, <unresolved overloaded function type>)’ /usr/include/qt4/QtOpenGL/qgl.h:441: note: candidates are: void QGLWidget::renderText(int, int, const QString&, const QFont&, int) /usr/include/qt4/QtOpenGL/qgl.h:443: note: void QGLWidget::renderText(double, double, double, const QString&, const QFont&, int) Sources/Render/RenderViewer.cpp:166: error: no matching function for call to ‘Render::Viewer::renderText(int, int, QString, <unresolved overloaded function type>)’ /usr/include/qt4/QtOpenGL/qgl.h:441: note: candidates are: void QGLWidget::renderText(int, int, const QString&, const QFont&, int) /usr/include/qt4/QtOpenGL/qgl.h:443: note: void QGLWidget::renderText(double, double, double, const QString&, const QFont&, int) Sources/Render/RenderViewer.cpp:168: error: no matching function for call to ‘Render::Viewer::renderText(int, int, QString, <unresolved overloaded function type>)’ /usr/include/qt4/QtOpenGL/qgl.h:441: note: candidates are: void QGLWidget::renderText(int, int, const QString&, const QFont&, int) /usr/include/qt4/QtOpenGL/qgl.h:443: note: void QGLWidget::renderText(double, double, double, const QString&, const QFont&, int) make[1]: *** [Build/Objects/release/RenderViewer.o] Ошибка 1 P.S. Debian GNU/Linux Squeeze P.P.S. Из-за вот этого куска:
Судя по-всему, поддержка линукса не предусмотрена ![]() Сообщение отредактировал Kagami - 6.9.2009, 22:12 |
|
|
kemiisto |
![]()
Сообщение
#22
|
![]() Студент ![]() Группа: Участник Сообщений: 27 Регистрация: 5.9.2009 Из: Осло, Норвегия Пользователь №: 1054 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Kagami |
![]()
Сообщение
#23
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 601 Регистрация: 2.2.2009 Пользователь №: 523 Спасибо сказали: 101 раз(а) Репутация: ![]() ![]() ![]() |
Что-нибудь типа... Хех. http://doc.trolltech.com/4.5/qtglobal.html#Q_WS_X11
P.S. Появится после 20-ти сообщений Сообщение отредактировал Kagami - 6.9.2009, 23:36 |
|
|
kemiisto |
![]()
Сообщение
#24
|
![]() Студент ![]() Группа: Участник Сообщений: 27 Регистрация: 5.9.2009 Из: Осло, Норвегия Пользователь №: 1054 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Начинаем набирать 20 сообщений.
![]() Что-нибудь типа... Хех. http://doc.trolltech.com/4.5/qtglobal.html#Q_WS_X11 ![]() Та терь, вообще, можно эти дефайны убрать. Раньше на Яблоке были проблемы. |
|
|
Litkevich Yuriy |
![]()
Сообщение
#25
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
kwisp |
![]()
Сообщение
#26
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
kemiisto |
![]()
Сообщение
#27
|
![]() Студент ![]() Группа: Участник Сообщений: 27 Регистрация: 5.9.2009 Из: Осло, Норвегия Пользователь №: 1054 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
kwisp |
![]()
Сообщение
#28
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
kemiisto,
добавляю и к импортированной через раз. баг ваш не стабильный нужно четче отследить ситуацию при которой он возникает. делаю все как вы писали Юрию. потом перед тем как кликнуть на пустом месте просто немного поворачиваю молекулу прехожу по вкладкам job и проч и потом атом в центр добавляется... |
|
|
kemiisto |
![]()
Сообщение
#29
|
![]() Студент ![]() Группа: Участник Сообщений: 27 Регистрация: 5.9.2009 Из: Осло, Норвегия Пользователь №: 1054 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
kwisp, я туперь на 100% уверен, что неправильно собирал QGLViewer. Я там *.pro файл немного правил. Но вот, что интересно. Там в QGLViewer/QGLViewer.pro в самом начале есть строчка:
Я так понимаю, с такими строчками debug версии либы заиметь не получится. Но в самом низу:
То есть для windows обратно меняем ситуацию. Вот сейчас nmake у меня собрал и debug и release. А MinGW make не собирал раньше debug. А на Mac OS X там вообще всё очень хитро с этими framework'ами... Короче, если собирать QGLViewer как дадено - вроде бы проблемы нет. kwisp, а Вы его сами собирали? Если да, где и как? |
|
|
kwisp |
![]()
Сообщение
#30
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
kemiisto, вопрос конечно интересный.
я собирал на работе по винду MiGW 3.4.3зашел в директорию проекта файл проекта даже не открывал скомандовал qmake и make и всё ![]() вот бы узнать как криво собранная библиотека портит твои списки? мистика прям ![]() |
|
|
Kagami |
![]()
Сообщение
#31
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 601 Регистрация: 2.2.2009 Пользователь №: 523 Спасибо сказали: 101 раз(а) Репутация: ![]() ![]() ![]() |
Кстати, а на предупреждения компилятора никто не смотрел? Может в них собака зарыта?
Раскрывающийся текст Цитата Sources/Render/RenderAtom.cpp: In member function ‘const QString& Render::Atom::label() const’: Sources/Render/RenderAtom.cpp:164: warning: returning reference to temporary Sources/File/FileDal.cpp: In member function ‘bool File::Dal::hasParametre(const QString&, const QString&, const QString&)’: Sources/File/FileDal.cpp:156: warning: comparison is always true due to limited range of data type Sources/File/FileDal.cpp:159: warning: comparison is always true due to limited range of data type Sources/File/FileDal.cpp:162: warning: comparison is always true due to limited range of data type |
|
|
kwisp |
![]()
Сообщение
#32
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
я не помню. потому что поставил на сборку и ушел обедать.
поэтому не видел процесса сборки. |
|
|
Kagami |
![]()
Сообщение
#33
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 601 Регистрация: 2.2.2009 Пользователь №: 523 Спасибо сказали: 101 раз(а) Репутация: ![]() ![]() ![]() |
У меня вроде все работает и ничего не падает. Атом в центр координат добавляется. Кстати, в молекуле сразу после импорта одной связи нету.
P.S. Для сборки под дебианом пришлось поставить QGLViewer Цитата $ sudo apt-get install libqglviewer-qt4-dev и подправить файл проекта
|
|
|
kemiisto |
![]()
Сообщение
#34
|
![]() Студент ![]() Группа: Участник Сообщений: 27 Регистрация: 5.9.2009 Из: Осло, Норвегия Пользователь №: 1054 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Кстати, в молекуле сразу после импорта одной связи нету. Это бага. Я её уже отловил. Должно быть так:
а было i < chemistryMolecule_.bondsCount() - 1. Надо отучать себя от for'а. Но никак не могу заставить себя... ![]() Забавно. У меня на Mac OS атом сразу добавляется, а на Windows - нет. Но тут надо возится и с OpenGL... Всем помогающим огромное спасибо. |
|
|
kemiisto |
![]() ![]()
Сообщение
#35
|
![]() Студент ![]() Группа: Участник Сообщений: 27 Регистрация: 5.9.2009 Из: Осло, Норвегия Пользователь №: 1054 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
![]() Ну, я практически локализовал баг. Но абсолютно не понимаю, как такое происходит. Я реорганизовал код, объединил классы, ... И вот, что происходит. Импорт молекулы проходит нормально (я добавил небольшую молекулку воды для удобства отладки). Потом мы пытаемся добавить атом. Он добавляется в список атомов. Начинается перерисовка списков отображения OpenGL. Доходит до формирования списка связей - метод GLuint Render::Viewer::makeSticks(Quality quality):
Создаём итератор и поехали! Списко атомов, связей пока ещё не попорчены. Вызываем метод draw для первой связи. Оказываемся внутри void Render::Bond::draw(Quality quality) const. Как в начале метода, так и в конце списки живы. Возвращаемся обратно в makeSticks(). Списки по-прежнему живы. Снова заходим в draw()... И получаем epic fail! В списках какой-то мусор! ![]() Если будет у кого минутка, посмотрите, пожалуйста... Архив. |
|
|
BRE |
![]()
Сообщение
#36
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
![]() В конструкторе и операторе копирования в циклах не нужно вычитать единицу, у тебя же условие <. Раскрывающийся текст
|
|
|
kwisp |
![]()
Сообщение
#37
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
я подозре\ваю что у второго атома в списке не валидный указатель на molecule_.
где атом получает указатель на молекулу? |
|
|
BRE |
![]()
Сообщение
#38
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
я подозре\ваю что у второго атома в списке не валидный указатель на molecule_. где атом получает указатель на молекулу? Смотри конструктор и оператор копирования.... ![]() Предполагаю, такие штучки с циклами можно ожидать и в других местах. kemiisto, проверь другие циклы на предмет < count() -1. |
|
|
BRE |
![]()
Сообщение
#39
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
[Дубль.]
[Блин, почему такие ошибки с редактированием сообщения происходят, приходиться по несколько раз сообщения набирать ![]() Сообщение отредактировал BRE - 8.9.2009, 19:18 |
|
|
kemiisto |
![]()
Сообщение
#40
|
![]() Студент ![]() Группа: Участник Сообщений: 27 Регистрация: 5.9.2009 Из: Осло, Норвегия Пользователь №: 1054 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
kwisp |
![]()
Сообщение
#41
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Смотри конструктор и оператор копирования.... ![]() вот смотрю и нашел только что в конструкторе копий опять(не в списке инициализации) такая вещь:
болше я не нашел мест где происходит получение этого указателя... ![]() может я чего то не понимаю... думаю тут что то не так. |
|
|
BRE |
![]()
Сообщение
#42
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
kwisp |
![]()
Сообщение
#43
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Ты в классе Molecule посмотри. а нашел.. прошляпил что указатель у него public: ![]() думаю надо эту draw(..) крутить. еще вопрос
в дебажной версии может проверят стоит не выходит ли index за границы списка? Сообщение отредактировал kwisp - 8.9.2009, 19:48 |
|
|
kemiisto |
![]()
Сообщение
#44
|
![]() Студент ![]() Группа: Участник Сообщений: 27 Регистрация: 5.9.2009 Из: Осло, Норвегия Пользователь №: 1054 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
BRE |
![]()
Сообщение
#45
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
kemiisto |
![]()
Сообщение
#46
|
![]() Студент ![]() Группа: Участник Сообщений: 27 Регистрация: 5.9.2009 Из: Осло, Норвегия Пользователь №: 1054 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
BRE |
![]()
Сообщение
#47
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
kemiisto |
![]()
Сообщение
#48
|
![]() Студент ![]() Группа: Участник Сообщений: 27 Регистрация: 5.9.2009 Из: Осло, Норвегия Пользователь №: 1054 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Да. Я добавил в файл проекта QMAKE_CXXFLAGS *= -W -Wall. -Werror не катить. Он у меня ругается на void retranslateUi(QMainWindow *MainWindow) из ui_MainWindow.h.
Но не суть важно. Если можно, то лучше на ты. Лады. |
|
|
BRE |
![]()
Сообщение
#49
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
Я добавил в файл проекта QMAKE_CXXFLAGS *= -W -Wall. -Werror не катить. Он у меня ругается на void retranslateUi(QMainWindow *MainWindow) из ui_MainWindow.h.
Но не суть важно. В этом режиме предупреждений быть не должно совсем. Или используй переменную MainWindow или сделай ее не видимой. Да на самом деле проще этим режимом не пользоваться, а следить за предупреждениями и по возможности исправлять, что бы их не было. Сообщение отредактировал BRE - 8.9.2009, 21:35 |
|
|
kwisp |
![]()
Сообщение
#50
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
ну что как успехи в ловле бага?
|
|
|
kemiisto |
![]()
Сообщение
#51
|
![]() Студент ![]() Группа: Участник Сообщений: 27 Регистрация: 5.9.2009 Из: Осло, Норвегия Пользователь №: 1054 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
kwisp |
![]()
Сообщение
#52
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
kemiisto,
так где собака была зарыта? |
|
|
kemiisto |
![]()
Сообщение
#53
|
![]() Студент ![]() Группа: Участник Сообщений: 27 Регистрация: 5.9.2009 Из: Осло, Норвегия Пользователь №: 1054 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 24.6.2025, 12:36 |