Delphi файлы RES и Мерзавец

Что вы делаете неправильно, так это то, что вы не запускаете цикл обработки событий Qt. то есть это неверно:

int main(int argc, char *argv[]) 
{
   MyUDP *myUDP = new MyUDP(0);
   myUDP->initSocket(port);

   while (true) {
       usleep(1000);
   }

   return 0;
}

... вместо этого у вас должно быть что-то вроде этого:

int main(int argc, char *argv[]) 
{
   QApplication app(argc, argv);

   // connect needs to occur after QCoreApplication declaration
   MyUDP *myUDP = new MyUDP(0);
   myUDP->initSocket(port);

   return app.exec();
}

... это внутри вызова app.exec(), где приложение Qt тратит большую часть своего времени (app.exec() не вернется, пока Qt не захочет выйти), и именно там Qt будет обрабатывать запросы ввода / вывода вашего UDP-сокета и потребности в сигнализации.

23
задан Frantic 30 March 2017 в 02:47
поделиться

6 ответов

Я храню файлы RES моего проекта в git (те, которые соответствуют имени dpr).

Я полагаю, что единственная причина, по которой файл RES проекта будет меняться каждый раз при сборке, - это если у вас установлен инкрементный номер сборки, что для меня означает, что вам нужно сохранить res в исходном контроле, или вам нет дела до сборки номер, так что вы должны отключить эту опцию.

У меня также есть файлы RES, которые я создаю из RC, которые меняют каждую компиляцию, поэтому у меня есть gitignore для * .res, и я затем добавляю git add -f project.res для файлов RES проекта

9
ответ дан 29 November 2019 в 02:44
поделиться

Добро пожаловать в клуб. Файл приложения .res в Delphi - это боль в нижней части спины для всех, кто использует систему контроля версий. Вы хотите использовать auto-inc-buildnumber, но он портит ваш контроль над ресурсами. Я сделал

  • , разделив значок и ресурсы версий следующим образом:

    {$ R * _icon.res}

    {$ R * ._ version.res}

  • отключить автоматическое включение номера сборки

  • добавить событие предварительной сборки в проект, которое увеличивает
    • номер сборки в файле .ini, соответствующем проекту
    • , создает файл .rc с информацией о версии из файла .ini
    • компилирует файл .res из файла .rc
  • добавить файл * _icon.res в систему контроля версий, он никогда не меняется, поэтому это безопасно
  • добавить файл .ini с информацией о версии в систему управления версиями, это текст файл, так что его легко разобрать

Инструмент, который я написал для создания файла версии .res, является свободным программным обеспечением, доступен здесь , а также из SourceForge

15
ответ дан 29 November 2019 в 02:44
поделиться

Настоятельно рекомендуется отключить «Номер сборки автоинкремента» в настройках проекта с любой системой контроля версий. Таким образом, можно безопасно добавлять файлы .res в хранилище.

Я долго искал способ автоматического обновления номера сборки в информации о версии в файле проекта .res, но лучше всего обновить дополнительный .rc с информацией о версии. Однако на практике я обычно обновляю номер сборки до текущего номера редакции Subversion только прямо перед финальной сборкой для выпуска двоичных файлов.

2
ответ дан 29 November 2019 в 02:44
поделиться

Не могли бы вы:

  • игнорировать все файлы .res
  • генерировать файлы .res , которые можно сгенерировать (скомпилировать файлы сценария ресурсов .rc )
  • добавить только файлы .res без файлов .rc , чтобы сгенерировать их: если у вас указано в .gitignore , что их следует игнорировать, тогда их можно добавить: они не будут отображаться в diff.
0
ответ дан 29 November 2019 в 02:44
поделиться

По определению, RES-файлы - это скомпилированные RC-файлы. Поэтому в идеале вы должны игнорировать все RES-файлы и фиксировать только RC-изменения. Если случилось так, что у вас нет RC-исходника для какого-то конкретного RES-файла, то добавьте в git только этот "бесхозный" RES-файл - такие файлы не должны меняться от сборки к сборке (потому что нет RC-файла, из которого их можно сгенерировать). Если по каким-то странным причинам (Delphi, ага) такие RES файлы меняются, то вы обречены.

Итог: RES-файлы являются объектами компиляции - ничем не отличаются от других двоичных файлов (obj, exe и т.д.)

1
ответ дан 29 November 2019 в 02:44
поделиться

Я не знаю GIT, но в SVN я просто "SVN ADD" только те несколько файлов, которые имеют значение, а не автоматически сгенерированные. Поскольку неверсированные файлы исключаются из дифов, это тоже решается.

0
ответ дан 29 November 2019 в 02:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: