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





Встроенное сохранение объекта в первую очередь предназначено для использования в потоковой передаче компонентов в dfm, работа, которую вам нужно будет проделать для сохранения вашего эскиза, не получит особой выгоды от этого механизма.
Думаю, вам лучше придумать нестандартную схему.
Один из методов, который я использовал в прошлом, - это сохранить свойства объекта в XML-файле, написав специальную процедуру «сохранения», которая добавляет к переданному IXMLNode, и новый конструктор, который читает из переданного IXMLNode. Я храню компонент как узел, а свойства как атрибуты (если свойство не является другим объектом, тогда это будет дочерний узел).
Я считаю, что в проекте Delphi Jedi есть несколько подпрограмм, которые будут обрабатывать потоковую передачу компонентов за вас, но я не использовал их напрямую, поскольку большая часть моей потоковой передачи XML выполнялась вручную, поскольку мои объекты были чрезвычайно простыми и могли отображаться только с помощью горстка свойств.
Я использую структуру сохранения объектов TI (tiopf.com). Я написал обзор на http://tiopf.sourceforge.net/Doc/overview/index.shtml.
Это позволит вам сохранять объекты и списки в xml, csv, базах данных и т. д. Он автоматически обрабатывает дочерние объекты.
Если вам интересно, используйте версию svn, а не загрузку sourceforge, поскольку она имеет больше функций (включая частичную поддержку D 2009).
Вы также можете использовать знаменитый спящий режим, известный из java.
порт delphi вы можете найти здесь: dHibernate
JSON - новый и очень компактный способ хранения объектов. Для Delphi доступны две библиотеки: СуперОбъект и lkJSON.
С помощью NativeXML из http://www.simdesign.nl/xml.html я выполнил чтение / запись объектов delphi в памяти из / в код XML. Очень красиво, очень просто, здесь есть демо: http://www.simdesign.nl/forum/download/file.php?id=236
Delphi 2010 добавил несколько модулей для JSON и Datasnap, но вы можете использовать их без привязки данных.