Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.17;
Скачать: CL | DM;

Вниз

Каким образом лучше хранить разнотипные данные в одном файле?   Найти похожие ветки 

 
BDenis ©   (2004-10-05 22:05) [0]

Каким образом лучше хранить разнотипные данные в одном файле? Т.е. есть численные типы, строковые, картинки. И это все желательно запихнуть (а потом естественно достать оттуда) в один файл, причем размер картинок и строк заранее неизвестен. Подскажите, пожалуйста, как лучше это дело организовать.


 
Anton_K ©   (2004-10-05 22:06) [1]

Можно через ресурсы.


 
Jel ©   (2004-10-05 22:17) [2]

База данных не поможет?


 
DiamondShark ©   (2004-10-05 22:18) [3]

Structured Storage


 
BDenis ©   (2004-10-05 22:19) [4]


> DiamondShark ©   (05.10.04 22:18) [3]
> Structured Storage


Это что такое?


 
BDenis ©   (2004-10-05 22:20) [5]


> Jel ©   (05.10.04 22:17) [2]
> База данных не поможет?


Нет, это будет слишком.


 
pipll ©   (2004-10-05 23:06) [6]

А нельзя BlockRead, BlockWrite. Сначала писать размер, а затем данные.


 
Поручик   (2004-10-06 00:18) [7]

Пихай все в record, потом blockRead, BlockWrite, как смотри десь:
http://delphimaster.net/view/4-1096986327/


 
BDenis ©   (2004-10-06 00:24) [8]


> Поручик   (06.10.04 00:18) [7]

Я же не знаю заранее размеры полей. Как же я обьявлю record без точного размера полей?


 
Плохиш ©   (2004-10-06 00:48) [9]


> BDenis ©   (06.10.04 00:24) [8]

В [6] слова "А нельзя" не читать, далее по тексту.


 
BDenis ©   (2004-10-06 00:57) [10]


> Плохиш ©   (06.10.04 00:48) [9]


Тогда файл будет большего размера, чем в нем данных. Ну я обьявлю поле типа строка длиной 255 байт. Запишу в это поле 10 байт. А потом рекорд запишу в файл, а файл будт размером 255 байт. Так?


 
Jel ©   (2004-10-06 02:04) [11]


> Тогда файл будет большего размера

Смотри [6] - просто и надежно.


 
den_777   (2004-10-06 10:10) [12]

База на Embedded FireBird или XML файл. В обоих случаях проблем не будет. Только для FireBird придется с приложением еще несколько файлов таскать.


 
BDenis ©   (2004-10-06 10:15) [13]


> den_777   (06.10.04 10:10) [12]

База будет слишком.

Хотелось бы хранить все в одном record"e, чтоб потом разом считать из файла в переменную типа record. Но при этом я не смогу же описать тип записи, если неизвестен размер ее полей...


 
Суслик ©   (2004-10-06 10:23) [14]


> Хотелось бы хранить все в одном record"e

Мало ли, что тебе хочется :))

Либо гибкость и гимор, либо негибкость и легкость применения. Когда было иначе?

Разрабатываешь свой формат записи и дело в шляпе.

Например можно сделать так:
Считать , что файл состоит из структур следующего формата:
1. 1 байт - ид. типа (строка, число, целое и пр.)
2. 4 байта - длина
3. данные.

Прочтя первый байт ты определишь тип, прочтя след. 4 байта определишь длину. Зная тип и длину, ты вызываешь определенный метод чтения.


 
den_777   (2004-10-06 10:31) [15]


> Прочтя первый байт ты определишь тип, прочтя след. 4 байта
> определишь длину. Зная тип и длину, ты вызываешь определенный
> метод чтения.

И получится своя БД, со своими ошибками и ограничениями.Чем Embedded FireBird или XML файл не угодили.


 
Суслик ©   (2004-10-06 10:34) [16]


> И получится своя БД, со своими ошибками и ограничениями.Чем
> Embedded FireBird или XML файл не угодили.

да все нормально.
это один из вариантов.


 
Erik1 ©   (2004-10-06 10:38) [17]

Еще можно все в DBF фаил какатать, просто и надежно. А компонентов прямого доступа на torry.net просто море.


 
TUser ©   (2004-10-06 10:40) [18]

Кто-то говорил, что есть спец. эмулятор файловой системы в виде компонента для Delphi. Не помню точно, как его зовут, но может он поможет.


 
Суслик ©   (2004-10-06 10:44) [19]


> [18] TUser ©   (06.10.04 10:40)
> Кто-то говорил, что есть спец. эмулятор файловой системы
> в виде компонента для Delphi. Не помню точно, как его зовут,
> но может он поможет.

structured storage на это похожи.
istream файл
istorage каталог


 
Amoeba ©   (2004-10-06 11:07) [20]

Есть такая библиотека Single File System - легкий и абсолютно прозрачный доступ к разнотипным данным как к файлам в папке, поддерживается иерархия папок:
http://www.aidaim.com/products/sfs/sfs_spec.php
Она точно поможет (сам использую). IMHO - лучшее решение.
Без исходников бесплатно (единственный минус - NagScreen при запуски приложения вне IDE)


 
Amoeba ©   (2004-10-06 11:10) [21]

С исходниками SFS можно найти на
http://www2.0zones.com:808/Search_Soft.asp


 
Плохиш ©   (2004-10-06 11:18) [22]


> BDenis ©   (06.10.04 00:57) [10]
> Тогда файл будет большего размера, чем в нем данных. Ну
> я обьявлю поле типа строка длиной 255 байт. Запишу в это
> поле 10 байт. А потом рекорд запишу в файл, а файл будт
> размером 255 байт. Так?

Чушь полная! И причём здесь рекорд?
Иди учи теорию.


 
BDenis ©   (2004-10-06 11:24) [23]


> Плохиш ©   (06.10.04 11:18) [22]
Чушь полная! И причём здесь рекорд?
Иди учи теорию.

Специально сейчас перепроверил на практике. В записи поле типа короткая строка. В ней слово из 10 символов. Записываем запись в файл. Файл имеет размер 256 байт.


 
Плохиш ©   (2004-10-06 11:28) [24]

BlockWrite(f, str[1], Length(str)) - проверь
F1 - рулез форева



Страницы: 1 вся ветка

Текущий архив: 2004.10.17;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.031 c
14-1096260715
mfender
2004-09-27 08:51
2004.10.17
TNMHTTP.Body


14-1096292170
VID
2004-09-27 17:36
2004.10.17
Чем закончилась история про СМСтерроризирование Григорьева Антона


10-1049440442
Mike
2003-04-04 11:14
2004.10.17
HTTP Proxy


1-1096876425
Vir
2004-10-04 11:53
2004.10.17
SelectDirectory


14-1096452458
__RusLAN
2004-09-29 14:07
2004.10.17
Админы помогите! Бесплатный прокси + Антивирус