Как сохранить формы и фреймы в Delphi 6 - 2007?
Недавно мы преобразовали наш долгосрочный проект Delphi в Open Source. Несколько человек уже внесли исправления, и это здорово, но, к сожалению, формы и фреймы при сохранении в Delphi 2006 (и более поздних версиях) содержат новые свойства в формате.dfm, которые не обрабатываются более старыми версиями. Формы обрабатываются в IDE довольно изящно ("ignore Propery?"), Но кадры загружаются во время выполнения и приводят к ошибкам. На мой взгляд, не вариант.
Теперь я удалил эти свойства из файлов.dmf вручную, но мне действительно интересно, есть ли более элегантное решение. Там нет никакого способа сохранить в обратно совместимом формате из новых IDE, не так ли? Существуют ли инструменты для удаления неподдерживаемых свойств из файлов.dfm? Любое другое элегантное решение, которое мне не хватает?
Обычно, с коммерческим проектом, я просто обновляю проект до последней применимой версии... но так как это открытый исходный код, я действительно не хочу терять внимание на тех разработчиках, которые все еще работают над Delphi 7. Это включает и меня, на самом деле.
3 ответа
В проекте JEDI JVCL используется небольшая утилита dc.exe (очиститель delphi) и список свойств в DFM, которых нет в более старых версиях delphi. В моем файле содержится следующий текст:
*.PopupMode
*.PopupParent
*.ExplicitLeft
*.ExplicitTop
*.ExplicitWidth
*.ExplicitHeight
*.BevelKind
*.BufferDocument
*.DoubleBuffered
*.ParentDoubleBuffered
*.DisableHyperlinks
*.AlwaysEnquoteFloats
*.PixelsPerInch
Я запускаю эту утилиту dc.exe из командного файла, который очищает мои dfms перед тем, как вносить изменения в subversion. Синтаксис в моем командном файле для этого:
dc.exe -s -fd10.txt *.dfm -i
Вы можете взять мои вещи по адресу:
http://sites.google.com/site/warrenpostma/files
Ну ради полноты
Откройте dfms в самой старой из поддерживаемых Delphi, разрешите ей удалить все неизвестные свойства, измените свойство и сохраните.
Для ваших целей решение Уоррена лучше, но это может быть обходной путь. Я делал это какое-то время, когда у нас был двойной D7-D2006ing.