Russian Qt Forum

Qt => Вопросы новичков => Тема начата: GeorgiiN от Март 09, 2017, 14:02



Название: [РЕШЕНО] Изменение текстовых файлов из ресурсов проекта
Отправлено: 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();




Название: Re: Изменение текстовых файлов из ресурсов проекта
Отправлено: __Heaven__ от Март 09, 2017, 14:38
Ваш ресурсный файл, "лежит" в области памяти, защищённой от записи.
Проще говоря, нельзя писать в exe.


Название: Re: Изменение текстовых файлов из ресурсов проекта
Отправлено: GeorgiiN от Март 09, 2017, 14:53
То есть, таблицу запихивать в ресурсы нельзя, а надо таскать с приложением (которое будет на выходе) отдельный txt-шник с таблицей рекордов?


Название: Re: Изменение текстовых файлов из ресурсов проекта
Отправлено: __Heaven__ от Март 09, 2017, 15:00
Как вариант да. Можно ещё в реестр пользователя писать рекорды, но тогда у каждого пользователя будет своя таблица рекордов


Название: Re: Изменение текстовых файлов из ресурсов проекта
Отправлено: GeorgiiN от Март 09, 2017, 15:37
Хорошо, спасибо за пояснения.