Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.038 c
1-1096468603
LLjo
2004-09-29 18:36
2004.10.17
ширина столбца в TStringGrid...


3-1095422021
Bless
2004-09-17 15:53
2004.10.17
Как лучше всего выйти из следующей ситуации:


3-1095229040
Доктор наук
2004-09-15 10:17
2004.10.17
dbExpress


14-1096185347
Rouse_
2004-09-26 11:55
2004.10.17
Конвертер дайджестов форумов в HTML формат


1-1096418769
QuestionX
2004-09-29 04:46
2004.10.17
Способ хранения информации





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский