Долговечность использования текстового формата DFM в Delphi для моего собственного магазина и получения - PullRequest
8 голосов
/ 13 ноября 2010

Со временем я свернул свои собственные форматы для сохранения и загрузки свойств объекта, но при необходимости пересмотреть это, я задаюсь вопросом об использовании собственного текстового формата DFM в Delphi.Я знаю, что это действительно «внутренний» формат, но читатель для него сейчас выглядит довольно четко определенным и справляется со всеми типами свойств.Есть ли у кого-нибудь комментарии о возможных подводных камнях?

1 Ответ

16 голосов
/ 13 ноября 2010

Я бы не сказал, что DFM - это «внутренний формат». Конечно, Delphi использует его для форм и модулей данных, но классы TReader и TWriter, которые выполняют потоковую передачу, общедоступны и даже задокументированы. Таким образом, они явно предназначены и для конечных пользователей.

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

DFM может храниться в двоичном или текстовом формате. Даже если вы сохраните его в двоичном формате, вы можете преобразовать его в текст (используя ObjectBinaryToText), после этого в текстовом формате это легко исправить.

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

Что касается долговечности, вы все равно можете открывать DFM, сохраненные с помощью D1, в последней версии Delphi. Поэтому, если вы помните об обратной совместимости, вам нечего бояться.

В заключение, выбор любого конкретного формата, DFM, XML, JSON, вашего собственного ... не влияет на долговечность. Все они требуют одинакового уровня совместимости.

Причины выбора формата больше связаны с решениями относительно:

  • совместимость с другими приложениями / службами
  • размер / скорость / удобочитаемость

Но вы не упомянули ни одного из этих вопросов.

Так что я предлагаю использовать DFM по своему усмотрению, так как это будет означать меньше кода для обслуживания.

...