crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

6 страниц V   1 2 3 > »   
Ответить в данную темуНачать новую тему
kemiisto
  опции профиля:
сообщение 5.9.2009, 16:34
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.9.2009
Из: Осло, Норвегия
Пользователь №: 1054

Спасибо сказали: 2 раз(а)




Репутация:   0  


Здравствуйте!

Если у кого-нибудь найдётся минутка-другая, посмотрите проектик. Исходники тут. Я не стал убирать *.dll и *.a от QGLViewer'а и инклюды от QGLViewer'а и Eigen'а. Так чтоб под Windows собиралось "из коробки"...

Я первый раз пишу на ++ и проект только-только начинается. Так что там много методов-пустышек и "говнокода". :blush:

Собственно, беда такая. Есть у нас класс (молекула)
namespace Chemistry
{
  class Molecule
  {
  public:
  ...

  private:
    typedef QList<Chemistry::Bond*> IncidenceList;
    typedef QList<IncidenceList> IncidenceMatrix;

    IncidenceMatrix incidenceMatrix_;
    QList<Chemistry::Bond*> chemistryBonds_;
    QList<Chemistry::Atom*> chemistryAtoms_;    
    ...
  };
}


В Render::Viewer попытка использовать экземпляр этого класса
namespace Render
{
  class Viewer : public QGLViewer
  {
    Q_OBJECT

  public:
  ...

  protected:
  ...

  private:
    Chemistry::Molecule chemistryMolecule_;
    ...

  };
}


Попытка не совсем успешная. Когда отрабатывает конструктор Chemistry::Molecule, все 3 списка инициализируются.



При попытке добавить атом в Render::Viewer::mousePressEvent в самом начале ставим точку останова:



Вот. Куда то пропал incidenceMatrix_. Куда?

А самое интересное. Если в объявлении поменять местами скажем так:
  private:
    typedef QList<Chemistry::Bond*> IncidenceList;
    typedef QList<IncidenceList> IncidenceMatrix;

    QList<Chemistry::Bond*> chemistryBonds_;
    QList<Chemistry::Atom*> chemistryAtoms_;
    IncidenceMatrix incidenceMatrix_;


то на точке останова не будет уже chemistryBonds_.

То есть получается: кто первым объявлен (первым инициализируется в конструкторе), тот куда-то пропадает.

Немного побегал дебагом. Список портится внутри void Render::Viewer::updateMolecule().

До вызова updateGL() всё отлично, после <internal error>. А это метод (точнее слот) QGLViewer'а.

Мыслей больше нет. :blink:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 5.9.2009, 17:34
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


В отладчике не смотрел, воткнул qDebug в Chemistry::Molecule::Molecule(const Chemistry::Molecule& chemistryMolecule)
Chemistry::Molecule::Molecule(const Chemistry::Molecule& chemistryMolecule)
{
  chemistryAtoms_ = QList<Chemistry::Atom*>(chemistryMolecule.chemistryAtoms_);
  chemistryBonds_ = QList<Chemistry::Bond*>(chemistryMolecule.chemistryBonds_);
  incidenceMatrix_ = IncidenceMatrix(chemistryMolecule.incidenceMatrix_);
  charge_ = chemistryMolecule.charge_;
  
  qDebug() << "chemistryAtoms_" << chemistryAtoms_;
  qDebug() << "chemistryBonds_" << chemistryBonds_;
  qDebug() << "incidenceMatrix_" << incidenceMatrix_;
  qDebug() << "charge_" << charge_;
}
запустил программу, открыл пример 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
  опции профиля:
сообщение 5.9.2009, 18:18
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.9.2009
Из: Осло, Норвегия
Пользователь №: 1054

Спасибо сказали: 2 раз(а)




Репутация:   0  


Litkevich Yuriy, спасибо, что не бросаете в беде! :rolleyes:

Цитата(Litkevich Yuriy @ 5.9.2009, 16:34) *
Может помогалка для отладчика (в Креаторе) глючит?

Хм... Врядли.
Оно падает при попытке добавить атом в Render::Viewer::mousePressEvent. Сначала импортируем молекулу, потом пытаемся добавить атом. Доходит до
case MODE_ADD:
      if (found)
      ...
      else
      {
        ...
        chemistryMolecule_.addAtom(chemistryAtom);
      }

идёт в else веточку и падает на addAtom(). Или чуть ниже на updateMolecule(). Так как к этому моменту один из QList в составе Chemistry::Molecule "побит". Бъётся при updateGL(). Какой - зависит от порядка объявления. Вот...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 5.9.2009, 18:21
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kemiisto @ 5.9.2009, 22:18) *
Сначала импортируем молекулу, потом пытаемся добавить атом.
объясни как это в программе сделать (куда кликать?).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kemiisto
  опции профиля:
сообщение 5.9.2009, 18:32
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.9.2009
Из: Осло, Норвегия
Пользователь №: 1054

Спасибо сказали: 2 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 5.9.2009, 17:21) *
объясни как это в программе сделать (куда кликать?).

OK. Сначала Job - Dalton Input. Выбираем последовательно H2O.dal, затем, скажем, caffeine.mol. Видим молекулу. Справа в тулбоксе переходим на вкладку Add. Жмакаем внутри вьювера по пустому месту (мимо атомов). Должен добавится атом (пока прям в начало координат). Но... =(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 5.9.2009, 18:53
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kemiisto @ 5.9.2009, 22:32) *
Должен добавится атом (пока прям в начало координат). Но... =(
Добавился, а соединения между атомами исчезли
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kemiisto
  опции профиля:
сообщение 5.9.2009, 19:01
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.9.2009
Из: Осло, Норвегия
Пользователь №: 1054

Спасибо сказали: 2 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 5.9.2009, 17:53) *
Добавился, а соединения между атомами исчезли

Ага. Такое тоже возможно. Портится список, объявленный первым в Chemistry::Molecule. Сейчас это список связей (QList<Chemistry::Bond*> chemistryBonds_;). Он не обязательно становится недоступным (<internal error>). Иногда оттуда просто исчезают элементы, иногда их там становится бесконечно много. Как бы то ни было, портится список. :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 5.9.2009, 19:09
Сообщение #8


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


kemiisto,
то что кто первый в объявлении класса тот и "портится" это вполне возможно где то в программе на память "наступил".

ПС.
тоже интересно не могу проект открыть чего то архив сопротивляется. :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 5.9.2009, 19:12
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kwisp @ 5.9.2009, 23:09) *
тоже интересно не могу проект открыть чего то архив сопротивляется.
Я без проблем открыл, у меня 7z-4.65
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 5.9.2009, 19:31
Сообщение #10


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


kemiisto,
Chemistry::Molecule::Molecule(const Chemistry::Molecule& chemistryMolecule)
{
  chemistryAtoms_ = QList<Chemistry::Atom*>(chemistryMolecule.chemistryAtoms_);
  chemistryBonds_ = QList<Chemistry::Bond*>(chemistryMolecule.chemistryBonds_);
  incidenceMatrix_ = IncidenceMatrix(chemistryMolecule.incidenceMatrix_);
  charge_ = chemistryMolecule.charge_;
}


вот так не стоит писать..
в этом конструкторе каждый лист создается по 2 раза(если лист имеет конструктор по умолчанию без аргументов).

не знаю, может с оператором присваивания у тебя в классе не лады
ты во вьюер устанавливаешь молекулу в setMolecul(...) т.е. chemistryMolecul_ у тебя уже инициализирован конструктором по умолчанию в конструкторе вьюера( листы пустые там).

ну попробуй
так
Chemistry::Molecule::Molecule(const Chemistry::Molecule& chemistryMolecule):
  chemistryAtoms_(chemistryMolecule.chemistryAtoms_),
  chemistryBonds_(chemistryMolecule.chemistryBonds_),
  incidenceMatrix_ ,(chemistryMolecule.incidenceMatrix_),
  charge_(chemistryMolecule.charge_)
{

}

Chemistry::Molecule& Chemistry::Molecule::operator=(const Chemistry::Molecule& chm)
{
if(this!=&chm){
  chemistryAtoms_ = QList<Chemistry::Atom*>(chm.chemistryAtoms_);
  chemistryBonds_ = QList<Chemistry::Bond*>(chm.chemistryBonds_);
  incidenceMatrix_ = IncidenceMatrix(chm.incidenceMatrix_);
  charge_ = chm.charge_;
}
return *this;
}


Сообщение отредактировал kwisp - 5.9.2009, 19:58
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 5.9.2009, 19:40
Сообщение #11


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(kwisp @ 5.9.2009, 20:31) *
kemiisto,
Chemistry::Molecule::Molecule(const Chemistry::Molecule& chemistryMolecule)
{
  chemistryAtoms_ = QList<Chemistry::Atom*>(chemistryMolecule.chemistryAtoms_);
  chemistryBonds_ = QList<Chemistry::Bond*>(chemistryMolecule.chemistryBonds_);
  incidenceMatrix_ = IncidenceMatrix(chemistryMolecule.incidenceMatrix_);
  charge_ = chemistryMolecule.charge_;
}


вот так не стоит писать..
в этом конструкторе каждый лист создается по 2 раза(если лист имеет конструктор по умолчанию без аргументов).

Причем копируются только указатели, а не сами объекты атомов и связей. Если бы был деструктор корректно уничтожающий все объекты атомов и связей, проблемы начались бы раньше. ;)
Кстати в матрице тоже список указателей.

Сообщение отредактировал BRE - 5.9.2009, 19:42
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 5.9.2009, 20:25
Сообщение #12


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


ну да по идее у 2 разных молекул должны быть разные атомы...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 5.9.2009, 20:41
Сообщение #13


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Жаль под linux собрать не могу, по исходникам не легко разбираться. :unsure:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kemiisto
  опции профиля:
сообщение 5.9.2009, 20:42
Сообщение #14


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.9.2009
Из: Осло, Норвегия
Пользователь №: 1054

Спасибо сказали: 2 раз(а)




Репутация:   0  


BRE, kwisp, я учитываю ваши комментарии. Спасибо. Избавлюсь от ссылок в списках, вспомню об инициализаторах в конструкторах, ... Потихоньку перепишу, а там видно будет.

Тему не закрываю пока.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 5.9.2009, 21:24
Сообщение #15


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(BRE @ 6.9.2009, 0:41) *
Жаль под linux собрать не могу, по исходникам не легко разбираться.
тебе наверно надо QGLViewer собрать сначала (проект тут)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 5.9.2009, 21:28
Сообщение #16


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(Litkevich Yuriy @ 5.9.2009, 22:24) *
Цитата(BRE @ 6.9.2009, 0:41) *
Жаль под linux собрать не могу, по исходникам не легко разбираться.
тебе наверно надо QGLViewer собрать сначала (проект тут)

Сейчас гляну, но у меня еще на этапе компиляции проекта kemiisto ошибку выдает. Разбираться придется.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kemiisto
  опции профиля:
сообщение 5.9.2009, 21:46
Сообщение #17


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.9.2009
Из: Осло, Норвегия
Пользователь №: 1054

Спасибо сказали: 2 раз(а)




Репутация:   0  


Цитата(kwisp @ 5.9.2009, 18:31) *
ну попробуй
так

Не помогает. :wacko:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 5.9.2009, 22:52
Сообщение #18


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


kemiisto,
значит надо досканалнее. глянуть.
расскажи где ты удаляешь атомы?
подумай где можешь наступать на память?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kemiisto
  опции профиля:
сообщение 6.9.2009, 1:22
Сообщение #19


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.9.2009
Из: Осло, Норвегия
Пользователь №: 1054

Спасибо сказали: 2 раз(а)




Репутация:   0  


kwisp, хорошо. Напишу explicit деструкторы для классов, погоняю код. А там видно будет. :scratch_one-s_head:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kemiisto
  опции профиля:
сообщение 6.9.2009, 20:05
Сообщение #20


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.9.2009
Из: Осло, Норвегия
Пользователь №: 1054

Спасибо сказали: 2 раз(а)




Репутация:   0  


Ну вот, потихоньку изменил код. Убрал пока указатели где только возможно. Нашлись ошибки! ;)

Во-первых, вот тут был бред:
Chemistry::Bond::Bond(const Chemistry::Bond& chemistryBond)
{
  chemistryMolecule_ = chemistryMolecule_;
  beginIndex_ = chemistryBond.beginIndex_;
  endIndex_ = chemistryBond.endIndex_;
}

В первой строчке в теле. Ну это ляп, конечно же. Когда начал переписывать со списками инициализаторов - заметил.

Ну и там ещё по мелочи. Но толку нет. Симптомы теже. Портятся мои списки. :unknw:

Архивчик обновил. Может посмотрите?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Kagami
  опции профиля:
сообщение 6.9.2009, 22:06
Сообщение #21


Старейший участник
****

Группа: Участник
Сообщений: 601
Регистрация: 2.2.2009
Пользователь №: 523

Спасибо сказали: 101 раз(а)




Репутация:   9  


У меня не собирается
Раскрывающийся текст
Цитата
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. Из-за вот этого куска:
#ifdef __APPLE__
    QFont font("Monaco", 12);
#endif
#ifdef _WIN32
    QFont font("Luicida Console", 8);
#endif

Судя по-всему, поддержка линукса не предусмотрена :(

Сообщение отредактировал Kagami - 6.9.2009, 22:12
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kemiisto
  опции профиля:
сообщение 6.9.2009, 22:53
Сообщение #22


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.9.2009
Из: Осло, Норвегия
Пользователь №: 1054

Спасибо сказали: 2 раз(а)




Репутация:   0  


Цитата(Kagami @ 6.9.2009, 21:06) *
Судя по-всему, поддержка линукса не предусмотрена

Добавьте что-нибудь типа:
#ifdef linux
    QFont font()
#endif

и должно работать на Linux.

#ifdef linux
    QFont font;
#endif


А где тут на форуме кнопка "Редактировать сообщение"?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Kagami
  опции профиля:
сообщение 6.9.2009, 23:35
Сообщение #23


Старейший участник
****

Группа: Участник
Сообщений: 601
Регистрация: 2.2.2009
Пользователь №: 523

Спасибо сказали: 101 раз(а)




Репутация:   9  


Что-нибудь типа... Хех. http://doc.trolltech.com/4.5/qtglobal.html#Q_WS_X11
#ifdef Q_WS_X11
    QFont font;
#endif


P.S. Появится после 20-ти сообщений

Сообщение отредактировал Kagami - 6.9.2009, 23:36
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kemiisto
  опции профиля:
сообщение 6.9.2009, 23:41
Сообщение #24


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.9.2009
Из: Осло, Норвегия
Пользователь №: 1054

Спасибо сказали: 2 раз(а)




Репутация:   0  


Начинаем набирать 20 сообщений. ;)

Цитата(Kagami @ 6.9.2009, 22:35) *
Что-нибудь типа... Хех. http://doc.trolltech.com/4.5/qtglobal.html#Q_WS_X11

:blush: Вам виднее. Кстати, мне это пригодится.

Та терь, вообще, можно эти дефайны убрать. Раньше на Яблоке были проблемы.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 6.9.2009, 23:49
Сообщение #25


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kemiisto @ 7.9.2009, 2:53) *
А где тут на форуме кнопка "Редактировать сообщение"?
20 сообщений наберёшь появится.

Цитата(Kagami @ 7.9.2009, 3:35) *
Q_WS_X11
WS -window system, а есть ещё с буквами OS - Q_OS_LINUX
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 7.9.2009, 13:33
Сообщение #26


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(kemiisto @ 5.9.2009, 19:32) *
Жмакаем внутри вьювера по пустому месту (мимо атомов). Должен добавится атом (пока прям в начало координат). Но... =(

у меня добавился и ничего не упало...
это правильно?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kemiisto
  опции профиля:
сообщение 7.9.2009, 14:08
Сообщение #27


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.9.2009
Из: Осло, Норвегия
Пользователь №: 1054

Спасибо сказали: 2 раз(а)




Репутация:   0  


Цитата(kwisp @ 7.9.2009, 12:33) *
у меня добавился и ничего не упало...
это правильно?

А Вы перед этим молекулу импортировали? Попробуйте добавить атом к импортированной молекуле.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 7.9.2009, 14:15
Сообщение #28


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


kemiisto,
добавляю и к импортированной через раз. баг ваш не стабильный нужно четче отследить ситуацию при которой он возникает.
делаю все как вы писали Юрию. потом перед тем как кликнуть на пустом месте просто немного поворачиваю молекулу прехожу по вкладкам job и проч и потом атом в центр добавляется...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kemiisto
  опции профиля:
сообщение 7.9.2009, 17:05
Сообщение #29


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.9.2009
Из: Осло, Норвегия
Пользователь №: 1054

Спасибо сказали: 2 раз(а)




Репутация:   0  


kwisp, я туперь на 100% уверен, что неправильно собирал QGLViewer. Я там *.pro файл немного правил. Но вот, что интересно. Там в QGLViewer/QGLViewer.pro в самом начале есть строчка:
CONFIG -= debug debug_and_release
CONFIG *= release qt opengl warn_on shared thread create_prl rtti


Я так понимаю, с такими строчками debug версии либы заиметь не получится. Но в самом низу:
win32 {
  CONFIG -= release
  CONFIG += debug_and_release build_all

То есть для windows обратно меняем ситуацию.

Вот сейчас nmake у меня собрал и debug и release. А MinGW make не собирал раньше debug. А на Mac OS X там вообще всё очень хитро с этими framework'ами... Короче, если собирать QGLViewer как дадено - вроде бы проблемы нет.

kwisp, а Вы его сами собирали? Если да, где и как?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 7.9.2009, 18:58
Сообщение #30


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


kemiisto, вопрос конечно интересный.
я собирал на работе по винду MiGW 3.4.3зашел в директорию проекта файл проекта даже не открывал скомандовал qmake и make и всё:)
вот бы узнать как криво собранная библиотека портит твои списки? мистика прям:)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Kagami
  опции профиля:
сообщение 7.9.2009, 20:13
Сообщение #31


Старейший участник
****

Группа: Участник
Сообщений: 601
Регистрация: 2.2.2009
Пользователь №: 523

Спасибо сказали: 101 раз(а)




Репутация:   9  


Кстати, а на предупреждения компилятора никто не смотрел? Может в них собака зарыта?
Раскрывающийся текст
Цитата
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
  опции профиля:
сообщение 7.9.2009, 20:19
Сообщение #32


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


я не помню. потому что поставил на сборку и ушел обедать.
поэтому не видел процесса сборки.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Kagami
  опции профиля:
сообщение 7.9.2009, 20:32
Сообщение #33


Старейший участник
****

Группа: Участник
Сообщений: 601
Регистрация: 2.2.2009
Пользователь №: 523

Спасибо сказали: 101 раз(а)




Репутация:   9  


У меня вроде все работает и ничего не падает. Атом в центр координат добавляется. Кстати, в молекуле сразу после импорта одной связи нету.

P.S. Для сборки под дебианом пришлось поставить QGLViewer
Цитата
$ sudo apt-get install libqglviewer-qt4-dev

