У меня есть файл txt
для настройки параметров устройства с последовательным интерфейсом, который выглядит следующим образом:
`R ref, version, "config_ID", menu language, Power timeout (hours), Number of users
R R1 1 "Template for setting parameters" ENGLISH 1 1
`U ref, "user name", language, volume, number of activities
U U1 "Any user" ENGLISH 100% 1
`A ref, "activity name", max duration, max cycles, startingPW%, available/hidden
A A1 "Setup stim levels" 0min 0 0% AVAILABLE FALSE FALSE TRUE TRUE
B SA1 1 "Engine tests"
` These limits apply to all phases
` M ref stim, channel, max current, minPW, maxPW, freq, waveform, output name
M CH1 1 1 120mA 10us 450us 40Hz ASYM "Channel 1"
M CH2 1 2 120mA 10us 450us 40Hz ASYM "Channel 2"
P P0 "Test phase" 0ms NONE 2000ms STOP STOP STOP
` Delay RR rate PW
O CH1 0mA 0ms 0ms 600000ns 180us RATE
O CH2 0mA 0ms 0ms 600000ns 180us RATE
в моей программе мне нужно прочитать этот файл, изменить некоторые значения и сохранить.
например, в последних строках текста:
P P0 "Test phase" 0ms NONE 2000ms STOP STOP STOP
` Delay RR rate PW
O CH1 0mA 0ms 0ms 600000ns 180us RATE
O CH2 0mA 0ms 0ms 600000ns 180us RATE
Мне нужно изменить эти PW
значения (180us
) на значение, скорректированное с помощью QSlider
ui->verticalSlider_ch1->value()
ui->verticalSlider_ch2->value()
Можете ли вы показать мне, как получить доступ к этим значениям из файла TXT и изменить его?
ps
В вышеупомянутом файле конфигурации , комментарии заключаются в символы `` и заменяются пробелами. Одиночный обратный удар `запускает комментарий, который продолжается до конца строки.
РЕДАКТИРОВАТЬ
Из комментариев я попытался разбить проблему на три части:
1) Чтение файла и извлечение содержимого O-строк, 2) использование этого для отображения экрана с ползунками
QString filename = "config_keygrip";
QString path = QCoreApplication::applicationDirPath()+"/"+filename+".txt";
QFile file(path);
if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
QMessageBox::information(this, "Unable to open file for read", file.errorString());
return;
}
else
{
QTextStream in(&file);
while(!in.atEnd())
{
QString line = in.readLine();
QString trackName("O CH1");
int pos = line.indexOf(trackName);
if (pos >= 0)
{
QStringList list = line.split(' ', QString::SkipEmptyParts); // split line and get value
QString currVal = QString::number(ui->verticalSlider->value());
list[3] = currVal; // replace value at position 3 with slider value
}
}
file.close();
}
Здесь я сделал изменения в памяти.
Запись новых значений в файл (с сохранением содержимого).
Это то, с чем мне трудно реализовать. Как мне написать эти измененные строки обратно в исходный файл?