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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Изменение текстовых файлов из ресурсов проекта  (Прочитано 2794 раз)
GeorgiiN
Гость
« : Март 09, 2017, 14:02 »

Здравствуйте, столкнулся с очередной (надеюсь, последней) проблемой в разработке.

Необходимо внедрить в игру таблицу рекордов (изначально заполненную ~10 любыми именами с результатами). Решил сделать ее в форме txt файла, где строка за строкой идут очки/имя/очки/имя.
Текстовый файл находится у меня в ресурсах проекта, чтобы потом собраться, соответственно, в приложение. Открывает и считывает файл нормально - все видно как в запросе таблицы из главного меню, так и при считывании данных, чтобы их сравнить и изменить. Но при попытке открытия этого файла на запись мне выдает ошибку (предусмотренную, если не может открыть). Соответственно, у меня легкий вопрос, ибо информации (на такой идиотский вопрос) я найти не смог: файлы, добавленные в ресурсы проекта, вообще могут изменяться внутри программы (открыты в виде WriteOnly)? Потому что меня напрягает тот факт, что если изменить png-файл логотипа в папке, откуда он был добавлен в ресурсы, то при перезагрузке проекта файл заменится, а с TXT-файлом такого не происходит, и приходится его перезагружать в, кхм, "Ресурсы".

Вот фрагмент занесения данных в файл. Использую trancate для изменения файла, а не его расширения. Ошибку выдает как с Trancate, так и с Append, так и вообще без уточнения (просто WriteOnly). В чем я могу ошибаться?

Код
C++ (Qt)
QFile file("/..../Records.txt"); // File from resourses
if (!file.open(QFile::WriteOnly | QFile::Truncate | QFile::Text))
           {
               QMessageBox::warning(this,tr("Error"),tr("Unreal to check the directory of the table for changing"));
               return; //function - void
           }
           else
           {   QTextStream wrtstr(&file);
               for (i=0;i<n;i++)
                   wrtstr << info[i];
           }
           file.close();


« Последнее редактирование: Март 09, 2017, 15:37 от GeorgiiN » Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #1 : Март 09, 2017, 14:38 »

Ваш ресурсный файл, "лежит" в области памяти, защищённой от записи.
Проще говоря, нельзя писать в exe.
Записан
GeorgiiN
Гость
« Ответ #2 : Март 09, 2017, 14:53 »

То есть, таблицу запихивать в ресурсы нельзя, а надо таскать с приложением (которое будет на выходе) отдельный txt-шник с таблицей рекордов?
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #3 : Март 09, 2017, 15:00 »

Как вариант да. Можно ещё в реестр пользователя писать рекорды, но тогда у каждого пользователя будет своя таблица рекордов
Записан
GeorgiiN
Гость
« Ответ #4 : Март 09, 2017, 15:37 »

Хорошо, спасибо за пояснения.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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