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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 3 4 [5] 6 7 ... 96
61  Компиляторы и платформы / Компиляторы / Re: Странность с Clang. : Октябрь 26, 2019, 18:28
Тогда этот "чувачок" в Qt Team работает. Потому как я лично просто стал использовать ровно то, что приехало с Qt 5.12.5, без изменений.

Можно ссылку, где в Qt такое непотребство?
Ссылочку на что? На дистрибутив Qt для установки?
62  Компиляторы и платформы / Компиляторы / Re: Странность с Clang. : Октябрь 26, 2019, 00:59
говорят там такое написано.
Код:
Flowing off the end of a constructor, a destructor, or a function with a cv void return type is equivalent to a return with no operand. Otherwise, flowing off the end of a function other than main (6.6.1) results in undefined behavior.
И это есть бред, который K&R идеологии противоречит, и не имеет силы поэтому.
63  Компиляторы и платформы / Компиляторы / Re: Странность с Clang. : Октябрь 24, 2019, 15:26
У чувачка банальный -Wall не включен а виноват кланг лол

Тогда этот "чувачок" в Qt Team работает. Потому как я лично просто стал использовать ровно то, что приехало с Qt 5.12.5, без изменений.
64  Компиляторы и платформы / Компиляторы / Re: Странность с Clang. : Октябрь 24, 2019, 14:51
Clang был бы умничкой, если бы красную ошибку выдал. Как в случае с return; без значения. Поскольку по сути - это именно он и есть.
65  Компиляторы и платформы / Компиляторы / Re: Странность с Clang. : Октябрь 24, 2019, 13:23

Мой баг только в отсутствии return. Но это совсем не undefined behaviour. Behaviour как раз defined - завершился блок, составляющий тело функции. Значит завершилась функция, и из неё должен быть возврат. Только значение не определено - undefined value но не behaviour. Во всяком случае именно так работали все 6-7 компиляторов, которыми я когда-либо пользовался, начиная с K&R C в RT-11. Если там в статье написано что-то другое - значит чушь написана.
66  Компиляторы и платформы / Компиляторы / Re: Странность с Clang. : Октябрь 24, 2019, 10:31
однако баг репортом запахло...
По стандарту эта ситуация приводит к UB.
Хотели неопределенности - нате. Улыбающийся
Не.... неопределённость в возвращаемом значении. Но не в алгоритме. По алгоритму функция завершилась, должен быть возврат без определённого значения функции. Обязан быть ret после разбора закрывающей фигурной скобки. Но его нет. Это баг.
67  Компиляторы и платформы / Компиляторы / Re: Странность с Clang. : Октябрь 23, 2019, 23:31
 Шокированный

я хотел в код глянуть, но некогда было

однако баг репортом запахло...
68  Компиляторы и платформы / Компиляторы / Странность с Clang. : Октябрь 23, 2019, 13:21
Недавно перевёл свои проекты для Android для Clang - теперь им Qt5 собирается. В проекте была ошибка

Код:
void SettingsDlg::isCalendar(bool goodName)
{
    ui->calendarName->setStyleSheet( goodName ? stylegood : stylebad );
}

bool SettingsDlg::isCalendar(QString accountName)
{
    isCalendar( _checkforname(QString) );
}

и вызов выше был:
    isCalendar( oldname );

То есть у второго варианта функции не было возвращаемого значения, хотя функция объявлена как bool (и в .h также). Компилятор выдал предупреждение, хотя по идее должна выдаваться ошибка - возвращаемое значение не определено. Даже QtCreator 5.10 отметил строку замечанием. Но самое странное, что в таком случае... происходило падение при выходе из второго варианта. Заменил возврат bool на void - всё стало нормально. Ну предупреждение вместо ошибки - это ещё ладно, хотя IMHO должна быть серьёзная ошибка. Но падать то от чего? Возврат ведь не использовался. Неопределённое булево значение легло на стек - false или true, не известно. Но его значение вызывающая функция проигнорировала, указатель стека просто отсчитала на 1 больше, и всё.

Пересмотрел ещё раз код - других косяков не видно, работает как вкопанный. То есть, вторичной наведённой ошибки тоже вроде не было. Да и как она может быть, это же не переменная не инициализированная - одно слово на стеке.
69  Qt / Qt-инструментарий / Re: Чё я только что узнал про QtCreator... для Android существенно. : Октябрь 02, 2019, 15:42
На самом деле, он не удаляется автоматически. Да мало ли что... Это всё равно как передавать разные документы всегда в файле documents.zip. Обезличенно.
70  Qt / Qt-инструментарий / Re: Чё я только что узнал про QtCreator... для Android существенно. : Октябрь 02, 2019, 14:22
А ничего что потом юзерам именно такие файлы и поедут?...
71  Qt / Qt-инструментарий / Чё я только что узнал про QtCreator... для Android существенно. : Октябрь 02, 2019, 12:40
Все знают, что после процесса сборки можно добавить свой кастомный шаг. Это вообще необходимая вещь при создании приложений для Android, поскольку APK залетает глубоко в каталоги, и имеет всегда одно и то же имя android-build-release-signed.apk. Его оттуда надо выковыривать и переименовывать перед публикацией. Можно создать кастомный шаг сборки и добавить команду копирования (правда с этого момента сама сборка перестанет быть мультиплатформенной). Например:

Команда: cp
Параметры: android-build-release-signed.apk /<маршрут куда копировать>/<имя приложения>.<имя компании>.com.apk
Рабочий каталог: %{CurrentProject:BuildPath}/android-build/build/outputs/apk

Всё дело в том, что для файлов APK с некоторых пор Google требует чтобы все символы были в нижнем регистре. То есть, если название проекта совпадает с названием приложения, но имеет символы в верхнем регистре, то его уже нельзя просто так подставить вместо <имя приложения>. Однако, есть изворот, как сказали в Qt team:

%{JS: '%{CurrentProject:Name}'.toLowerCase()} - это название приложения в нижнем регистре. То есть, можно в кастомный шаг вписать

Параметры: android-build-release-signed.apk /<маршрут куда копировать>/%{JS: '%{CurrentProject:Name}'.toLowerCase()}.<имя компании>.com.apk

у всех своих приложений для Android - и переименованные файлы будут улетать в нужное место. Не идеально, конечно, но кучу времени на клики мышкой и наборы текста экономит.

Проверил - работает.
72  Qt / Общие вопросы / Re: Сохранить вложенную "константу строки" в RegExp : Август 24, 2019, 14:33
тогда лишаемся такой возможности
Цитировать
2+2
Эта хотелка давно и просто делается рекурсивным разбором выражений. Описано в любом учебнике по компиляторам. Можно просто тупо брать ветку БНФ из языка Си, и реализовывать. Разумеется, таким же разбором можно и кавычки и любые скобки разбирать без всяких RegExp, но в реальном приложении это будет стрельба из пушки по воробьям.
73  Qt / Общие вопросы / Re: Сохранить вложенную "константу строки" в RegExp : Август 21, 2019, 15:21
Я бы предложил TC, на основе архитектуры boost::tokenizer, написать свой класс QTokenizer. Думаю, это работа на пару вечеров.   
Когда-нибудь в другой раз. Мне меньше чем за 10 дней до отъезда надо кучу всего сделать. Поскольку решение быстро не было найдено, пришлось изменить спецификации - разрешить в строке простые тэги и быстро сделать разбор строки по ним. За полдня. Так что вопрос пока снимается. Но вообще писание самих регэкспов достаточно муторное занятие, интересно было бы иметь что-то вроде "библиотеки" из них. Публичной, разумеется. Чтобы в ней можно было найти готовое решение для своей задачи, или хотя бы с минимальной корректировкой, возможностью тут же онлайн проверить вводом тестовой строки.

Может быть такое уже и есть, но я не нашёл.
74  Qt / Общие вопросы / Re: Сохранить вложенную "константу строки" в RegExp : Август 20, 2019, 22:11
Цитировать
В кладовой готовых я не нашёл, гугл выдаёт всякую хрень.
Плохо искали) Помню, одно время эта тема горячо обсуждалась) И решений было несколько предложено) http://www.prog.org.ru/topic_22338_0.html

А вообще для этого есть boost::tokenizer https://www.boost.org/doc/libs/1_66_0/libs/tokenizer/  

Просмотрел, там много воды и нет явного подходящего варианта. Много лишнего, задача немного другая, немного проще - в строке цельные токены выделяются только кавычками. Ковырять и экспериментировать мне некогда. Boost и std:string не подходят, у меня их нет в приложении вообще, оно делается для Android. Сейчас пока на GNU CC, потом для выпуска перейду на Clang - там родное Qt-шное гарантированно работает, а с посторонними библиотеками и тулзами не известно. Поэтому только QString и собственные библиотеки Qt5.
75  Qt / Общие вопросы / Сохранить вложенную "константу строки" в RegExp : Август 20, 2019, 12:54
Нужен разбор строки аналогичный QStringList parts = entire.split(QRegExp("\\W+"), QString::SkipEmptyParts);, но чтобы если в ней встречается последовательность символов между двойных кавычек, она целиком и без кавычек переносилась в элемент List-а. То есть, если есть строка:

Мама, глядя, сказала: "твою мать"\n и ушла.

Она разбиралась на

Мама
глядя
сказала
твою мать
и
ушла

То есть, строка эта изначально в QString (не строковая константа в коде), а \n - символ перевода каретки внутри неё. Может у кого-нибудь в коллекции есть такое? В кладовой готовых я не нашёл, гугл выдаёт всякую хрень.
Страниц: 1 ... 3 4 [5] 6 7 ... 96

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