Делает ли Delphi иногда файлы текстовой формы (DFM) в двоичный формат?

Наша команда разработчиков Delphi 7 хранит файлы форм (dfm) в текстовом режиме и использует систему контроля версий (Subversion) для отслеживания изменений.

Иногда мы замечали, что файл формы возвращался в двоичном формате между ревизиями, что вызывало недовольство таких инструментов diff, как TortoiseMerge.

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

Сталкивались ли вы с тем же? Это известная проблема?

8 ответов

Решение

Я видел, как это происходило в Delphi 7, когда форма, унаследованная от другой формы из другого проекта, была открыта в Delphi сама по себе без проекта, которому она принадлежит.

Это происходит в Delphi 7, но исправлено в более поздних версиях. Обычно вы обращаетесь к формам в IDE, открывая файл.pas, а затем переключаясь в представление формы. Щелкните правой кнопкой мыши по форме, и она покажет, что она помечена галочкой "Текст DFM", если вы сделали это раньше.

Вы столкнетесь с проблемой, которую описали при переключении текстового DFM в двоичный DFM, когда в Delphi 7 IDE вы откроете файл.dfm напрямую. например. Файл-> Открыть->Somefile.dfm . Щелкните правой кнопкой мыши на dfm и выберите "Просмотреть как форму". Теперь щелкните правой кнопкой мыши форму, и вы увидите, что "Текст DFM" снят.

Мы получили проблему, когда открыли DFM, который был результатом поиска grep. Это также привело нас в замешательство и могло привести к повреждению dfm в cvs, так как оно было отмечено как текст.

Это иногда случается, когда IDE запутывается.

Обычно он начинается после того, как вы получили нарушение прав доступа в Delphi 7 IDE.

Иногда один или более из ваших буферов редактора Delphi внутри IDE становятся доступными только для чтения (в то время как файлы на диске все еще считываются / записываются).

Поведение происходит гораздо меньше, чем в Delphi 5 или 6, но иногда это происходит в Delphi 7.

Лучшее, что вы можете сделать, это перезапустить Delphi 7 IDE, как только вы получите нарушение прав доступа.

Нет, я никогда раньше не видел (и не слышал), чтобы это происходило само по себе. У нас есть сотни.DFM в нескольких дюжинах приложений, и это произошло только тогда, когда какой-то идиот случайно щелкнул правой кнопкой мыши по форме и снял флажок "Текст DFM" в контекстном меню.

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

Возможно, вас заинтересует использование Beyond Compare вместо встроенного в TortoiseSVN инструмента слияния. Beyond Compare написан на Delphi и знает, как читать двоичные DFM. Это означает, что тогда становится менее важной (или даже не связанной) проблема, хранятся ли ваши DFM в Subversion в двоичном или текстовом формате. В Beyond Compare V3 также выполняется трехстороннее объединение, которое позволяет действительно легко объединять несколько коммитов и т. Д. Даже игнорируя возможность различать двоичные DFM, это все же намного лучший просмотрщик различий, чем встроенные инструменты TortoiseSVN. Я очень рекомендую это, и это очень недорого (я не имею никакого отношения к Scooter Software, кроме как очень счастливый клиент).

Scooter Software

Мы, конечно, столкнулись с этим. Мы используем исключительно D7.

Никогда не доходил до сути, так как это происходит только полдюжины раз в год или около того, и хотя это неприятно, его довольно легко исправить.

Мне было интересно увидеть ответ Ларса, и я обязательно посмотрю, возможно ли это в следующий раз, когда это произойдет.

Время от времени у нас также возникает эта проблема, и, похоже, она связана с просмотром источника DFM (Alt-F12) и последующей операцией Visual Source Safe (например, регистрация).

Другие вопросы по тегам