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

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

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: Чтение с файла  (Прочитано 12946 раз)
demaker
Птица говорун
*****
Offline Offline

Сообщений: 962


Просмотр профиля
« : Декабрь 11, 2012, 18:10 »

Здравствуйте.

У меня есть файл данных. Файл сохранен как бинарный.
Мне нужно с него считать данные и сохранить в надлежащем виде.

хочу считать по байтно  
Код:
char DynamicData;
QDataStream in(pFile);
in.setVersion(QDataStream::Qt_4_7);
in >> DynamicData;
pFile->close();

Но выдает ошибку.
Подскажите почему?


Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #1 : Декабрь 11, 2012, 18:21 »

Хотелось бы увидеть какую оибку выдает.
Фйл то открываешь, или как?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #2 : Декабрь 11, 2012, 18:24 »

Но выдает ошибку.
Подскажите почему?

Видимо потому, что написан неправильный код
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 962


Просмотр профиля
« Ответ #3 : Декабрь 12, 2012, 11:10 »

Ошибка
comtrade.cpp:112: error: no match for 'operator>>' in 'in >> ((CCOMTRADE*)this)->CCOMTRADE::DynamicData'
« Последнее редактирование: Декабрь 12, 2012, 11:16 от demaker » Записан
mutineer
Гость
« Ответ #4 : Декабрь 12, 2012, 11:16 »

Но выдает ошибку.

Ошибки нет. Просто ничего не выводит в qDebug(). Непонимающий

Определись уже, есть ошибка или нет.

А что он должен вывести в дебаг? У тебя в коде никакого вывода нет, вот и не выводит ничего
Записан
mutineer
Гость
« Ответ #5 : Декабрь 12, 2012, 11:17 »

Ошибка
comtrade.cpp:112: error: no match for 'operator>>' in 'in >> ((CCOMTRADE*)this)->CCOMTRADE::DynamicData'

Что у тебя на этой 112й строке?
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 962


Просмотр профиля
« Ответ #6 : Декабрь 12, 2012, 11:21 »

Код:
 in >>  DynamicData;
Записан
mutineer
Гость
« Ответ #7 : Декабрь 12, 2012, 11:23 »

По тексту ошибки создается впечатление, что DynamicData это не просто char. Приведи больше кода
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 962


Просмотр профиля
« Ответ #8 : Декабрь 12, 2012, 11:28 »


Код:
class CCOMTRADE
{
public:
  CCOMTRADE ();
  bool LoadConfig (QString FileName);
  bool LoadData (QString FileName);
  bool LoadFile(QString filename);
  bool LoadFileBinary(QString filename);

  unsigned short int GetEntrySize (COMTRADE *cfg);
  void Init ();
  double * getDataVector(int channel);

public:
  COMTRADE *DynamicCfg;
  QStringList*Buffer;
  double **AnalogData;
  int **DigitalData;
 
/*!!!!!!!!!!!!!*/ char DynamicData;

  double *TimeVector;

};







Код:
    QFile*pFile = new QFile;; //File * pFile;
    QDir::setCurrent("C:/tmp");
    pFile->setFileName(filename);

    if(pFile->exists())
    {
        if(!pFile->open(QIODevice::ReadOnly | QIODevice::Text))
        {
            qDebug()<<"file not open";
            delete Buffer;
            delete pFile;
            return false;
        }

        //DynamicData = new char[size];
        QDataStream in(pFile);
        in.setVersion(QDataStream::Qt_4_7);
        in >> DynamicData;
        qDebug()<<"BinaryData = "<<DynamicData;
        pFile->close();
        delete pFile;
        return true;
    }
    else
    {
        qDebug()<<"file not exists Load File";
        delete Buffer;
        delete pFile;
        return false;
    }
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 962


Просмотр профиля
« Ответ #9 : Декабрь 12, 2012, 11:35 »

Хочу в массив типа char запихнуть файл Улыбающийся
А он символ считать не может Непонимающий
Записан
mutineer
Гость
« Ответ #10 : Декабрь 12, 2012, 11:37 »

В QDataStream нету метода для чтения в char, но есть для чтения в char*

Цитировать
QDataStream & QDataStream::operator>> ( char *& s )
Reads the '\0'-terminated string s from the stream and returns a reference to the stream.
Space for the string is allocated using new -- the caller must destroy it with delete[].
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 962


Просмотр профиля
« Ответ #11 : Декабрь 12, 2012, 11:41 »

поменял в .h

Код:
char *DynamicData;
в .cpp
Код:
 in >> *DynamicData;

таже ошибка
Записан
mutineer
Гость
« Ответ #12 : Декабрь 12, 2012, 11:45 »

поменял в .h

Код:
char *DynamicData;
в .cpp
Код:
 in >> *DynamicData;

таже ошибка

Звездочку убери при чтении, со звездочкой это ничем от предыдущего не отличается
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 962


Просмотр профиля
« Ответ #13 : Декабрь 12, 2012, 11:52 »

 Улыбающийся
да, точно

поменял

Код:
 QDataStream in(pFile);
 in.setVersion(QDataStream::Qt_4_7);
 in >> DynamicData;
 qDebug()<<"BinaryData = "<<*DynamicData;

хочу в дебаге посмотреть что считалось
но ...exe завершился с кодом -1073741819
Записан
mutineer
Гость
« Ответ #14 : Декабрь 12, 2012, 12:00 »

Звездочку убери!!
Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


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