|
|
|
Как перейти от INI файлов к Базе Данных?18.06.2022, 23:43. Показов 2587. Ответов 34
Метки нет (Все метки)
В очередном проекте решил хранить накапливаемые программой данные в БД, чтоб не переживать за размер и скорость работы.
Раньше применял INI файлы, было удобно: читаешь ReadString('indexNNN', 'FieldXXX', '') - если прочиталась пустая строка - то ничего не записывалось раньше, ну и записывать можно было в каждую секцию любое число любых полей с любыми данными. Попробовал БД Microsoft Access - там одни ошибки валятся, при чтении отсутствующего поля, или при записи в отсутствующее поле. Как проверять наличие поля - непонятно, и если поле создал программно - оно для всех строк таблицы создаётся ? Существуют ли какие-то БД, с которыми так-же удобно работать как с INI файлами ? и чтоб в каждой строчке таблицы можно было лепить разное число произвольных полей
0
|
|
| 18.06.2022, 23:43 | |
|
Ответы с готовыми решениями:
34
Как в INI файле перейти к нужному разделу? Как создать таблицу для файлов в базе данных? Чтение данных теста из INI Файлов |
|
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
|
|
| 19.06.2022, 00:19 | |
|
0
|
|
|
Модератор
|
|||
| 19.06.2022, 04:43 | |||
господи, о чем это я, человек с Access разобраться не может)DjSens, или вот - иерархические БД! Самая известная иерархическая БД - реестр Windows. А чем работа с реестром принципиально отличается от работы с INI? Да почти ничем! Тот факт, что требуются повышенные права и можно систему положить на раз - пока оставляем в стороне.
0
|
|||
| 19.06.2022, 05:32 | |||
|
sqlite4 добавлено хранилище key-value Добавлено через 2 минуты
0
|
|||
|
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
|
|||
| 19.06.2022, 08:33 | |||
|
0
|
|||
|
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
|
|||||||||||
| 19.06.2022, 10:17 | |||||||||||
|
То что вы хотите легко реализуется и в любой реляционной БД, том же Акцесе, надо просто таблицу правильной структуры сделать. Содержимое любого Ini-файла помещается всего в одну таблицу с полями. Section,Ident,Value. Любой метод чтения данных из TIniFile мог бы и натолкнуть на такую мысль. Для Акцеса структура будет такая:
Доступ к такой таблице легко реализуется примерно так:
1
|
|||||||||||
|
6793 / 2290 / 348
Регистрация: 10.12.2013
Сообщений: 7,901
|
|
| 19.06.2022, 12:04 | |
|
---
1
|
|
| 19.06.2022, 12:20 | |
|
Хех. Я вчера на хакерньюз ткнулся видимо одним из первых по ссылке (комментариев еще не было) https://news.ycombinator.com/item?id=31785170 , бегло пробежался по тексту и подумал вот ребята молодцы. Сейчас смотрю на появившиеся там комментарии, о том что проект закрыт. кто-то хорошо пошутил.
volodin661, спасибо за замечание. Я бы так и пребывал в уверенности, что пора переходить на новый релиз -) Добавлено через 9 минут странно. куда-то пропало текст от volodin661, на который я отвечал
0
|
|
|
6793 / 2290 / 348
Регистрация: 10.12.2013
Сообщений: 7,901
|
||||||||
| 19.06.2022, 13:28 | ||||||||
начало разработки: 1967 актуальное состояние: активная разработка ( Caché, GT.M, MiniM, YottaDB ) В примере выше переменная ^ABC обладает свойством persistent ( т.е, сразу сохраняется в Базу Данных) из-за добавления перед именем переменной символа ^ (циркумфлекс) ; В некотором смысле эта переменная и есть База Данных; Добавлено через 1 минуту у меня он тоже пропал ))
0
|
||||||||
|
|
|
| 19.06.2022, 20:59 [ТС] | |
|
Пытливый, спасибо, попробую ваш вариант когда до компа доберусь
Добавлено через 3 часа 35 минут Пытливый, посмотрел внимательнее - таким способом конечно увеличивается расход памяти на повторы названий секций в каждой строке, по сравнению с INI файлом, но расход можно минимизировать - просто применять числа от 1 до N вместо названий секций, ну и держать отдельную таблицу, в которой задано соответствие что же означает каждое число. Буду пробовать такой способ
0
|
|
|
Модератор
4146 / 2357 / 812
Регистрация: 15.11.2015
Сообщений: 9,433
|
|
| 19.06.2022, 21:04 | |
|
DjSens, там что, миллион настроек, чтобы так сильно экономить память?
0
|
|
|
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
|
|
| 19.06.2022, 21:46 | |
|
Ну можно завести справочную таблицу для названий секций, но это неоправданно усложнит код. Можете просто задать в базе длину полей для Sections и Ident в 50 символов, а для Value уже можно по максимуму 255 оставить. Даже если у вас будет на одну секцию 1000 параметров, то расход памяти будет крайне мал и смысла в такой экономии нет.
Добавлено через 2 минуты Есть еще один момент. В текущей реализации вы можете в одной базе держать несколько таких ini-таблиц и легко переключаться между ними, а вот если сделать справочник, то тут возможны неожиданные сюрпризы.
0
|
|
|
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
|
||
| 19.06.2022, 21:48 | ||
|
0
|
||
|
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
|
|
| 19.06.2022, 21:58 | |
|
Можно и больше 255, но тогда используйте уже новую версию базы Акцес, там текстовые поля уже существенно больше до 64к, а если у вас XE версия Delphi, я бы вместо Акцеса использовал SQLite
0
|
|
|
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
|
|||
| 20.06.2022, 01:37 | |||
|
Например о размере. Размер хранимых данных в общем случае никак не оптимизируется местом и способом их хранения. Скорость работы... Ну тут вряд ли вам помогут какие-то готовые инструменты. В конце концов скорость определяется поиском данных в некоем/некоих файле/ах. А это самая времязатратная операция. Добавлено через 10 минут P.S. Ну и да. INI-файл это тоже база данных. С широкой точки зрения. Стоит ли менять шило на мыло?
0
|
|||
|
|
|
| 20.06.2022, 19:34 [ТС] | |
|
northener, в INI файле я хранил зарегенных юзеров (логины, емэйлы) и их сообщения, и ещё много всякого,
потом столкнулся с быстродействием - перешёл на TMemIniFile - помогло. Но эти MemIniFile хранятся в ОЗУ, а если они вырастут до пары гигов ? у меня на арендованном виндовс-сервере памяти маловато (1Гб RAM, 30Гб HDD, 2.2ГГц). Поэтому небольшие и требующие быстродействия таблицы хочу оставить в MemIni, а всякие текстовые сообщения и базу юзеров - загнать в БД
0
|
|
| 20.06.2022, 19:34 | |
|
Помогаю со студенческими работами здесь
20
Delphi 7,ini файлы,при чтении с ini файлов весь файл загружается в оп или каким образом это происходит? Хранение файлов в базе данных Сохранение больших файлов в базе данных Сохранение бинарных файлов в базе данных Записи в базе данных, как встать на последнюю запись в базе после открытия? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|