Главная страница
    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.044 c
1-1096964908
Fishka
2004-10-05 12:28
2004.10.17
"Не показывать больше это окно"


1-1097052220
bobr12
2004-10-06 12:43
2004.10.17
Как отобразить число 0,1 в виде 1е-1


14-1096025807
Dmitriy O.
2004-09-24 15:36
2004.10.17
Конвертирование BMP в векторную графику и 3D


1-1096867349
_Дельфин_
2004-10-04 09:22
2004.10.17
Электронные учебники по Дельфи


3-1095770364
Relaxxx
2004-09-21 16:39
2004.10.17
Как мне сделать коньюнцию двух полей в SQL Acces??





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский