Долговечность использования текстового формата DFM в Delphi для моего собственного магазина и получения
Со временем я свернул свои собственные форматы для сохранения и загрузки свойств объекта, но при необходимости пересмотреть это мне интересно использовать собственный текстовый формат DFM в Delphi. Я знаю, что это действительно "внутренний" формат, но читатель для него сейчас выглядит довольно четко определенным и справляется со всеми типами свойств. Есть ли у кого-нибудь комментарии о возможных подводных камнях?
1 ответ
Я бы не сказал, что DFM - это "внутренний формат". Конечно, Delphi использует его для форм и модулей данных, но классы TReader и TWriter, которые выполняют потоковую передачу, общедоступны и даже задокументированы. Таким образом, они явно предназначены и для конечных пользователей.
Теперь возможная проблема - когда вы сохраняете поток, а затем один из классов в потоке изменяется, так что поток больше не совместим. Возможно, вы видели это в Delphi, если пытались открыть форму, сохраненную в D2007+ в D7 (отсутствует свойство). Но даже если это произойдет, это не слишком сложно решить. Вы получите исключение, в котором будет указано точное свойство, вызывающее проблему. Вы также должны зарегистрировать все классы, с которыми вы хотите передавать RegisterClass
,
DFM может храниться в двоичном или текстовом формате. Даже если вы храните его в двоичном виде, вы можете преобразовать его в текст (используя ObjectBinaryToText
), однажды в текстовом формате, это легко исправить.
Таким образом, проблемы, которые могут возникнуть, возникают из-за несовместимых изменений в структуре, но они не имеют никакого отношения к самому механизму DFM, а также могут возникнуть при использовании любого другого механизма потоковой передачи.
Что касается долговечности, вы все равно можете открыть DFM, сохраненные с помощью D1, в последней версии Delphi. Поэтому, пока вы помните об обратной совместимости, вам нечего бояться.
В заключение, выбор любого конкретного формата, DFM, XML, JSON, вашего собственного... на самом деле не влияет на долговечность. Все они требуют одинакового уровня совместимости.
Причины выбора формата больше связаны с решениями относительно:
- совместимость с другими приложениями / сервисами
- размер / скорость / удобочитаемость
Но вы не упомянули ни одного из тех, кто в вопросе.
Поэтому я предлагаю использовать DFM по своему усмотрению, так как это будет означать меньше кода для поддержки.