Выход из цикла считывания строк при достижении конца файла
Есть у меня внешнее устройства, так сказать датчики, количество датчиков до 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()) .