Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [qt4] QDataStream, сбросить на начало 
:(
    Опции темы
pycha
Дата 3.4.2009, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


главный анастазиолог
*


Профиль
Группа: Участник
Сообщений: 239
Регистрация: 20.6.2008
Где: Украина

Репутация: нет
Всего: 13



чтобы было понятно вот код
Код

bool MainWindow::writeFile(const QString &fileName)
{
    int i,x;
    quint32 index =0x13666777;
    QString vvod,strok,filevvod,filevivod,balvanka;

    QFile file(fileName);
    if(!file.open(QIODevice::ReadWrite))
    {
        QMessageBox::warning(this, tr("запись файла"),tr("не получается записать файл %1:\n%2.")
                .arg(file.fileName())
                .arg(file.errorString()));
        return false;
    }
    QDataStream out(&file);
    out.setVersion(QDataStream::Qt_4_4);

    out << index;

    QApplication::setOverrideCursor(Qt::WaitCursor);

///
    i=naznComboBox->currentIndex();
    balvanka=naznVvod->text();
    naznComboBox->setCurrentIndex((naznComboBox->count()-1));

    QString spisok = naznVvod->text();
    out << spisok;
    naznV();
    naznComboBox->setCurrentIndex(i);
    naznVvod->setText(balvanka);
    balvanka.clear();


///
    QString masiv[15];
    out.resetStatus();
    out>>index>>balvanka;
    for(i=0;i<15;i++)
        {
            out>>masiv[i];//считывается масив тут
            QMessageBox::information(this,tr("загрузка"),masiv[i],
                                 QMessageBox::Ok,QMessageBox::NoButton);
        }

    i = 0;
    x = 0;
    balvanka.clear();


    switch(stackedWidget->currentIndex())
    {
    case 0    :break;
    case 1    :break;
    case 2    :break;
    case 3    :break;
    case 4    :break;
    case 5    :break;
    case 6    :break;
    case 7    :break;
    case 8    :break;
    case 9    :break;
    case 10    :break;
    case 11    :break;
    case 12    :break;
    case 13    :if(naznComboBox->currentIndex()!=(naznComboBox->count()-1))
            {
            vvod= naznVvod->text();
            i = 0;
            balvanka =naznComboBox->currentText();
            filevivod = "^"+balvanka+"["+vvod+"]";
            if(masiv[13].isEmpty())
                masiv[13]= filevivod;
            else
            {
                for (x=0; x<masiv[13].length();x++)
                    if(masiv[13][x]== QChar('^'))
                        if(masiv[13][(x+1)]==filevivod[1])
                        {
                            while(x<masiv[13].length() && masiv[13][x]!= QChar('^'))
                            {
                                masiv[13][x]=filevivod[i];
                                i++;
                                x++;
                            }
                            break;
                        }


            }
            }
            break;
    case 14    :break;

    }
    out.resetStatus();
    out<<index<<spisok;
    for(i=0;i<15;i++)
    {
        out<<masiv[i];//как тут сделать правильную запись?
    }


    QApplication::restoreOverrideCursor();
    return true;
}


вообщем суть проблемы: не пойму как сделать запись масива в файл сразу после числа index и после строки spisok.  Пробывал разные способы, не пойму как это сделать
--------------------
ищу хакера со знанием компьютера длятехкт
PM MAIL ICQ   Вверх
SABROG
Дата 3.4.2009, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Не уверен, но попробуй так:

Код

QString &str = masiv[i];
out << str;



--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
pycha
Дата 4.4.2009, 02:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


главный анастазиолог
*


Профиль
Группа: Участник
Сообщений: 239
Регистрация: 20.6.2008
Где: Украина

Репутация: нет
Всего: 13



там(это я так понял) при считывании индекс,или точка в файле , как кому угодно, с которой ведется чтение или запись сдвигается дальше. Надо хотябы перебросить его на начало файла . Я увидел функцию , всунул ее , но она не помогает
. Это разве что создавать новый поток и асоциировать его с этим же файлом, (чего я не хочу). Вобщем если не будет способа другого прийдется сделать так

Добавлено через 53 секунды
resetStatus(); 
--------------------
ищу хакера со знанием компьютера длятехкт
PM MAIL ICQ   Вверх
just_geek
Дата 4.4.2009, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 309
Регистрация: 13.12.2007

Репутация: 7
Всего: 10



гм. Ну поток привязывается к потомку QIODevice... Думаю, достаточно seek на начало девайса сделать.

Код

out.device()->seek(0)

PM MAIL   Вверх
pycha
Дата 4.4.2009, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


главный анастазиолог
*


Профиль
Группа: Участник
Сообщений: 239
Регистрация: 20.6.2008
Где: Украина

Репутация: нет
Всего: 13



щас попробую
--------------------
ищу хакера со знанием компьютера длятехкт
PM MAIL ICQ   Вверх
pycha
Дата 4.4.2009, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


главный анастазиолог
*


Профиль
Группа: Участник
Сообщений: 239
Регистрация: 20.6.2008
Где: Украина

Репутация: нет
Всего: 13



вродебы сработало, но не работает совсем корректно, оно считывает и spisok в masiv[13]. Такое впечатление что оно считывает все строки в файле одной строкой. Чтобы было проще подскажите как в эклипсе запустить дебаг, это лишит меня множества вопросов. у меня выбрасывает сообщение"Problem Occurred" "'Launching vvod.exe' has encountered a problem. Eror creating session
Error creating session
Cannot run program "gdb": Launching failed
  Cannot run program "gdb": Launching failed
  Cannot run program "gdb": Launching failed

--------------------
ищу хакера со знанием компьютера длятехкт
PM MAIL ICQ   Вверх
pycha
Дата 5.4.2009, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


главный анастазиолог
*


Профиль
Группа: Участник
Сообщений: 239
Регистрация: 20.6.2008
Где: Украина

Репутация: нет
Всего: 13



то как запустит дебаг?
--------------------
ищу хакера со знанием компьютера длятехкт
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0488 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.