Выход из цикла считывания строк при достижении конца файла

Есть у меня внешнее устройства, так сказать датчики, количество датчиков до 120 штук. У каждого датчика есть свои коррекции (температура, ток, напряжение) также есть свой индивидуальный номер, назовем его Id. И чтобы не потерять данные коррекции охота их сохранить в файл на компьютере. По данному номеру Id охота найти коррекции в файле.

Записываем данные в файл, передаем "номер, данные". Читаем данные в массив, "номер, данные".

Вот что сделал:

void ReadWriteDataFiles::writeMemoryMapBalancer(unsigned short address, 
unsigned short *buf, int length)
{
QFile file("MemoryMap.txt");
if(!file.open(QFile::Append |
              QFile::Text))
{
 qDebug() << "Could not open file for writing";
}
else
{
QTextStream out(&file);

out << address;

out << " ";

for(int i = 0; i < length; i++){
    out << buf[i];

    out << " ";
}

out << endl;

file.flush();

file.close();
}
}

void ReadWriteDataFiles::readMemoryMapBalancer(unsigned short address, 
unsigned short *buf , int length)
{
QVector<unsigned short> data;

QFile file("MemoryMap.txt");
if(!file.open(QFile::ReadOnly |
              QFile::Text))
{
 qDebug() << "Could not open file for reading";
}
else
{
QTextStream in(&file);

QStringList lineData = QString(in.readLine()).split(" ");

while(!lineData.isEmpty()){

for(int i = 0; i < lineData.length(); ++i)
{
data.push_back(lineData[i].toInt());
}

if(data[0] == address)
{
for(int i = 0; i < length; i++)
{
buf[i] = data[i+1];
qDebug() << buf[i];
}
break;
}

lineData = QString(in.readLine()).split(" ");

data.clear();

}

qDebug() << "out Read file";

data.clear();

file.flush();

file.close();
}
}

Проблема в выходе из цикла while при достижение конца файла. Когда совпадений с указанным адресом нет. И программа просто зависает while(!lineData.isEmpty()) .


Ответы (0 шт):