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 файл напрямую. например. Файл->Открыть->Некий-Файл.ДФМ. . Щелкните правой кнопкой мыши dfm и выберите "Вид как форма". Теперь щелкните правой кнопкой мыши форму, вы увидите, что "текст DFM" снят.
мы получили проблему, когда мы открыли DFM, который был результатом поиска grep. Это также озадачило нас и вызвало бы повреждение dfm в cvs, поскольку он был проверен как текст.
это иногда происходит, когда IDE запутывается.
обычно это начинается после того, как вы получили нарушение доступа внутри IDE Delphi 7.
иногда также один или mor ваших буферов редактора Delphi внутри IDE становятся только для чтения (в то время как файлы на диске все еще читаются/записываются).
поведение происходит намного меньше, чем в Delphi 5 или 6, но иногда это происходит в Delphi 7.
лучшее, что вы можете сделать, это перезапустить Delphi 7 IDE как можно скорее как вы получите нарушение доступа.
Если кто-то открыл проект с другой версией Delphi (или изменил настройки по умолчанию), он может сохранить формы в другом формате.
Нет, я никогда не видел (или не слышал), что это происходит самостоятельно раньше. У нас их сотни .DFMs в нескольких десятках приложений, и это произошло только тогда, когда какой-то идиот случайно щелкните правой кнопкой мыши на форме и снимите флажок "текст DFM" в контекстном меню.
мы определенно сталкивались с этим. Мы используем D7 исключительно.
никогда не доходило до сути, так как это происходит только полдюжины раз в год или около того, и хотя это неприятность, это довольно легко исправить.
Мне было интересно увидеть ответ Ларса и, конечно, посмотрю, возможно ли это в следующий раз, когда это произойдет.
вам может быть интересно исследовать использование Beyond Compare вместо встроенного инструмента слияния TortoiseSVN. Beyond Compare написан на Delphi и изначально знает, как читать двоичные DFMs. Это означает, что тогда становится меньше проблем (или даже нет проблем), хранятся ли ваши DFMs в Subversion в двоичном или текстовом формате. Дальше сравнивать В3 и делает 3-полосная слияние, которое делает его очень легко объединить несколько коммитов и т. д. Даже игнорируя способность различать двоичные DFMs, это все еще гораздо лучше diff viewer, чем встроенные инструменты TortoiseSVN. Я могу очень рекомендовать его, и это очень недорого (у меня нет связи с программным обеспечением Scooter, кроме как быть очень счастливым клиентом).
У нас также есть эта проблема время от времени, и это, похоже, связано с просмотром источника DFM (Alt-F12), а затем делает визуальную безопасную работу источника (например, регистрация).