Russian Qt Forum

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



Название: Вопрос по QMap и файлам ресурса
Отправлено: 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;
    }
(http://savepic.ru/13266356.jpg)


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();
(http://savepic.ru/13238708.jpg)


Название: Re: Вопрос по QMap и файлам ресурса
Отправлено: __Heaven__ от Март 14, 2017, 15:23
Нельзя писать в ресурсы.


Название: Re: Вопрос по QMap и файлам ресурса
Отправлено: __Heaven__ от Март 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


Название: Re: Вопрос по QMap и файлам ресурса
Отправлено: evgenm27 от Март 14, 2017, 16:14
Спасибо за ответ.
Программа с несколькими окнами и несколькими файлами, будет нормально, если пришлю сразу архив?


Название: Re: Вопрос по QMap и файлам ресурса
Отправлено: Alex Custov от Март 14, 2017, 16:39
Спасибо за ответ.
Программа с несколькими окнами и несколькими файлами, будет нормально, если пришлю сразу архив?

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


Название: Re: Вопрос по QMap и файлам ресурса
Отправлено: __Heaven__ от Март 15, 2017, 09:16
99%, что проблему при этом ты найдёшь и исправишь сам.

+1