Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
 Аватар для noname_club
112 / 103 / 12
Регистрация: 01.05.2013
Сообщений: 603

Хранение малого количества данных без БД

20.07.2013, 12:41. Показов 2718. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
интересует вопрос хранения малого количества данных (менее 2 мб) в 1 файле.

знаю что есть такие механизмы как JSON сериализация, XML сериализация, в принципе меня они устраивают,
однако может есть какой-нибудь способ сериализациии данных кроме предложенных, может он будет более функциональным, быстрым, эффективным?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.07.2013, 12:41
Ответы с готовыми решениями:

Хранение большого количества бинарных данных
Возник вопрос связаный с хранением данных: Мне нужно сохранять массивы бинарных данных (каждый массив - 4096 элементов по 1 байту) Если...

Хранение большого количества однотипных данных
Добрый день. Подскажите, каким образом хранить данные для программы? Например, у меня имеется 1000 - 300 000 строковых данных, которые...

Хранение приложением большого числа картинок малого размера на разных ОС
Добрый день. Столкнулся с такой проблемой - разрабатывается кросплатформенное приложение (Windows, Android, возможно,IOS). Приложение...

12
 Аватар для noname_club
112 / 103 / 12
Регистрация: 01.05.2013
Сообщений: 603
20.07.2013, 18:46  [ТС]
нашел пока бинарный сериализер типов array и record структур

https://code.google.com/p/kblib/

исходник

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
unit Unit1;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
  uKBDynamic, Vcl.StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
type
  struct = record
    num: integer;
    str: string;
  end;
  karr = array of struct;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
  k: karr;
  i: integer;
  s: TFileStream;
  memotext: string;
begin
  SetLength(k,25);
  Randomize;
  for i := Low(k) to High(k) do begin
    k[i].num:=random(100);
    k[i].str:='hello world' + IntToStr(i);
    memotext := memotext + Format('%d - %s '#13#10,[ k[i].num, k[i].str ]);
  end;
 
  Memo1.text:= memotext;
 
  s:=nil;
  try
    s:= TFileStream.Create('hello.bin',fmOpenReadWrite or fmCreate);
    TKBDynamic.WriteTo(s, k, TypeInfo(karr)); // << запись данных
  finally
    s.free;
  end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var
  k: karr;
  i: integer;
  s: TFileStream;
  memotext: string;
begin
  s:=nil;
  try
    s:= TFileStream.Create('hello.bin', fmOpenReadWrite);
    TKBDynamic.ReadFrom(s,k,TypeInfo(karr));  // << чтение данных
    for i := Low(k) to High(k) do begin
      k[i].num:=random(100);
      k[i].str:='hello world' + IntToStr(i);
      memotext := memotext + Format('%d - %s '#13#10,[ k[i].num, k[i].str ]);
    end;
    Memo1.text:= memotext;
  finally
    s.Free;
  end;
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
  Memo1.Clear;
end;
 
end.
Вложения
Тип файла: zip test Serialiser Delphi XE.zip (87.7 Кб, 3 просмотров)
0
332 / 85 / 16
Регистрация: 10.01.2011
Сообщений: 516
Записей в блоге: 1
20.07.2013, 23:29
ини файлы попробуйте
0
3178 / 1937 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
21.07.2013, 05:03
JSON сериализация, XML сериализация
От лукавого.

Быстрый индексный доступ обеспечит любая подходящая (single file) Key-Value DB (NoSQL).

Если перезапись нечастая, то CDB может быть идеальным вариантом. Обратите внимание на TinyCDB - 2+ Kb
"накладных расходов", произвольная длина ключа и данных, мгновенное чтение (memory mapped file).

cdb (software)
TinyCDB - a Constant DataBase

+ именно для Delphi есть такая "игрушка" как RealIsam (Отдельная DLL, но меньше 100 Kb).
1
 Аватар для noname_club
112 / 103 / 12
Регистрация: 01.05.2013
Сообщений: 603
21.07.2013, 11:50  [ТС]
Цитата Сообщение от gazlan Посмотреть сообщение
От лукавого.

Быстрый индексный доступ обеспечит любая подходящая (single file) Key-Value DB (NoSQL).
как бы в данном случае не требуется "Быстрый индексный доступ" так как, вся "БД" будет прочитана из файла в память и представлена в "Delphi понятном виде"

Единственно требование это: относительно простое развертывание и свертывание структуры обратно в файл

--
по ссылкам у вас все заточено под С++, и требует дальнейшего допиливания напильником для Delphi, а следовательно не может "легко и просто" использовано в данном случае
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
21.07.2013, 12:17
Если структура данных такая как представлена во втором посте, то вполне подойдет класс TStringList.
И чтение из файла с записью в файл просты до безобразия, сортировка, если нужна, пожалуйста, доступ к данным по
индексу и по строке.
0
 Аватар для noname_club
112 / 103 / 12
Регистрация: 01.05.2013
Сообщений: 603
21.07.2013, 12:25  [ТС]
Если структура данных такая как представлена во втором посте,
это пример, полей будет больше - около 10

то вполне подойдет класс TStringList
не подойдет, ибо, если надо будет хранить:

- двумерный массив
- массив текстов с переносами строк
- массив структур

то столкнемся опять с проблемой кодирования/декодирования данных при хранении.

В конце концов есть JSON
0
Заблокирован
21.07.2013, 17:00
Менее 1 мегабайта - это работа как раз для SQLITE! Причём в зависимости от скорости лучше иметь memtable и при выходе только записывать/грузить при старте.
1
3178 / 1937 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
21.07.2013, 18:56
Цитата Сообщение от noname_club Посмотреть сообщение
столкнемся опять с проблемой кодирования/декодирования данных при хранении
(Де)сериализацию вам неизбежно придется делать для хранения сложных структур. Но, раз индексный доступ не требуется, посмотрите в сторону Structured Storage

~600 Kb SQLite DLL для хранения такого же размера данных - это "из пушки по воробьям".
0
Заблокирован
21.07.2013, 19:09
gazlan, плюс сжатие dll, хотя ты странные вещи говоришь, ты что, не видел сколько весит libxml? А из системных можно хоть custom hive реестра использовать для сериализации, около нуля кода, но ОЧЕНЬ неудобно, о чём и речь.
0
3178 / 1937 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
21.07.2013, 19:58
Цитата Сообщение от Dr_Quake Посмотреть сообщение
не видел сколько весит libxml?
Признаться, не видел. XML не использую.

Попутно, вводная статья по STG: СОМ-хранилища: подпольная файловая система
1
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
21.07.2013, 20:32
Цитата Сообщение от noname_club Посмотреть сообщение
есть какой-нибудь способ сериализациии данных кроме предложенных, может он будет более функциональным, быстрым, эффективным?
Из того что всегда прямо под рукой и не требует ничего стороннего:

TADODataSet
TClientDataSet


Structured Storage - на нем сидит верхом весь Microsoft Office
0
 Аватар для noname_club
112 / 103 / 12
Регистрация: 01.05.2013
Сообщений: 603
21.07.2013, 22:11  [ТС]
в дополнение к Structured Storage

Компонент TRyStorage

http://www.delphikingdom.com/a... mode=print
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.07.2013, 22:11
Помогаю со студенческими работами здесь

Хранение большого количества данных (5 миллиардов пар чисел)
Всем привет! У меня возникла следующая проблема. Необходимо хранить в программе последовательность примерно из 5 миллиардов пар чисел,...

Хранение данных в приложении без бд
Всем привет. Как лучше хранить небольшое количество информации, типа данных пользователя, настроек приложения, на устройстве? Первое что...

Хранение данных без базы
Здравствуйте, скажите, пожалуйста, как можно сохранить данные (буквально 4-5 строчек), не используя базу? Что-то вроде...

Хранение и отображение данных без использования БД
Ребят помогите с решением, вернее просто направьте в нужное русло нужно написать небольшую программку, которая хранила бы в себе...

Хранение файлов и файловый менеджер в файле(листе) Excel, Бинарное хранение данных в CustomProperty листа Excel
Всем привет! Хочу поделится наработками, которые получились в процессе реализации своих задач. Отдельная благодарность! Андрей VG, за...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru