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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос по QMap и файлам ресурса  (Прочитано 2895 раз)
evgenm27
Гость
« : Март 14, 2017, 15:20 »

Здравствуйте, имеется 2 вопроса, буду очень признателен за помощь.

1)Не получается записать данные в ресурс файлы, так же не записываются в файлы, если они лежат в папке на диске. Если же файлы не в папках, например ("d:\\eng_file.txt"), то все работает.
Код:
    QFile engFile(":/files/eng_file.txt"),
          rusFile(":/files/rus_file.txt");

    if(!engFile.open(QFile::WriteOnly | QFile::Append) || !rusFile.open(QFile::WriteOnly | QFile::Append))
    {
        QMessageBox::information(this,"Error","Files are not opened!");
        return;
    }



2) Создаю контейнер QMap и записываю в ключ данные из одного файла, а в значения данные из другого файла (получается словарь), но выводит он почему-то их дважды по кругу, будто после цикла for стоит еще один цикл for. Экспериментировал с другими контейнерами - результат один. Скриншот прилагается.
Код:
QFile engFile("d:\\eng_file.txt"),
      rusFile("d:\\rus_file.txt");

    if(!engFile.open(QFile::ReadOnly) || !rusFile.open(QFile::ReadOnly))
    {
        QMessageBox::information(this,"Error","Files not open");
        return;
    }

    QTextStream engStream(&engFile),
                rusStream(&rusFile);
    QMap<QString,QString> map_words;

    while(!engStream.atEnd())
        map_words.insert(engStream.readLine(),rusStream.readLine());

    for(auto it=map_words.begin(); it!=map_words.end(); ++it)
        qDebug() << it.key() << "--" << it.value() << "--" << map_words.size();

    engFile.close();
    rusFile.close();
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



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

Нельзя писать в ресурсы.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #2 : Март 14, 2017, 15:31 »

Насчёт второго, высылай минимальный компилябельный пример.
Мой отработал как надо
Код
C++ (Qt)
#include <QMap>
#include <QDebug>
 
int main()
{
   QMap<QString, QString> map_words;
   map_words.insert("one", "1");
   map_words.insert("two", "2");
   map_words.insert("three", "3");
 
   for(auto it=map_words.begin(); it!=map_words.end(); ++it)
           qDebug() << it.key() << "--" << it.value() << "--" << map_words.size();
   return 0;
}
 

Цитировать
Starting D:\QtProjects\mapTest\build\mapTest-Desktop_Qt_5_7_1_MinGW_64bit-Debug\debug\mapTest.exe...
"one" -- "1" -- 3
"three" -- "3" -- 3
"two" -- "2" -- 3
D:\QtProjects\mapTest\build\mapTest-Desktop_Qt_5_7_1_MinGW_64bit-Debug\debug\mapTest.exe exited with code 0
Записан
evgenm27
Гость
« Ответ #3 : Март 14, 2017, 16:14 »

Спасибо за ответ.
Программа с несколькими окнами и несколькими файлами, будет нормально, если пришлю сразу архив?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #4 : Март 14, 2017, 16:39 »

Спасибо за ответ.
Программа с несколькими окнами и несколькими файлами, будет нормально, если пришлю сразу архив?

Нет, не нормально. Нужно сделать проект из одного main(), внутри которого будет 10-15 строк с воспроизводимой проблемой. 99%, что проблему при этом ты найдёшь и исправишь сам.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



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

99%, что проблему при этом ты найдёшь и исправишь сам.

+1
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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