![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Каким образом лучше хранить разнотипные данные в одном файле? [D7, WinXP]
BDenis © (2004-10-05 22:05:00)Каким образом лучше хранить разнотипные данные в одном файле? Т.е. есть численные типы, строковые, картинки. И это все желательно запихнуть (а потом естественно достать оттуда) в один файл, причем размер картинок и строк заранее неизвестен. Подскажите, пожалуйста, как лучше это дело организовать.
Плохиш (2004-10-06 11:28:00) [1]BlockWrite(f, str[1], Length(str)) - проверь
F1 - рулез форева
BDenis (2004-10-06 11:24:00) [2]
> Плохиш © (06.10.04 11:18) [22]
Чушь полная! И причём здесь рекорд?
Иди учи теорию.
Специально сейчас перепроверил на практике. В записи поле типа короткая строка. В ней слово из 10 символов. Записываем запись в файл. Файл имеет размер 256 байт.
Плохиш (2004-10-06 11:18:00) [3]
> BDenis © (06.10.04 00:57) [10]
> Тогда файл будет большего размера, чем в нем данных. Ну
> я обьявлю поле типа строка длиной 255 байт. Запишу в это
> поле 10 байт. А потом рекордзапишу в файл, а файл будт
> размером 255 байт. Так?
Чушь полная! И причём здесь рекорд?
Иди учи теорию.
Amoeba (2004-10-06 11:10:00) [4]С исходниками SFS можно найти на
http://www2.0zones.com:808/Search_Soft.asp
Amoeba (2004-10-06 11:07:00) [5]Есть такая библиотека Single File System - легкий и абсолютно прозрачный доступ к разнотипным данным как к файлам в папке, поддерживается иерархия папок:
http://www.aidaim.com/products/sfs/sfs_spec.php
Она точно поможет (сам использую). IMHO - лучшее решение.
Без исходников бесплатно (единственный минус - NagScreen при запуски приложения вне IDE)
Суслик (2004-10-06 10:44:00) [6]
> [18] TUser © (06.10.04 10:40)
> Кто-то говорил, что есть спец. эмулятор файловой системы
> в виде компонента для Delphi. Не помню точно, как его зовут,
> но может он поможет.
structured storage на это похожи.
istream файл
istorage каталог
TUser (2004-10-06 10:40:00) [7]Кто-то говорил, что есть спец. эмулятор файловой системы в виде компонента для Delphi. Не помню точно, как его зовут, но может он поможет.
Erik1 (2004-10-06 10:38:00) [8]Еще можно все в DBF фаил какатать, просто и надежно. А компонентов прямого доступа на torry.net просто море.
Суслик (2004-10-06 10:34:00) [9]
> И получится своя БД, со своими ошибками и ограничениями.Чем
> Embedded FireBird или XML файл не угодили.
да все нормально.
это один из вариантов.
den_777 (2004-10-06 10:31:00) [10]
> Прочтя первый байт ты определишь тип, прочтя след. 4 байта
> определишь длину. Зная тип и длину, ты вызываешь определенный
> метод чтения.
И получится своя БД, со своими ошибками и ограничениями.Чем Embedded FireBird или XML файл не угодили.
Суслик (2004-10-06 10:23:00) [11]
> Хотелось бы хранить все в одном record'e
Мало ли, что тебе хочется :))
Либо гибкость и гимор, либо негибкость и легкость применения. Когда было иначе?
Разрабатываешь свой формат записи и дело в шляпе.
Например можно сделать так:
Считать , что файл состоит из структур следующего формата:
1. 1 байт - ид. типа (строка, число, целое и пр.)
2. 4 байта - длина
3. данные.
Прочтя первый байт ты определишь тип, прочтя след. 4 байта определишь длину. Зная тип и длину, ты вызываешь определенный метод чтения.
BDenis (2004-10-06 10:15:00) [12]
> den_777 (06.10.04 10:10) [12]
База будет слишком.
Хотелось бы хранить все в одном record'e, чтоб потом разом считать из файла в переменную типа record. Но при этом я не смогу же описать тип записи, если неизвестен размер ее полей...
den_777 (2004-10-06 10:10:00) [13]База на Embedded FireBird или XML файл. В обоих случаях проблем не будет. Только для FireBird придется с приложением еще несколько файлов таскать.
Jel (2004-10-06 02:04:00) [14]
> Тогда файл будет большего размера
Смотри [6] - просто и надежно.
BDenis (2004-10-06 00:57:00) [15]
> Плохиш © (06.10.04 00:48) [9]
Тогда файл будет большего размера, чем в нем данных. Ну я обьявлю поле типа строка длиной 255 байт. Запишу в это поле 10 байт. А потом рекорд запишу в файл, а файл будт размером 255 байт. Так?
Плохиш (2004-10-06 00:48:00) [16]
> BDenis © (06.10.04 00:24) [8]
В [6] слова "А нельзя" не читать, далее по тексту.
BDenis (2004-10-06 00:24:00) [17]
> Поручик (06.10.04 00:18) [7]
Я же не знаю заранее размеры полей. Как же я обьявлю record без точного размера полей?
Поручик (2004-10-06 00:18:00) [18]Пихай все в record, потом blockRead, BlockWrite, как смотри десь:
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1096986327&n=5
pipll (2004-10-05 23:06:00) [19]А нельзя BlockRead, BlockWrite. Сначала писать размер, а затем данные.
BDenis (2004-10-05 22:20:00) [20]
> Jel © (05.10.04 22:17) [2]
> База данных не поможет?
Нет, это будет слишком.