Underwest пишет:
xintrea пишет:
Underwest пишет:

спасибо за новую версию.
Пожелание - уберите console для win-сборки, она совсем там лишняя

Без этой опции не работают отладочные сообщения, если поставить галку "Выводить отладочные сообщения в консоль".

Для отладки оно то и нужно, но для повседневнего использования лишнее черное окно, которое нельзя закрыть совсем не нужно

Всё, придумал как быть. В виндовый архив положил два exe-шника. Один называется mytetra.exe, другой mytetra_debug.exe. У дебаговой версии появляется консоль. А запуск mytetra.exe теперь происходит без создания консольного окна, по-обычному.

Архив с виндовой версией на официальной странице заменен.

Lazy_Kent пишет:

Это происходит при использовании GCC 4.5 и выше.
Помогает добавление к CXXFLAGS опции -fpermissive для смягчения проверки.
Но вообще это ошибка в коде.

Елки палки, опять версии компилятора чудят. Я боюсь, что придет то время, когда массивы unsigned char и сишные строковые функции выпилят из стандарта. Вот тогда точно будет потеря 90% существущего софта.

А чем плохо лишний раз напрямую указать область видимости? Тем более что в куче примеров по Qt для возвращения пустой строки всегда пишут return QString::QString ();

Underwest пишет:
xintrea пишет:
Underwest пишет:

спасибо за новую версию.
Пожелание - уберите console для win-сборки, она совсем там лишняя

Без этой опции не работают отладочные сообщения, если поставить галку "Выводить отладочные сообщения в консоль".

Для отладки оно то и нужно, но для повседневнего использования лишнее черное окно, которое нельзя закрыть совсем не нужно

А вы случайно не знаете, как сделать так, чтобы по ключу запускать программу либо с консолью, либо без?

shiz пишет:

вышлю конечно, только скажите куда.

Xintrea (уотшень слайа цобакко) gmail.com

shiz пишет:

я просто не знаком с синтаксисом файлов, которые использует qmake и не в курсе как добавить соответсвующие ключи для линковки. без -lcompat программа не линкуется. вот поэтому я и стал править Makefile

Попробуйте сделать так. Откройте mytetra.pro, найдите строку:

QMAKE_LFLAGS += -L/usr/lib/qt4/lib

После нее добавьте еще одну строку:

LIBS += -lcompat

Скажите, что получилось.

shiz пишет:

версия системы: FreeBSD 8.2

Уважаемый Шиз.

Если есть возможность, вышлите пожалуйста вашу бинарную сборку под FreeBSD, если таковая имеется. Или опубликуйте свой порт и пришлите ссылку. Спасибо.

Underwest пишет:

На маке бандл нормально собирается только в Qt 4.6.4, по 4.7 - нету иконок

Ну как получится, высылай, общественность ждет а я буду благодарен. Если не получится с 4.7, собирай с 4.6.4. Мне, как пользователю было бы всеравно, с каким Qt собран бандл. Лишь бы инсталлилось и работало.

shiz пишет:

версия системы: FreeBSD 8.2
Версия qt: QMake version 2.01a Using Qt version 4.7.3 in /usr/local/lib/qt4

Собралось и заработало после следующих правок:
1. для файла main.cpp
--- src/main.cpp        2011-07-12 15:36:50.000000000 +0400
+++ src/main_new.cpp    2011-07-12 15:15:26.000000000 +0400
@@ -1,3 +1,4 @@
+#include <sys/types.h>
#include <sys/timeb.h>

Так, понятно, добавили #include <sys/types.h> в main.cpp


shiz пишет:

2. для Makefile, который сгенерирован qmake:
--- Makefile    2011-07-12 15:36:28.000000000 +0400
+++ Makefile_new        2011-07-12 15:29:35.000000000 +0400
@@ -16,7 +16,7 @@
INCPATH       = -I/usr/local/share/qt4/mkspecs/freebsd-g++ -I. -I/usr/local/include/qt4/QtCore -I/usr/local/include/qt4/QtNetwork -I/usr/local/include/qt4/QtGui -I/usr/local/include/qt4/QtXml -I/usr/local/include/qt4/QtSvg -I/usr/local/include/qt4 -Ibuild -I/usr/local/include

А тут непонятно. Делать изменения в Makefile смысла нет, он всеравно перезапишется после команды qmake. На что были направлены изменения? Их можно сделать в исходниках или в файле проекта mytetra.pro?

Shura пишет:

Не собирается:

src/crypt/Password.cpp: In member function ‘void Password::smartSaveMiddleHash(QString)’:
src/crypt/Password.cpp:261:86: error: cannot call constructor ‘QString::QString’ directly
src/crypt/Password.cpp:261:86: error:   for a function-style cast, remove the redundant ‘::QString’
make: *** [build/Password.o] Ошибка 1
$ qmake -v
QMake version 2.01a
Using Qt version 4.7.2 in /usr/lib

Заменил в приведенных строках
QString::QString() на QString() и всё скомпилилось.

В какой операционке компилируете? Ошибка странная, такое впечатление, что в вашем Qt 4.7.2 изменённая реализация QString.

В Qt 4.7.4 под Windows у меня компилируется без ошибок.

Underwest пишет:

На маке все те же на манеже, бандл нормально собирается только в Qt 4.6.4, по 4.7 - нету иконок sad хотя работает и так и так. Попробуем на выходных по свободе попилить

