crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

eugrita
  опции профиля:
сообщение 19.6.2014, 23:31
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 1
Регистрация: 19.6.2014
Пользователь №: 4172

Спасибо сказали: 0 раз(а)




Репутация:   0  


Работаю на QT 4.2 Не получается
Есть структура
struct TComp {
    char Marka[15];
    char Pr[20];
  qint8 Vop;//объем ОП
  qint8 Vgd;//объем ЖД
  qint8 Price; //цена
  TComp *next;
            };

Надо несколько таких записей записать в бинарный файл, потом считать в ОП. Данная структура содержит текстовые поля фиксированной длины
Пытаюсь делать переопределением операторов потокового вывода и ввода
для записи так
QDataStream& operator <<(QDataStream &st, const TComp &a)
{  st.writeBytes(a.Marka,15);st.writeBytes(a.Pr,20);
     st << a.Vop; st << a.Vgd; st << a.Price;};

компилятор не находит ошибок, файл создается, что-то туда пишется
А для чтения пытаюсь так
QDataStream& operator >>(QDataStream &st,  TComp &a)
{ 
    st.readBytes(a.Marka,15);st.readBytes(a.Pr,20);
    //st.readRawData(a.Marka,n1); st.readRawData(a.Pr,n2)
    st >> a.Vop; st >> a.Vgd; st >> a.Price};
}

или так (не очень представляю смысл 2-го параметра в readBytes)
 int n1=1000,n2=1000;
    st.readBytes(a.Marka,n1);st.readBytes(a.Pr,n2);
    //st.readRawData(a.Marka,n1); st.readRawData(a.Pr,n2)
    st >> a.Vop; st >> a.Vgd; st >> a.Price};

компилятор выдает:
invalid conversion from char * to char *
error initializing argument 1 of ...
Обращаю внимание мне уже сделали замечание, что сигнатура оператора readBytes
QDataStream & QDataStream::readBytes ( char *& s, uint & l ) поэтому
2-е переопределение имеет параметры
Цитата
QDataStream& operator >>(QDataStream &st, TComp &a)

а не
QDataStream& operator >>(QDataStream &st,  const TComp &a)

но это не помогло (хотя при чтении компилятор проглотил с const)
2)почему-то у меня компилятор не понимает синтаксис a.array как написано здесь
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 17.6.2025, 21:08