Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение\запись в\из файл 
V
    Опции темы
Kappac
Дата 2.10.2006, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



          Доброго времени суток!
Поделитесь, пожалуйста, опытом записи и чтения файлов.
Я использовал QFile и QDataStream(QTextStream), но к сожалению ничего у меня не вышло... Скорее всего кривые руки. 

Код

QFile inFile("in.xls");
QTextStream in(&inFile);
QString name;

in.seek(0);
while (!in.atEnd()) {
    name = in.readAll();
    QMessageBox::information(this, "Knock", name);
}

--------------------
                                                                                     
PM MAIL ICQ Skype   Вверх
smalcom
Дата 2.10.2006, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а про open сафсем забыл?


--------------------
What DA F...???
PM MAIL WWW Skype Jabber   Вверх
Kappac
Дата 3.10.2006, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Хотелось бы средствами Qt.
--------------------
                                                                                     
PM MAIL ICQ Skype   Вверх
chaos
Дата 3.10.2006, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


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

Репутация: 3
Всего: 44



вот тебе кусок кода из моего проекта

выкинь лишнее и будет тебе один из вариантов работы с файлами
Код

void CSelectResult::exportCard()
{
    QPopupMenu oMenu(this);
    
    oMenu.insertItem("Ýìáîñèíã", 0, 0);
    oMenu.insertItem("Íàìàãíè÷èâàíèå", 1, 1);
    int m_nType = oMenu.exec(mapToGlobal (QPoint(toolButtonExport->x(), toolButtonExport->y() + 32)));

    QString soFilter;
    if (0 == m_nType)
        soFilter = "*.csv";
    else
        soFilter = "*.iso";

    QString soFileName = QFileDialog::getSaveFileName("filename", soFilter, this);
    if (!soFileName.isEmpty())
    {
        QFile oFile;
        oFile.setName(soFileName + (m_nType == 0 ? ".csv" : ".iso"));
        oFile.open(IO_WriteOnly);
        QTextStream stream( &oFile );
        stream.setEncoding(QTextStream::Latin1);


        QSqlCursor *opCursor = m_opTable->sqlCursor();
        QString soLine;
        QSqlQuery oQuery(m_opDB);

        if (0 == m_nType)
            soLine =  "kod;last_name;first_name;full_name\n";
        else if (1 == m_nType)
            soLine = "[SETUP]\x0D\x0A\x43\x41RDTYPE =0\x0D\x0APARITY1 =1\x0D\x0APARITY2 =1\x0D\x0APARITY3 =1\x0D\x0A\x42PC1 =7\x0D\x0A\x42PC2 =5\x0D\x0A\x42PC3 =5\x0D\x0ASS1 =5\x0D\x0ASS2 =11\x0D\x0ASS3 =11\x0D\x0A\x45S1 =31\x0D\x0A\x45S2 =15\x0D\x0A\x45S3 =15\x0D\x0A\x0D\x0A[DATA]\x0D\x0A";

        QString soSQL;
        stream << soLine;
        while (opCursor->next())
        {
            int n = opCursor->value(0).toInt();
            soSQL.sprintf("SELECT dc.id, dc.last_name, dc.first_name, dt.descript, dc.mag_stripe FROM d_client dc, d_card_type dt "
                          " WHERE dc.card_type = dt.id AND dc.id = %d", n);    

            if (oQuery.exec(soSQL) && oQuery.next())
            {
                if (0 == m_nType)
                {
                    soLine = oQuery.value(0).toString() + ";" + oQuery.value(1).toString() + ";" +
                                    oQuery.value(2).toString() + ";" + oQuery.value(3).toString() + "\x0D\x0A";
                }
                else if (1 == m_nType)
                {
                    soLine = "\x01" + oQuery.value(0).toString() + "/" + translitWord(oQuery.value(1).toString()) + "=" + 
                                            translitWord(oQuery.value(2).toString()) + "\x0D\x0A" + 
                                            "\x02:<>" + oQuery.value(4).toString() + "\x0D\x0A\x03\x0D\x0A\x0D\x0A";
                }
    
                stream << soLine.local8Bit();
            }
        }

        oFile.close();
    }
}    



Добавлено @ 09:31 
вот за однои и косяк в своем коде нашел smile
Код

    QPopupMenu oMenu(this);
    
    oMenu.insertItem("Ýìáîñèíã", 0, 0);
    oMenu.insertItem("Íàìàãíè÷èâàíèå", 1, 1);
    int m_nType = oMenu.exec(mapToGlobal (QPoint(toolButtonExport->x(), toolButtonExport->y() + 32)));

    QString soFilter;
    if (0 == m_nType)
        soFilter = "*.csv";
    else
        soFilter = "*.iso";


попап меню можно закрыть не выбирая ни какой из его элементов
PM WWW   Вверх
smalcom
Дата 3.10.2006, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а доки читать тоже забыл - вместе с QT  идет мощная дока. in.open


--------------------
What DA F...???
PM MAIL WWW Skype Jabber   Вверх
Kappac
Дата 3.10.2006, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



В том то твсе и дело, что по примерам из доков ничего не работает... То есть строка "123456789" в переменную типа quint32 или qint32 считывается как "823564799" или что-то в этом духе.
В связи с этим возникает вопрос, как правильно читать файлы не созданные программой, а написанные "от руки"?
P. S. Спасибо за пример!

--------------------
                                                                                     
PM MAIL ICQ Skype   Вверх
Kappac
Дата 3.10.2006, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Тема закрыта!
smalcom спасибо!
--------------------
                                                                                     
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

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

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




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


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

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