Постоянство объекта Delphi, что является лучшим способом - PullRequest
8 голосов
/ 28 декабря 2008

Я разработал приложение для рисования некоторых фигур (в основном, линий), теперь мне нужно иметь возможность сохранять эскиз в файл, я знаю, что в Delphi встроены процедуры для сохранения объектов, но я никогда не использовал его.

Может кто-нибудь сказать мне, можно ли использовать постоянство объекта, если мне нужно сохранить объект, который также имеет ссылки на другие объекты (которые будут сохранены), у меня есть объект TLine, который может быть связан с другим объектом TLine и т. Д.

Лучше использовать эту функцию или написать собственную процедуру для сохранения / чтения объекта в / из файла.

ТНХ

Ответы [ 6 ]

4 голосов
/ 28 декабря 2008

Встроенное постоянство объектов в первую очередь предназначено для использования при потоковой передаче компонентов в dfm. Работа, которую вам необходимо будет выполнить для сохранения вашего эскиза, не принесет особой пользы от этого механизма.

Я думаю, что вам лучше придумать собственную схему.

3 голосов
/ 29 декабря 2008

Один метод, который я использовал в прошлом, заключается в сохранении свойств моего объекта в файле XML с записью пользовательской подпрограммы «save», которая добавляет переданный IXMLNode, и нового конструктора, который читает из переданного IXMLNode. Я храню компонент как узел, а свойства - как атрибуты (если свойство не является другим объектом, тогда это будет дочерний узел).

Я полагаю, что в проекте Delphi Jedi есть некоторые подпрограммы, которые будут обрабатывать потоковые компоненты для вас, но я не использовал их напрямую, так как большая часть моей потоковой передачи XML была сделана вручную, поскольку мои объекты были чрезвычайно просты и их можно было визуализировать только несколько свойств.

2 голосов
/ 21 марта 2009

JSON - это новый и очень компактный способ хранения объектов. Для Delphi доступны две библиотеки: SuperObject и lkJSON .

2 голосов
/ 03 января 2009

Вы также можете использовать знаменитый спящий ноу-хау из Java.

порт Delphi вы можете найти здесь: dHibernate

2 голосов
/ 29 декабря 2008

Я использую инфраструктуру сохранения объектов TI (tiopf.com). Я написал обзор на http://tiopf.sourceforge.net/Doc/overview/index.shtml.

Это позволит вам сохранять объекты и списки в XML, CSV, базах данных и т. Д. Он автоматически обрабатывает дочерние объекты.

Если вам интересно, используйте версию svn, а не загрузку sourceforge, поскольку она имеет больше возможностей (включая частичную поддержку D 2009).

1 голос
/ 16 июня 2013

С NativeXML из http://www.simdesign.nl/xml.html я выполнил чтение / запись объектов в памяти delphi из / в код XML. Очень красиво, очень легко, с демонстрацией, включенной здесь: http://www.simdesign.nl/forum/download/file.php?id=236

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...