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

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

1 ответ

Решение

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

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

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

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

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

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

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

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

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

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

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