Сохранение и загрузка данных

Для кого эта страница: сегменты разработчиков и их задачи
Материал адресован разработчикам на Delphi, которые столкнулись с дилеммой выбора механизма персистентности. В зависимости от роли и опыта, приоритеты различаются.
- Начинающие разработчики (стаж до 1 года): ищут простейший способ «просто записать настройки и прочитать их». Для них важна низкая кривая входа, минимум сторонних библиотек и наглядность результата.
- Инженеры прикладных решений (L2/L3): работают над настольными корпоративными приложениями. Их критерии — скорость работы с десятками тысяч записей, удобство миграции схемы данных и поддержка коллективной работы (многопользовательский доступ к файлу настроек исключен).
- Архитекторы и техлиды: проектируют фреймворки для команд. Они оценивают расширяемость, тестируемость, возможность кроссплатформенного переноса (FireMonkey) и интеграцию с системами контроля версий.
Настройки приложений: INI-файлы vs Реестр Windows vs JSON
Для кого подходят INI-файлы (TIniFile): это выбор разработчиков, создающих утилиты, которые должны работать с правами обычного пользователя (без требований администратора). Критерий — ручное редактирование текстовым редактором. Не подходят для проектов с глубокой иерархией вложенности (максимум 2 уровня — секция и ключ).
Когда выбирают Реестр (TRegistry): для встраиваемых решений в ОС Windows, где другие приложения должны читать те же настройки (например, ассоциации файлов). Категорически не рекомендуется для переносимых приложений (USB-версии) и кроссплатформенных проектов — это эксклюзивный инструмент для Windows-only LOB-приложений.
JSON (TJSONObject + TJSONWriter): универсальный вариант для веб-интеграции и мобильной разработки (Android/iOS). Подходит сегменту разработчиков, которые хотят единый формат для REST-клиентов и локального кэша. Выбирают, когда нужна иерархия любой глубины без ограничения по секциям. Для новичков сложнее INI, для архитекторов — обязательный минимум.
Работа с типовыми данными: TClientDataSet vs TDataSet + XML
Для кого TClientDataSet + .cds / .xml: для разработчиков приложений, работающих с табличными данными (справочники, прайсы) с количеством записей до 100 000. Это лучший выбор для прототипирования и мелкосерийных проектов. Критерий отбора — мгновенная загрузка из ресурса exe, поддержка фильтрации без SQL, быстрая сериализация без написания обвязки.
Кому не подходит: архитекторы, создающие highload-системы с многопоточным доступом (TClientDataSet не потокобезопасен) и проекты, где данные должны быть в едином SQL-формате (подойдет только TDataSet + работа с БД).
Потоковые сохранения: TMemoryStream и TFileStream
Целевой сегмент: разработчики, пишущие движки обработки графики, мультимедиа или любых бинарных форматов (собственные протоколы, загрузка DLL, работа с образами дисков). Не подходят для: бизнес-приложений, где важна читаемость данных человеком. Критерий выбора — скорость доступа и работа с буферами произвольного размера. Новичкам рекомендуется учить на TMemoryStream — это база для всех остальных потоков.
Реляционные БД: FireDAC, SQLite, InterBase
Для кого SQLite (через FireDAC): для разработчиков десктопных приложений с автономным хранением. Идеальный компромисс между функциональностью SQL и отсутствием администрирования. Выбирается, когда требуется сложная выборка (JOIN, WHERE, GROUP BY) без установки сервера. Кому не подходит: командам, которым нужен доступ к данным из офисных пакетов (Excel, Access) — тут лучше старый добрый dBase (Paradox наследие) или CSV-экспорт.
Клиент-серверные СУБД (InterBase/Firebird/MySQL через FireDAC): сегмент разработчиков, создающих системы с разделением доступа (3-звенные или 2-звенные с терминальным доступом). Главные критерии — транзакционная целостность и управление конкурентным доступом. Для одиночного калькулятора это избыточно.
Итоговые критерии выбора по аудитории
- Одиночный инструмент на Win10/Win11 без сети → TIniFile или TRegistry — для ветеранов, которые не хотят возиться с библиотеками.
- Прототип с таблицами → TClientDataSet + CDS — для студентов и фрилансеров (быстрее писать, чем на SQL).
- Корпоративный справочник с поиском → FireDAC + SQLite — для инженеров L2/L3.
- Сериализация объектов (передача по TCP/HTTP) → JSON или собственный бинарник через TStream — выбор архитектора.
- Мобильный клиент Delphi + FireMonkey → TFileStream + JSON — для кросс-платформенных команд.
Каждый инструмент был рассмотрен не как «вообще», а через призму аудитории: кому это выгодно, какие у них болевые точки, и какой путь к решению они предпочтут.
Добавлено: 27.04.2026
