| « Поставить закладку » « Сделать стартовой » | |||
|
|||
| Статьи:: Delphi :: Разные статьи :: Сохранение и загрузка данных в объекты на примере коллекций.
Сохранение и загрузка данных в объекты на примере коллекций.
Сохранение и загрузка данных в объекты на примере коллекций.Если в Вашей программе используются классы для описания
объектов некоторой предметной области, то данные, их инициализирующие, можно
хранить и в базе данных. Но можно выбрать гораздо более продуктивный подход,
который доступен в Delphi/C++ Builder. Среда разработки Delphi/C++ Builder
хранит ресурсы всех форм в двоичных или текстовых файлах и эта возможность
доступна и для разрабатываемых с ее помощью программ. В данном случае, для
оценки удобств такого подхода лучше всего рассмотреть конкретный пример. Необходимо реализовать хранение информации о некоей службе рассылки и ее подписчиках. Будем хранить данные о почтовом сервере и список подписчиков. Каждая запись о подписчике хранит его личные данные и адрес, а также список тем(или каталогов), на которые он подписан. Как большие поклонники Гради Буча (Grady Booch), а также будучи заинтересованы в удобной организации кода, мы организуем информацию о подписчиках в виде объектов. В Delphi для данной задачи идеально подходит класс TCollection, реализующий всю необходимую функциональность для работы со списками типизированных объектов. Для этого мы наследуемся от TCollection, называя новый класс TMailList - список рассылки, а также создаем наследника от TCollectionItem - TMailClient - адресат рассылки. Последний будет содержать все необходимые данные о подписчике, а также реализовывать необходимые функции для работы с ним. Саму коллекцию с подписчиками нам нужно будет поместить в
некий базовый класс, который мы и будем сохранять и загружать. На роль
такового подходит класс TMailer - почтовый клиент.
Теперь поместим класс TMailList в класс TMailer. В него
можно будет потом включить данные о параметрах доступа к почтовому серверу
для отправки почты. Он мог бы и отправлять почту, но в данном примере это не
использовано, дабы не перегружать код. То есть в нашем примере он выполняет только роль носителя
данных о подписчиках и их подписке. Класс TComponent, от которого он
наследуется можно сохранить в файл, в то время как TCollection
самостоятельно не сохранится. Только если она агрегирована в TComponent.
Именно это у нас и реализовано.
Функция CreateFileList создает по каким-либо правилам
список файлов на основе переданного ей списка каталогов, обходя их
рекурсивно. К примеру, она может быть реализована так.
В итоге мы располагаем классом TMailer, содержащим всю
необходимую нам информацию. Теперь перейдем к созданию объекта, их
сохранению и загрузке.
После загрузки данных мы можем работать с данными в нашей коллекции подписчиков. Добавлять и удалять их ( Mailer.MailList.Add; Mailer.MailList.Delete(Index); ). При завершении работы программы необходимо сохранить уже новые данные в тот же файл.
Хранение данных в файле позволяет оказаться от
использования БД, если объем данных не слишком велик и нет необходимости в
совместном доступе к данным. Далее приведен код функций для сохранения/чтения
компонента.
Рубрика: Разные статьи
XML документация в C#.
Сегодня речь пойдет об одной интересной и полезной возможности языка С#, которая поможет нам в документировании кода. Она называется «XML документация» или «Документирующие комментарии XML». Это такие специальные теги XML, которые содержаться в комментариях и описывают свойства или методы в конкретном файле. Так вот, есть по крайней мере три веских причины, почему всегда следует заполнять XML комментарии.
Подробнее... |
Рубрика: XML в .NET
| Добавлено: 08.10.2008
Курсоры в MySQL 5.
Начиная с 5-ой версии, MySQL имеет возможность создавать курсоры. Курсор — это виртуальная таблица, предоставляющая альтернативный способ просмотра табличных данных. Курсор не содержит данных, а лишь ссылается на них из других таблиц. Из этого вытекает ряд особенностей, но об этом ниже.
Подробнее... |
Рубрика: MySQL
| Добавлено: 08.10.2008
Microsoft опубликовала подробности о сессиях Windows 7.
Подробнее... |
Рубрика: Мероприятия
| Добавлено: 08.10.2008
Остальные статьи:
Microsoft делится подробностями о том, что будет после Windows
Тестируем новый javascript от нового браузера Google
MySQL Query Cache
Использование провайдеров компиляции в Asp.net
Чего мы ждем от C# 4.0
Delphi 2009 и C++Builder 2009
Джоэл Спольски и Джеф Этвуд запустили новый вебсайт для программистов - StackOve...
Поиск кода Google /* что нового? */
10 jQuery скриптов для улучшения интерфейса
Генераторы отчетов FastReport 4 и QuickReport 5: версии 2008 года
День программиста — набор стерeотипов
Индусские програмисты
Вышел Django 1.0
Портативная версия Google Chrome Portable
Исходные коды .Net Frameword 3.5 SP1 для отладки в Visual Studio
Пишем правильный online WYSIWYG-редактор |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|