Форум: "Основная";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
ВнизКаким образом лучше хранить разнотипные данные в одном файле? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.044 c