Russian Qt Forum
Ноябрь 26, 2024, 13:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Реализация загрузки текстов в программу...  (Прочитано 3846 раз)
Николай Кузнецов
Гость
« : Август 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>

Может ли она решить такую задачу? Если нет то предлагайте свои варианты. Заранее благодарен!
« Последнее редактирование: Август 02, 2011, 21:50 от Николай Кузнецов » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Август 02, 2011, 21:36 »

реализовать файл с данными в виде хеш-таблицы
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #2 : Август 02, 2011, 21:37 »

Можно хранить в базе SQLite.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Николай Кузнецов
Гость
« Ответ #3 : Август 02, 2011, 21:49 »

Спасибо за ответы!
реализовать файл с данными в виде хеш-таблицы
Незнаю точно как это будет выглядеть и решит ли проблему. Есть примеры подобного использования?

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

Сообщений: 4747



Просмотр профиля WWW
« Ответ #4 : Август 02, 2011, 23:49 »

реализовать файл с данными в виде хеш-таблицы
Незнаю точно как это будет выглядеть и решит ли проблему. Есть примеры подобного использования?
грубо говоря, каждый блок данных сопоставляется с ключом (индексом), по которому этот самый блок данных быстро находится. более подробно можно почитать например на вики.
примеры использования... я лично с ними сталкивался только в файлах текстов Диабло 2 Улыбающийся но вообще они довольно распространены.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Николай Кузнецов
Гость
« Ответ #5 : Август 03, 2011, 11:29 »

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

Сообщений: 4747



Просмотр профиля WWW
« Ответ #6 : Август 03, 2011, 14:44 »

если обращаться к данным надо не слишком часто, то можно читать прямо из файла без необходимости загрузки всего файла в озу
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #7 : Август 03, 2011, 15:10 »

Очень хочется знать как решить эту задачу как можно более эффективно (без костылей).
Без костылей и велосипедов вам уж сказали - SQLite.
И индексы построит для быстрого доступа, и повторений пар индексов не допустит, и перезаписывать целиком файл не будет при удалении/добавлении е в конец файла записи, как некоторые другие варианты.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.058 секунд. Запросов: 23.