demaker
|
|
« : Декабрь 11, 2012, 18:10 » |
|
Здравствуйте. У меня есть файл данных. Файл сохранен как бинарный. Мне нужно с него считать данные и сохранить в надлежащем виде. хочу считать по байтно char DynamicData; QDataStream in(pFile); in.setVersion(QDataStream::Qt_4_7); in >> DynamicData; pFile->close();
Но выдает ошибку. Подскажите почему?
|
|
|
Записан
|
|
|
|
Mikhail
|
|
« Ответ #1 : Декабрь 11, 2012, 18:21 » |
|
Хотелось бы увидеть какую оибку выдает. Фйл то открываешь, или как?
|
|
|
Записан
|
|
|
|
Alex Custov
|
|
« Ответ #2 : Декабрь 11, 2012, 18:24 » |
|
Но выдает ошибку. Подскажите почему?
Видимо потому, что написан неправильный код
|
|
|
Записан
|
|
|
|
demaker
|
|
« Ответ #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
|
|
« Ответ #6 : Декабрь 12, 2012, 11:21 » |
|
|
|
|
Записан
|
|
|
|
mutineer
Гость
|
|
« Ответ #7 : Декабрь 12, 2012, 11:23 » |
|
По тексту ошибки создается впечатление, что DynamicData это не просто char. Приведи больше кода
|
|
|
Записан
|
|
|
|
demaker
|
|
« Ответ #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
|
|
« Ответ #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
|
|
« Ответ #11 : Декабрь 12, 2012, 11:41 » |
|
поменял в .h в .cpp таже ошибка
|
|
|
Записан
|
|
|
|
mutineer
Гость
|
|
« Ответ #12 : Декабрь 12, 2012, 11:45 » |
|
поменял в .h в .cpp таже ошибка Звездочку убери при чтении, со звездочкой это ничем от предыдущего не отличается
|
|
|
Записан
|
|
|
|
demaker
|
|
« Ответ #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 » |
|
Звездочку убери!!
|
|
|
Записан
|
|
|
|
|