Page 1 of 1

внедрение raw - данных

Posted: Thu Sep 24, 2009 7:07 pm
by acousoft
Здравствуйте, здрово что есть русская ветвь.

Интересует вот что:

есть у меня проект под виндовс с .rc - файлом в котором огроменные массивы hex - данных, используемых программой (мин., макс., и дефолт значения параметров).

Программу эту перевел на wxWindows, стало быть, на другие платформы засматриваемся.

Подскажите разумный wx-способ внедрить эти данные в программу независимо от платформы, ведь ресурс-файлы, они только в винде...

Windows XP, Ubuntu 9.1, Code::Blocks, MinGW, wxWidgets 2.8

Re: внедрение raw - данных

Posted: Fri Sep 25, 2009 6:14 am
by tan
Привет,
acousoft wrote:Здравствуйте, здрово что есть русская ветвь.

Интересует вот что:

есть у меня проект под виндовс с .rc - файлом в котором огроменные массивы hex - данных, используемых программой (мин., макс., и дефолт значения параметров).
ну, как я понимаю, это что-то типа конфигурационных данных. Не очень понятны две вещи. 1 - по идее, конфигурационные данные должны настраиваться (ну, типа, дефолтные координаты/размеры фрейма и т.п.), не очень понятно как это может быть реализовано с rc файлами. 2 - почему эти данные такого большого объема (и какого именно?).
acousoft wrote: Программу эту перевел на wxWindows, стало быть, на другие платформы засматриваемся.

Подскажите разумный wx-способ внедрить эти данные в программу независимо от платформы, ведь ресурс-файлы, они только в винде...

Windows XP, Ubuntu 9.1, Code::Blocks, MinGW, wxWidgets 2.8
Ну я использую для этого wxConfig. Для винды по умолчанию он использует реестр, но можно явно назначить использование конфигурационного файла. Возможно это не совсем подходит для хранения ОГРОМНЫХ массивов данных. Но в этом случае IMHO надо попробовать как-то реорганизовать структуру этих данных - большие массивы бинарных данных хранить в отдельных файлах, например, а в конфигурационных данных просто ссылку на файл.

Posted: Fri Sep 25, 2009 6:39 am
by acousoft
tan,

спасибо за ответ.

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

rc-файлы по 10-12 кБайт.
реализовано в виде raw - данных в виде байтов примерно таким образом:

Code: Select all

PS8ProtoMinValueId data
{
/*	Element:	kSceneComment	*/
 0x0,	0x0,	0x0,	0x20	/*Index:kTitle1	*/
,0x0,	0x0,	0x0,	0x20	/*Index:kTitle2	*/
,0x0,	0x0,	0x0,	0x20	/*Index:kTitle3	*/
,0x0,	0x0,	0x0,	0x20	/*Index:kTitle4	*/
,0x0,	0x0,	0x0,	0x20	/*Index:kTitle5	*/
,0x0,	0x0,	0x0,	0x20	/*Index:kTitle6	*/
,0x0,	0x0,	0x0,	0x20	/*Index:kTitle7	*/
,0x0,	0x0,	0x0,	0x20	/*Index:kTitle8	*/
,0x0,	0x0,	0x0,	0x20	/*Index:kTitle9	*/
,0x0,	0x0,	0x0,	0x20	/*Index:kTitle10*/
}
не смотрите что почти все нули - это таблица мин. значений.

Posted: Fri Sep 25, 2009 6:56 am
by tan
ОК, а что мешает для таких данных завести их просто в с-шном исходнике как массив байтов (в смысле как static unsigned char[] или как-то еще)? Примерно так же, как XPM файлы. Это будет абсолютно портабельно. На форуме где-то упоминались и готовые средства автоматизации для этого (генерирование с/c++ исходников из бинарных данных). Просто попробуй Search с ключевыми словами типа built-in binary data

Posted: Fri Sep 25, 2009 7:05 am
by acousoft
Наверное, так и придется сделать.

Как другое возможное решение, я читал где-то, что у wx есть своя система ресурсов на XML - она не позволяет подгружать в софт бинарные данные?

Posted: Fri Sep 25, 2009 7:23 am
by acousoft
этот топик описывает нечто похожее:

http://forums.wxwidgets.org/viewtopic.p ... inary+data