Хм, это странно, что сборка под 4.6.4 показывает иконки, а сборка под 4.7.x - нет. Тут видимо сказывается какая-то особенность Qt 4.7 под Mac, сборка в виндовой Qt 4.7 иконки показывает.

Underwest пишет:

спасибо за новую версию.
Пожелание - уберите console для win-сборки, она совсем там лишняя

Без этой опции не работают отладочные сообщения, если поставить галку "Выводить отладочные сообщения в консоль".

Эта ветка создана для вопросов по программе MyTetra v.1.30.

ghost пишет:

Надо было "запихнуть" в mytetra кучку инфы (отзеркалил сайт, хотел сделать из него удобный справочник), написал скрипт - разгребатель, сформировал строчки для xml файла,  скопировал их в xml, что получилось:

1. mytetra прекрасно все показывает....

Это уже полдела.


ghost пишет:

2. при попытке удалить запись - убиваются все файлы на которые ссылаются добавленные мной строчки.

Значит вы неправильно сгенерировали центральный xml или html-файлы к нему. Посмотрите как организованы записи, сделанные в самой MyTetra. Каждый html-файл с одной записью лежит в отдельной директории. Недостаточно иметь толпу html-файлов в одном каталоге, и прописывать пути к ним их в xml.


ghost пишет:

3. записи не копируюся, не переносятся и т.д...

Потому что вы сгенерировали базу в неправильном формате. Повторите структуру, хранения данных, которая есть в MyTetra, и все должно заработать. Там всё просто.


ghost пишет:

Есть правда пара моментов - файлики называются 000_<int>.html, именно их все и убивает может с этим проблема?

Нет, тут проблемы нет. Если вы в элементе <record> пропишите атрибут file="000_12345.html", то MyTetra и будет открывать именно этот файл.

Следует помнить, что файл будет открываться в директории, которая прописана в атрибуте dir. И в этом dir можно ложить только один html-файл. Остальные "лишние" файлы будут удаляться при любом редактировании файла, прописанного в атрибуте file (остануться только картинки, используемые в данном html-нике). Это нужно для того, чтобы MyTetra сама чистила все лишнее в отведенной для конкретной записи директории.


ghost пишет:

и второе - все файлики лежат толпой в одном каталоге, куда wget -ом и был стянут сайт.

В этом вся и проблема.

Lazy_Kent пишет:

gcc 4.6.
Будем релизить openSUSE 12.1 в ноябре. Но это первая ласточка. Другие дистры тоже перейдут на новый компилятор. Поэтому решать придётся, в любом случае.

Я в этом не силён, пытайтесь найти нужные опции в документации.

Я ещё менее силён. Подозреваю, что опции компилятора не удастся смягчить, так как всё заложено в %{optflags} дистрибутива. Иначе, у меня BuildService зарубит пакет на проверке логов, что, в общем-то, правильно.

В ходе работы над новой версией MyTetra я решил вашу проблему. Немного переделал код, и теперь в тех местах где у меня были предупреждения а у вас ошибки, их теперь нет. Поэтому, думаю, будет компилироваться и в openSUSE 12.1.

Lazy_Kent пишет:

Возникла проблема с компиляцией MyTetra 1.28 для openSUSE 12.1.
Полный лог здесь: https://build.opensuse.org/package/rawl … SE_Factory

Посмотрите, пожалуйста.
Версия openSUSE тестовая — новый компилятор и другие компоненты. В текущих всё компилируется нормально.

Хм, ситуация такая. Вот сами ошибки:

src/knowtreemodel.cpp: In member function 'void KnowTreeModel::parse_tree_to_dom(QDomElement*, TreeItem*)':
src/knowtreemodel.cpp:174:51: error: taking address of temporary [-fpermissive]
make: *** [build/knowtreemodel.o] Error 1
make: *** Waiting for unfinished jobs....
src/recordtabledata.cpp: In member function 'void RecordTableData::setup_data_from_dom(QDomElement*)':
src/recordtabledata.cpp:170:58: error: taking address of temporary [-fpermissive]
src/recordtabledata.cpp:202:50: error: taking address of temporary [-fpermissive]
make: *** [build/recordtabledata.o] Error 1

В других компиляторах на этих местах выдаются предупреждения с аналогичным текстом, а не ошибки.

Первое место - это вызов рекурсивной функции для пробега по дереву, с передачей адреса стартового узла. Алгоритм сделан так, что адрес не портится, поэтому такой вызов правомерен:

   // Рекурсивная обработка
1:   parse_tree_to_dom(&(xmlData->lastChildElement()), currItem->child(i) );

А новый компилятор считает это ошибкой. Кстати, какая версия компилятора?

Хотя щас посмотрю... Видимо не в рекурсии дело, а в процедуре взятия адреса. Потому что два других места - это не рекурсивный вызов, а просто запоминание указателя на Dom-элемент:

  // Определяется указатель на первый элемент с записью
2:  QDomElement *currentRec=&(domModel->firstChildElement());

  ...

3:  currentRec=&(currentRec->nextSiblingElement());

Правда, тут после запоминания ячейка с указателем перезаписывается новым значением (3-е место).

Пока не знаю, что это такое. В новой версии я попробую упразднить эти предупреждения, возможно тогда и ошибки не будут вылазить.