|
|
|
Как перейти от INI файлов к Базе Данных?18.06.2022, 23:43. Показов 2676. Ответов 34
Метки нет (Все метки)
В очередном проекте решил хранить накапливаемые программой данные в БД, чтоб не переживать за размер и скорость работы.
Раньше применял INI файлы, было удобно: читаешь ReadString('indexNNN', 'FieldXXX', '') - если прочиталась пустая строка - то ничего не записывалось раньше, ну и записывать можно было в каждую секцию любое число любых полей с любыми данными. Попробовал БД Microsoft Access - там одни ошибки валятся, при чтении отсутствующего поля, или при записи в отсутствующее поле. Как проверять наличие поля - непонятно, и если поле создал программно - оно для всех строк таблицы создаётся ? Существуют ли какие-то БД, с которыми так-же удобно работать как с INI файлами ? и чтоб в каждой строчке таблицы можно было лепить разное число произвольных полей
0
|
|
| 18.06.2022, 23:43 | |
|
Ответы с готовыми решениями:
34
Как в INI файле перейти к нужному разделу? Как создать таблицу для файлов в базе данных? Чтение данных теста из INI Файлов |
|
пофигист широкого профиля
4770 / 3206 / 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 / 2271 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
|
|||||||||||
| 19.06.2022, 10:17 | |||||||||||
|
То что вы хотите легко реализуется и в любой реляционной БД, том же Акцесе, надо просто таблицу правильной структуры сделать. Содержимое любого Ini-файла помещается всего в одну таблицу с полями. Section,Ident,Value. Любой метод чтения данных из TIniFile мог бы и натолкнуть на такую мысль. Для Акцеса структура будет такая:
Доступ к такой таблице легко реализуется примерно так:
1
|
|||||||||||
|
6806 / 2305 / 349
Регистрация: 10.12.2013
Сообщений: 7,932
|
|
| 19.06.2022, 12:04 | |
|
---
1
|
|
| 19.06.2022, 12:20 | |
|
Хех. Я вчера на хакерньюз ткнулся видимо одним из первых по ссылке (комментариев еще не было) https://news.ycombinator.com/item?id=31785170 , бегло пробежался по тексту и подумал вот ребята молодцы. Сейчас смотрю на появившиеся там комментарии, о том что проект закрыт. кто-то хорошо пошутил.
volodin661, спасибо за замечание. Я бы так и пребывал в уверенности, что пора переходить на новый релиз -) Добавлено через 9 минут странно. куда-то пропало текст от volodin661, на который я отвечал
0
|
|
|
6806 / 2305 / 349
Регистрация: 10.12.2013
Сообщений: 7,932
|
||||||||
| 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
|
|
|
Модератор
4149 / 2360 / 812
Регистрация: 15.11.2015
Сообщений: 9,462
|
|
| 19.06.2022, 21:04 | |
|
DjSens, там что, миллион настроек, чтобы так сильно экономить память?
0
|
|
|
3763 / 2271 / 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 / 2271 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
|
|
| 19.06.2022, 21:58 | |
|
Можно и больше 255, но тогда используйте уже новую версию базы Акцес, там текстовые поля уже существенно больше до 64к, а если у вас XE версия Delphi, я бы вместо Акцеса использовал SQLite
0
|
|
|
пофигист широкого профиля
4770 / 3206 / 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 файлов весь файл загружается в оп или каким образом это происходит? Хранение файлов в базе данных Сохранение больших файлов в базе данных Сохранение бинарных файлов в базе данных Записи в базе данных, как встать на последнюю запись в базе после открытия? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: показать затраченные материалы за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В качестве. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|