У меня есть следующее:
ReadValuesAndWriteIntoGUI()
{
QFile File (Directory + "/here/we/go");
Qstring ValueAString
Qstring ValueBString
Qstring ValueCString
Qstring ValueDString
if(File.open(QIODevice::ReadOnly | QIODevice::Text))
{
QTextStream Stream (&File);
QString Text;
do
{
Text = Stream.readLine();
Text = Text.simplified();
// Vala
QString startWith = "[1 -3 0 0 0 0 0]";
QString endWith = ";" ;
int start = Text.indexOf(startWith, 0, Qt::CaseInsensitive);
int end = Text.indexOf(endWith, start + startWith.length(), Qt::CaseInsensitive);
if(start != -1)
ValueAString = Text.mid(start + startWith.length(), end - ( start + startWith.length() ) );
qDebug() << ValueAString << (start + startWith.length()) << (end - (start + startWith.length()));
double Avalue = ValueAString.toDouble();
ui.AInput->setValue(Avalue);
//Valb
QString startWith2 = "[1 -3 0 0 0 0 0]";
QString endWith2 = ";" ;
int start2 = Text.indexOf(startWith2, start + startWith.length(), Qt::CaseInsensitive);
int end2 = Text.indexOf(endWith2, start2 + startWith2.length(), Qt::CaseInsensitive);
if(start2 != -1)
ValueBString = Text.mid(start2 + startWith2.length(), end2 - ( start2 + startWith2.length() ) );
qDebug() << ValueBString << (start2 + startWith2.length()) << (end2 - (start2 + startWith2.length()));
double Bvalue = ValueBString.toDouble();
ui.BInput->setValue(Bvalue);
//Valc
QString startWith3 = "[0 2 -1 0 0 0 0]";
QString endWith3 = ";" ;
int start3 = Text.indexOf(startWith3, 0, Qt::CaseInsensitive);
int end3 = Text.indexOf(endWith3, start3 + startWith3.length(), Qt::CaseInsensitive);
if(start3 != -1)
ValueCString = Text.mid(start3 + startWith3.length(), end3 - ( start3 + startWith3.length() ) );
qDebug() << ValueCString << (start3 + startWith3.length()) << (end3 - (start3 + startWith3.length()));
double CValue = ValueCString.toDouble();
ui.CInput->setValue(CValue);
//Vald
QString startWith4 = "[0 2 -1 0 0 0 0]";
QString endWith4 = ";" ;
int start4 = Text.indexOf(startWith4, start3 + startWith3.length(), Qt::CaseInsensitive);
int end4 = Text.indexOf(endWith4, start4 + startWith4.length(), Qt::CaseInsensitive);
if(start2 != -1)
ValueDString = Text.mid(start4 + startWith4.length(), end4 - ( start4 + startWith4.length() ) );
qDebug() << ValueDString << (start4 + startWith4.length()) << (end4 - (start4 + startWith4.length()));
double Dvalue = ValueDString.toDouble();
ui.DInput->setValue(Dvalue);
}
while(!Text.isNull());
}
}
Текстовый файл выглядит так:
File
{ vers 0;
form ci;
ass dict;
loc "cons";
ect Proper;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
a
{
Model New;
bla bla [0 2 -1 0 0 0 0] 2; //HERE I wanted to read ValueC=2
bli bli [1 -3 0 0 0 0 0] 4; //HERE I wanted to read ValueA=4
t t [0 1 0 0 0 0 0] 0.003;
}
b
{
Model New;
bla bla [0 2 -1 0 0 0 0] 1; //HERE I wanted to read ValueD=1
bli bli [1 -3 0 0 0 0 0] 3; //HERE I wanted to read ValueB=3
t t [0 1 0 0 0 0 0] 0;
}
.
.
.
Результаты, которые я получаю в графическом интерфейсе:
ui.AInput = 3 which originally is ValueB
ui.BInput = 0 ?
ui.CInput = 0,000000003000 ?
ui.DInput = 0 ?
Как видите, я использовал методы QString :: indexof и QString :: mid, чтобы получить QStrings, но до сих пор он не работает правильно для этих QStrings.Кто-нибудь знает, где я потерпел неудачу?привет