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

Вниз

Формат файла.   Найти похожие ветки 

 
guav ©   (2006-10-03 18:31) [0]

Требуется изобрести формат файла.
в файл должна войти большая BMP картинка и немного других данных (в основном, массивы координат из пар Double).

Самый ленивый способ - хранить другие данные в формате dfm, картинку писать перед или после этого dfm или как ещё одно свойство этого dfm. Но мне это решение не очень нравится, т.к. оно привязано к VCL.
Данные можно записать в текстовой форме (XML) или бинарной. Вопрос также какой лучше взять общий "контейнер" для двух сущностей "картинка" или "другие данные". Просто писать подряд ? Zip ? Файл ресурсов ?

В общем, вопрос, если бы вам потом пришлось работать с моими данными с каким бы форматом вы бы были менее огорчены столкнуться ?


 
MeF Dei Corvi ©   (2006-10-03 18:34) [1]

Не вижу проблемы. Требуется изобрести - сделай. Судя по тому, что там будет картинка, формат будет бинарный.


 
TUser ©   (2006-10-03 18:34) [2]

У тебя нет ограничений - выбирай любой способ, лишь бы работало. Имхо.


 
Kolan ©   (2006-10-03 18:36) [3]

Может *.doc?


 
Gero ©   (2006-10-03 18:41) [4]

Просто записать подряд в бинарный файл. Зачем еще xml приплетать?


 
guav ©   (2006-10-03 18:41) [5]

> У тебя нет ограничений - выбирай любой способ, лишь бы работало.
> Имхо.

Я понимаю.
Но вот такой формат предыдущей проги.

// формат файла старой программы выявлен опытным путём.
// это - массив записей, по записи на каждую точку,
// последняя запись дублируется. Запись слеующего вида:
type
 TObjRecord = packed record
   PtName: array[0..15] of Char;
   GeoX, GeoY: Double;
   Junk: array[0..7] of Byte;
 end;
// , где PtName - подпись, лишние элементы - пробелы.
// GeoX, GeoY - координата.
// Junk - заполняется иногда "мусором",
// иногда нулями, при открытии файла в Pmag1.exe
// видимо игнорируется, при сохранении пишет
// в элементы 0..3 нули, в 4..7 - что-то очень
// похожее на указатель.


Оказался неудобным и заставил долго экспериментировать с ней, чтобы его выяснить.

Не хочу повторять ошибок.


 
Virgo_Style ©   (2006-10-03 18:42) [6]

вероятно, в лоб - <допольнительные данные><поток>.
поток - bmp или jpg. Если допустим jpg - то посмотрел бы в сторону тэгов, или как из у jpeg"а зовут - нельзя ли там создать свой собственный служебный массив.


 
Ученик чародея.   (2006-10-03 18:44) [7]


> guav ©   (03.10.06 18:31)  
> Требуется изобрести формат файла.
> в файл должна войти большая BMP картинка и немного других
> данных (в основном, массивы координат из пар Double).
>
> Самый ленивый способ - хранить другие данные в формате dfm,
>  картинку писать перед или после этого dfm или как ещё одно
> свойство этого dfm. Но мне это решение не очень нравится,
>  т.к. оно привязано к VCL.
> Данные можно записать в текстовой форме (XML) или бинарной.
>  Вопрос также какой лучше взять общий "контейнер" для двух
> сущностей "картинка" или "другие данные". Просто писать
> подряд ? Zip ? Файл ресурсов ?


Zip и тематические подкаталоги внутри. Возможно в корне zip xml файл с описанием.

Abbrevia(Delphi компонент) работает с zip.


 
Gero ©   (2006-10-03 18:44) [8]

Формат достаточно документировать, и ничего выяснять не надо будет.


 
MeF Dei Corvi ©   (2006-10-03 18:44) [9]


> чтобы его выяснить.

Что значит выяснить формат, если он жетко задан тобой же?


 
Ученик чародея.   (2006-10-03 18:44) [10]

В общем так почти все файлы ресурсов игрушек сделаны. расширение файла конечно лучше свое придумать.


 
Gero ©   (2006-10-03 18:45) [11]

> [7] Ученик чародея.   (03.10.06 18:44)

Зачем такой огород городить?


 
guav ©   (2006-10-03 18:45) [12]

> [4] Gero ©   (03.10.06 18:41)


> Просто записать подряд в бинарный файл. Зачем еще xml приплетать?


Это просто для одной версии, но неудобно если в программе периодически появляются абсолютно новые сущности.

С xml парсером работать несложно, а данных немного, почему бы не приплести ?


 
MeF Dei Corvi ©   (2006-10-03 18:47) [13]


> С xml парсером работать несложно

С потоками ввода работать сложнее?


 
guav ©   (2006-10-03 18:48) [14]

> Что значит выяснить формат, если он жетко задан тобой же?


Новый - да.
Старый - связан со старыми программами для которых и автор и исходники утеряны, воти пришлось ковырять.


 
Virgo_Style ©   (2006-10-03 18:49) [15]

guav ©   (03.10.06 18:45) [12]
Это просто для одной версии, но неудобно если в программе периодически появляются абсолютно новые сущности.


Если так, то что-то вроде
<Имя блока><размер><содержимое блока>
<Имя блока><размер><содержимое блока>
<Имя блока><размер><содержимое блока>

imho.


 
Kolan ©   (2006-10-03 18:50) [16]

Мое имхо - только популярные форматы, если это возможно.


 
guav ©   (2006-10-03 18:50) [17]

> Zip и тематические подкаталоги внутри. Возможно в корне
> zip xml файл с описанием.

Идея эта мне нравится. Без тематических каталогов можно обойтись, т.к. всего две сущности - картинка и другие данные. Но останавливает это:

> Зачем такой огород городить?


 
ferr ©   (2006-10-03 18:52) [18]

я бы пользовал xml, и только.


 
guav ©   (2006-10-03 18:53) [19]

> [16] Kolan ©   (03.10.06 18:50)


> Мое имхо - только популярные форматы, если это возможно.

что значит "только популярные форматы" ?
данные - специфичные для программы.
форма представления - об этом и вопрос.


 
guav ©   (2006-10-03 18:54) [20]

> я бы пользовал xml, и только.

Нужно хранить ещё и BMP. Или предлагаешь её тоже в xml ?


 
Gero ©   (2006-10-03 18:57) [21]

> [20] guav ©   (03.10.06 18:54)

Конечно можно.


 
ferr ©   (2006-10-03 18:58) [22]

> Нужно хранить ещё и BMP.

это уже хуже)
> Или предлагаешь её тоже в xml ?

зависит от размеров BMP.


 
Kolan ©   (2006-10-03 18:59) [23]


> "только популярные форматы" ?

Можешь сделать на Xml, который знаешь ты и еще тысячи людей, сделай. А своё изобретать - рыть себе яму в будующем.

Пример: попросили открыть файл вида:

1200
2015
1232
5443
-5433
-4552
2456


Что это за числа? Какие сдесь данные?

Точки в виде:
X
Y

Или:
X
Y
Z

Вот что такое "изобретенный" формат.


 
guav ©   (2006-10-03 19:01) [24]

> Конечно можно.

Ну да. Но, опять таки, нужно ли ?
Вот ты предлагаешь ни xml ни dfm а воообще бинарные данные подряд. Этот подход имеет свои преимущества.

Меня интересуют различные мнения. Можете считать это опросом.


 
guav ©   (2006-10-03 19:03) [25]

> [23] Kolan ©   (03.10.06 18:59)

Вот... я тоже с таким столкнулся.. в общем ты меня понял.
Собственно это и побудило создать ветку, а не делать как в данный момент на ум пришло.


 
Agent13 ©   (2006-10-03 19:07) [26]

Кстати, по поводу зип-архива - по этому пути пошёл даже Microsoft. Ведь  файлы, созданные Microsoft Office 2007 - docx, xlsx, pptx и т.д. представляют собой не что иное как зип-архив, в котором сожержится несколько xml-файлов. Так что есть на кого равняться :)


 
Джо-со-смарта   (2006-10-03 19:07) [27]

Я бы выбрал 2 файла, картинка и данные - отдельно. Данные - в текстовом виде. Собственно, у меня таких "форматов" несколько, используются пару лет. Недостатков не обнаружил :-)


 
ferr ©   (2006-10-03 19:09) [28]

> от... я тоже с таким столкнулся.. в общем ты меня понял.

После того как пару раз приходилось незапланированно масштабировать данные, почти все данные теперь у меня хранятся в xml).
> Ведь  файлы, созданные Microsoft Office 2007 - docx, xlsx,
> pptx и т.д. представляют собой не что иное как зип-архив,
> в котором сожержится несколько xml-файлов

Мамма мия) Они всегда найдут как сделать тоже самое в разы медленнее...


 
Oldman ©   (2006-10-03 19:14) [29]


> Требуется изобрести формат файла.
> в файл должна войти большая BMP картинка и немного других
> данных (в основном, массивы координат из пар Double).


БСК!!! Читай [27]


 
guav ©   (2006-10-03 19:14) [30]

> [27] Джо-со-смарта   (03.10.06 19:07)

Тоже вариант. Но желательно одним куском. Дело в том что картинка читается из уже созданного BMP файла и никогда не редактируется. Но чтобы не потерять её, лучше запихнуть в файл.


> [26] Agent13 ©   (03.10.06 19:07)

И картинки, и объекты тоже, получается, в XML пихают ?
Если не трудно, пришли пожалуйста небольшой  образец на Format("%s@%s.%s", ["guav", "ukr", "net"])


 
Джо-со-смарта   (2006-10-03 19:17) [31]

Удобно,, например, тем, что картинку можно обрабатывать отдельно, любым другим софтом.


 
guav ©   (2006-10-03 19:24) [32]

> > Или предлагаешь её тоже в xml ?
>
> зависит от размеров BMP.

От сотен кил до нескольких мег.


> Удобно,, например, тем, что картинку можно обрабатывать
> отдельно, любым другим софтом.

Картинка уже есть отдельно и с ней ничего делать не надо.

Как бы результаты опроса:

данные:
текст            Джо, Oldman
xml              Kolan, Ученик чародея, ferr, Agent13
бинарник         MeF Dei Corvi, Gero, Virgo_Style
dfm
всё равно        TUser

котнейнер:
zip             Ученик чародея, Agent13
просто подряд   Gero, Virgo_Style
отдельно!       Джо, Oldman


 
Ученик чародея.   (2006-10-03 19:26) [33]


> guav ©   (03.10.06 18:50) [17]
> > Zip и тематические подкаталоги внутри. Возможно в корне
>
> > zip xml файл с описанием.
>
> Идея эта мне нравится. Без тематических каталогов можно
> обойтись, т.к. всего две сущности - картинка и другие данные.
>  Но останавливает это:
>
> > Зачем такой огород городить?


Тем что на Delphi это сделать проще, чем нарисовать иконку к своей программе, на иконку уйдет времени больше.

Так сделаны пакеты Jar - java программы.


 
MeF Dei Corvi ©   (2006-10-03 19:30) [34]


> бинарник         MeF Dei Corvi

Ну вообще я за картинку отдельно, данные отдельно. Так редактировать удобнее (данные в xml). При желании можно и в zip упаковать. В зависимости от задачи.


 
Ломброзо ©   (2006-10-03 19:31) [35]

Покурите про медицинский стандарт DICOM - он как раз и разработан для хранения растровых изображений с координатами для выделения и подписывания каких-то областей


 
ferr ©   (2006-10-03 19:32) [36]

Всё-таки я против того чтобы в xml толкать картинку. Она всё же слишком большая, будут очень ощутимые тормоза..
Моё мнение такое :
zip
{
 image(s);
 ...
 mainXML; // в нём название файла и другая координационная информация(если необходима)
}


 
guav ©   (2006-10-03 19:40) [37]

> Тем что на Delphi это сделать проще, чем нарисовать иконку
> к своей программе, на иконку уйдет времени больше.

Иконка уже есть :-)
А расширение всё равно своё будет

Я не про сложность реалиации, а про сложность самой программы.


> [35] Ломброзо ©   (03.10.06 19:31)

Очень интересно, спасибо, покурю.


 
Kerk ©   (2006-10-03 19:40) [38]

Я за zip
Вообще можно было б написать класс - аналог TIniFile, но работающий с zip-хранилищем


 
Agent13 ©   (2006-10-03 19:44) [39]


> И картинки, и объекты тоже, получается, в XML пихают ?
> Если не трудно, пришли пожалуйста небольшой  образец на
> Format("%s@%s.%s", ["guav", "ukr", "net"])

Отослал. Но картинки они в xml не пихают :) Они лежат в нормальном виде в подкаталоге media. Объекты - в embeddings. Так что судя по всему в xml  только текст и настройки.


 
VEG ©   (2006-10-03 19:57) [40]

AbiWord имеет свой формат документа, основанный на XML. Так вот картинки он хранит в самом XML в кодировке base64



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

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

Наверх




Память: 0.58 MB
Время: 0.029 c
15-1160494016
Cyrax
2006-10-10 19:26
2006.10.29
Windows XP. Синий экран смерти


2-1160673500
Lala
2006-10-12 21:18
2006.10.29
Исключение EDBEitErrot в MaskEdit


15-1159959558
Knight
2006-10-04 14:59
2006.10.29
Есть компонент в котором реализуется функциона из статьи Роуза?


15-1160100952
Slider007
2006-10-06 06:15
2006.10.29
С днем рождения ! 6 октября


15-1160403195
Alien1769
2006-10-09 18:13
2006.10.29
Составление блок-схем