Russian Qt Forum

Qt => Общие вопросы => Тема начата: Николай Кузнецов от Август 02, 2011, 21:22



Название: Реализация загрузки текстов в программу...
Отправлено: Николай Кузнецов от Август 02, 2011, 21:22
Доброго времени суток, ув.форумчане!

Вопрос такой: Пишу не шибко сложную программу, в программе есть функция которая отрабатывает после ввода пользовательских данных и в качестве результата выдает индекс двумерного массива (т.е. два инта i и j)? - здесь проблем нет, все отлично работает. Далее необходимо в окно программы необходимо загружать текстовый блок(0.5кб - 2мб) соответствующий полученным ранее индексам, всего таких блоков около сотни. Сложность в следующем: не знаю (не могу принять решение) как организовать эти тексты и обращения к ним, - как txt resourses, xml, html или как-то еще, главное чтобы можно было обращаться к тексту хранящемуся во внешнем файле по определенному индексу, чтобы не хранить все тексты в ОЗУ, при этом желательно чтобы все текстовые блоки лежали в одном файле. Вообще склоняюсь к xml? но не уверен.

Пока писал подумал о такой XML структуре:
Код:
<?xml version="1.0" encoding="UTF-8"?>
<document name="Doc">

<cell1 num = "1" >
<description></description>
<sum0></sum0>
<sum1></sum1>
...
<sum9></sum9>
</cell1>

<cell2 num = "2" >
<description></description>
<sum0></sum0>
<sum1></sum1>
...
<sum9></sum9>
</cell2>

...

<cell9 num = "9" >
<description></description>
<sum0></sum0>
<sum1></sum1>
...
<sum9></sum9>
</cell9>
</document>

Может ли она решить такую задачу? Если нет то предлагайте свои варианты. Заранее благодарен!


Название: Re: Реализация загрузки текстов в программу...
Отправлено: kambala от Август 02, 2011, 21:36
реализовать файл с данными в виде хеш-таблицы


Название: Re: Реализация загрузки текстов в программу...
Отправлено: Пантер от Август 02, 2011, 21:37
Можно хранить в базе SQLite.


Название: Re: Реализация загрузки текстов в программу...
Отправлено: Николай Кузнецов от Август 02, 2011, 21:49
Спасибо за ответы!
реализовать файл с данными в виде хеш-таблицы
Незнаю точно как это будет выглядеть и решит ли проблему. Есть примеры подобного использования?

Можно хранить в базе SQLite.
В принципе - как вариант можно рассматривать. Какие еще предложения?


Название: Re: Реализация загрузки текстов в программу...
Отправлено: kambala от Август 02, 2011, 23:49
реализовать файл с данными в виде хеш-таблицы
Незнаю точно как это будет выглядеть и решит ли проблему. Есть примеры подобного использования?
грубо говоря, каждый блок данных сопоставляется с ключом (индексом), по которому этот самый блок данных быстро находится. более подробно можно почитать например на вики (http://ru.wikipedia.org/wiki/Хеш-таблица).
примеры использования... я лично с ними сталкивался только в файлах текстов Диабло 2 :) но вообще они довольно распространены.


Название: Re: Реализация загрузки текстов в программу..
Отправлено: Николай Кузнецов от Август 03, 2011, 11:29
Та все равно ж получается что я тексты должен сначала в файл записать а потом на этапе выполнения файл должен читаться и записываться в хэш таблицу, которая будет висеть в ОЗУ, если это так и есть то не очень подходит.
Действительно в играх такую задачу наверняка часто приходиться решать, - тексты диалогов, квестов и т.п. Может кто сталкивался, подскажите. Очень хочется знать как решить эту задачу как можно более эффективно (без костылей).


Название: Re: Реализация загрузки текстов в программу...
Отправлено: kambala от Август 03, 2011, 14:44
если обращаться к данным надо не слишком часто, то можно читать прямо из файла без необходимости загрузки всего файла в озу


Название: Re: Реализация загрузки текстов в программу..
Отправлено: LisandreL от Август 03, 2011, 15:10
Очень хочется знать как решить эту задачу как можно более эффективно (без костылей).
Без костылей и велосипедов вам уж сказали - SQLite.
И индексы построит для быстрого доступа, и повторений пар индексов не допустит, и перезаписывать целиком файл не будет при удалении/добавлении е в конец файла записи, как некоторые другие варианты.