и подправить файл проекта
linux-g++ {
  DESTDIR = Binaries/Linux
  LIBS *= -L/usr/lib -lqglviewer-qt4
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kemiisto
  опции профиля:
сообщение 7.9.2009, 21:02
Сообщение #34


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.9.2009
Из: Осло, Норвегия
Пользователь №: 1054

Спасибо сказали: 2 раз(а)




Репутация:   0  


Цитата(Kagami @ 7.9.2009, 19:32) *
Кстати, в молекуле сразу после импорта одной связи нету.

Это бага. Я её уже отловил.

Должно быть так:
void Render::Viewer::updateRenderBonds()
{
  renderBondsList_.clear();
  for (quint16 i = 0; i < chemistryMolecule_.bondsCount(); ++i)
  {
    Render::Bond renderBond(chemistryMolecule_.chemistryBond(i));
    addBond(renderBond);
  }
}

а было i < chemistryMolecule_.bondsCount() - 1.

Надо отучать себя от for'а. Но никак не могу заставить себя... :blush2:

Забавно. У меня на Mac OS атом сразу добавляется, а на Windows - нет. Но тут надо возится и с OpenGL...

Всем помогающим огромное спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kemiisto
  опции профиля:
сообщение 8.9.2009, 18:30
Сообщение #35


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.9.2009
Из: Осло, Норвегия
Пользователь №: 1054

Спасибо сказали: 2 раз(а)




Репутация:   0  


:help:

Ну, я практически локализовал баг. Но абсолютно не понимаю, как такое происходит. Я реорганизовал код, объединил классы, ... И вот, что происходит. Импорт молекулы проходит нормально (я добавил небольшую молекулку воды для удобства отладки).

Потом мы пытаемся добавить атом. Он добавляется в список атомов. Начинается перерисовка списков отображения OpenGL. Доходит до формирования списка связей - метод GLuint Render::Viewer::makeSticks(Quality quality):
{
  GLuint list = glGenLists(1);
  glNewList(list, GL_COMPILE);
  {
    QListIterator<Render::Bond> i(molecule_.bondsList_);
    while (i.hasNext())
    {
      i.next().draw(quality);
    }
  }
  glEndList();
  return list;
}

Создаём итератор и поехали! Списко атомов, связей пока ещё не попорчены. Вызываем метод draw для первой связи. Оказываемся внутри void Render::Bond::draw(Quality quality) const. Как в начале метода, так и в конце списки живы.

Возвращаемся обратно в makeSticks(). Списки по-прежнему живы. Снова заходим в draw()... И получаем epic fail! В списках какой-то мусор! :o:

Если будет у кого минутка, посмотрите, пожалуйста...

Архив.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 8.9.2009, 19:08
Сообщение #36


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(kemiisto @ 8.9.2009, 19:30) *
:help:


В конструкторе и операторе копирования в циклах не нужно вычитать единицу, у тебя же условие <.
Раскрывающийся текст

Render::Molecule::Molecule(const Render::Molecule& chemistryMolecule) :
    atomsList_(chemistryMolecule.atomsList_),
    bondsList_(chemistryMolecule.bondsList_),
    incidenceMatrix_(chemistryMolecule.incidenceMatrix_),
    charge_(chemistryMolecule.charge_)
{
  for (quint16 i = 0; i < atomsCount(); ++i)
  {
    atomsList_[i].molecule_ = this;
  }
  for (quint16 i = 0; i < bondsCount(); ++i)
  {
    bondsList_[i].molecule_ = this;
  }
}

Render::Molecule& Render::Molecule::operator=(const Render::Molecule& molecule)
{
  if (this != &molecule)
  {
    atomsList_ = QList<Render::Atom>(molecule.atomsList_);
    bondsList_ = QList<Render::Bond>(molecule.bondsList_);
    incidenceMatrix_ = IncidenceMatrix(molecule.incidenceMatrix_);
    charge_ = molecule.charge_;
  }
  for (quint16 i = 0; i < atomsCount(); ++i)
  {
    atomsList_[i].molecule_ = this;
  }
  for (quint16 i = 0; i < bondsCount(); ++i)
  {
    bondsList_[i].molecule_ = this;
  }
  return *this;
}

//
// Стоит проверять index на предмет выхода за пределы списка
//

const Render::Atom& Render::Molecule::atom(quint16 index) const
{
  Q_ASSERT( index < atomsList_.size() );
  return atomsList_.at(index);
}

const Render::Bond& Render::Molecule::bond(quint16 index) const
{
  Q_ASSERT( index < boundsList_.size() );
  return bondsList_.at(index);
}

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 8.9.2009, 19:11
Сообщение #37


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


я подозре\ваю что у второго атома в списке не валидный указатель на molecule_.
где атом получает указатель на молекулу?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 8.9.2009, 19:15
Сообщение #38


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(kwisp @ 8.9.2009, 20:11) *
я подозре\ваю что у второго атома в списке не валидный указатель на molecule_.
где атом получает указатель на молекулу?

Смотри конструктор и оператор копирования.... ;)
Предполагаю, такие штучки с циклами можно ожидать и в других местах.
kemiisto, проверь другие циклы на предмет < count() -1.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 8.9.2009, 19:16
Сообщение #39


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


[Дубль.]
[Блин, почему такие ошибки с редактированием сообщения происходят, приходиться по несколько раз сообщения набирать :unsure: ]

Сообщение отредактировал BRE - 8.9.2009, 19:18
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kemiisto
  опции профиля:
сообщение 8.9.2009, 19:27
Сообщение #40


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.9.2009
Из: Осло, Норвегия
Пользователь №: 1054

Спасибо сказали: 2 раз(а)




Репутация:   0  


Цитата(BRE @ 8.9.2009, 18:08) *
В конструкторе и операторе копирования в циклах не нужно вычитать единицу, у тебя же условие <.

Тьфу ты. Опять на теже грабли. :blush:
За Q_ASSERT тоже спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 8.9.2009, 19:33
Сообщение #41


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(BRE @ 8.9.2009, 20:15) *
Смотри конструктор и оператор копирования.... ;)

вот смотрю и нашел только что в конструкторе копий опять(не в списке инициализации) такая вещь:
Render::Atom::Atom(const Render::Atom& atom)
{
  molecule_ = atom.molecule_; // вот здесь получает указатель на молекулу.
  protons_ = atom.protons_;
  neutrons_ = atom.neutrons_;
  centre_ = atom.centre_;
  isSelected_ = atom.isSelected_;
  isMovable_ = atom.isMovable_;
}

болше я не нашел мест где происходит получение этого указателя... :(
может я чего то не понимаю...


думаю тут что то не так.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 8.9.2009, 19:36
Сообщение #42


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Не забудь исправить File::Dal::hasParametre(...).
Или используй signed или не проверяй на -1.
Компилятор зря не предупреждает. ;)

Цитата(kwisp @ 8.9.2009, 20:33) *
болше я не нашел мест где происходит получение этого указателя... :(
может я чего то не понимаю...

Ты в классе Molecule посмотри.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 8.9.2009, 19:40
Сообщение #43


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(BRE @ 8.9.2009, 20:36) *
Ты в классе Molecule посмотри.

а нашел.. прошляпил что указатель у него public:
:)
думаю надо эту draw(..) крутить.
еще вопрос
const Atom& Molecule::atom(quint16 index)
{
return atomList_.at(index);
}

в дебажной версии может проверят стоит не выходит ли index за границы списка?

Сообщение отредактировал kwisp - 8.9.2009, 19:48
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kemiisto
  опции профиля:
сообщение 8.9.2009, 19:57
Сообщение #44


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.9.2009
Из: Осло, Норвегия
Пользователь №: 1054

Спасибо сказали: 2 раз(а)




Репутация:   0  


Цитата(BRE @ 8.9.2009, 18:36) *
Не забудь исправить File::Dal::hasParametre(...).
Или используй signed или не проверяй на -1.

Это да. ;) Хотя, признаться, я бы на месте компилятора просто не компилировал такое...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 8.9.2009, 20:05
Сообщение #45


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(kemiisto @ 8.9.2009, 20:57) *
Это да. ;) Хотя, признаться, я бы на месте компилятора просто не компилировал такое...

Нужно его только попросить и он не будет... :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kemiisto
  опции профиля:
сообщение 8.9.2009, 20:42
Сообщение #46


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.9.2009
Из: Осло, Норвегия
Пользователь №: 1054

Спасибо сказали: 2 раз(а)




Репутация:   0  


Цитата(BRE @ 8.9.2009, 19:05) *
Нужно его только попросить и он не будет... :)

Это Вы про что-то вроде g++ -W -Wall -Werror?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 8.9.2009, 21:21
Сообщение #47


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(kemiisto @ 8.9.2009, 21:42) *
Цитата(BRE @ 8.9.2009, 19:05) *
Нужно его только попросить и он не будет... :)

Это Вы про что-то вроде g++ -W -Wall -Werror?

Да.
Если можно, то лучше на ты. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kemiisto
  опции профиля:
сообщение 8.9.2009, 21:31
Сообщение #48


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.9.2009
Из: Осло, Норвегия
Пользователь №: 1054

Спасибо сказали: 2 раз(а)




Репутация:   0  


Цитата(BRE @ 8.9.2009, 20:21) *
Да.

Я добавил в файл проекта QMAKE_CXXFLAGS *= -W -Wall. -Werror не катить. Он у меня ругается на void retranslateUi(QMainWindow *MainWindow) из ui_MainWindow.h.
warning: unused parameter 'MainWindow'


Но не суть важно.

Цитата(BRE @ 8.9.2009, 20:21) *
Если можно, то лучше на ты.

Лады.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 8.9.2009, 21:34
Сообщение #49


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(kemiisto @ 8.9.2009, 22:31) *
Я добавил в файл проекта QMAKE_CXXFLAGS *= -W -Wall. -Werror не катить. Он у меня ругается на void retranslateUi(QMainWindow *MainWindow) из ui_MainWindow.h.
warning: unused parameter 'MainWindow'


Но не суть важно.

В этом режиме предупреждений быть не должно совсем.
Или используй переменную MainWindow или сделай ее не видимой.

Да на самом деле проще этим режимом не пользоваться, а следить за предупреждениями и по возможности исправлять, что бы их не было.

Сообщение отредактировал BRE - 8.9.2009, 21:35
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 10.9.2009, 14:04
Сообщение #50


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


ну что как успехи в ловле бага?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kemiisto
  опции профиля:
сообщение 10.9.2009, 14:23
Сообщение #51


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.9.2009
Из: Осло, Норвегия
Пользователь №: 1054

Спасибо сказали: 2 раз(а)




Репутация:   0  


Цитата(kwisp @ 10.9.2009, 13:04) *
ну что как успехи в ловле бага?

Разобрался. :rolleyes: Теперь сижу, думу думаю. Нужно придумать одновременно простой и эффективной способ рисования молекул. Есть идеи, но до реализации далеко...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 10.9.2009, 14:36
Сообщение #52


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


kemiisto,
так где собака была зарыта?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kemiisto
  опции профиля:
сообщение 10.9.2009, 15:02
Сообщение #53


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 5.9.2009
Из: Осло, Норвегия
Пользователь №: 1054

Спасибо сказали: 2 раз(а)




Репутация:   0  


Цитата(kwisp @ 10.9.2009, 13:36) *
kemiisto,
так где собака была зарыта?


Цитата(BRE @ 8.9.2009, 18:08) *
В конструкторе и операторе копирования в циклах не нужно вычитать единицу, у тебя же условие <.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

6 страниц V   1 2 3 > » 
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 24.6.2025, 12:36