[Solved]Program exited with code 0
-
no through editor i am entering the Ques and answer also
The xml file generates, from the xml file to database it is entering, bt the Ques is entering into the database correctly.
The options i.e Qt is a |cross platform\ appln framework is the Answer stmt.
Bt this enters the database as null value only not the stmt or phrase -
My code is not processing statements with asterisk (*), so you should add this by yourself ;-)
-
No thats not my problem.
After replacing my code with the code wat u give me to replace with, the following is the table entries now.
The following table for Question entries
QNo | Question | QueLocLang | Board | Subject | Chapter | PageNo
4724 | What is Qt? | NULL | Tamil Nadu | EnglishI | 1 | 1
4725 | Who is Sachin? | NULL | Tamil Nadu | EnglishI | 1 | 1
The table entries for Answers is,
More than one time it is entering like the followingAPNo | Statement1 | Statement2 | Option1 | QNo
80563 | | NULL | | 4724
80564 | | NULL | | 4724
80565 | | NULL | | 4724
80566 | | NULL | | 4725
80567 | | NULL | | 4725
80568 | | NULL | | 4725
The actual Answer table should be like,
APNo | Statement1 | Statement2 | Option1 | QNo
80563 | Qt is a | NULL | cross platform application framework | 4724
80564 | | is sachin | A famous crickter | 4725
But i am not getting like this. I am just getting the empty values for stmt1,option.
-
Instead of the following code
@
int mainForm::parseOption(int ind,QString option, QString &stmt1, QString &phrase)
{
QTextStream cout(stdout, QIODevice::WriteOnly);
int j = 0;
int index = ind;
cout<<"index---\n"<<index<<endl;
cout<<"311 : parseOption : "<<option<<endl;
cout<<"option[index]--\n"<<option[index]<<endl;
while(option[index] != '|')
{
stmt1[j] = option[index];
cout<<"stmt1[j]\n"<<stmt1<<endl;
if(option[index]=='\0')
{
cout<<"option[index]-----\n"<<option[index]<<endl;
stmt1[j] = '\0';
option[0] = '\0';
return -1;
// return (index);
}
index++;
j++;
}
stmt1[j] = '\0';
stmt1=stmt1.replace( "{sub}","<sub>");
stmt1=stmt1.replace( "{/sub}","</sub>" );while(option[index] != '\')
{
phrase[j] = option[index];
index++;
j++;
}cout<<"425 : "<<stmt1<<endl;
j = 0;
index++;
cout<<"option[index]-->\n"<<option[index]<<endl;
phrase=phrase.replace( "{sub}","<sub>" );
phrase=phrase.replace( "{sub}","<sub>" );
cout<<"Phrase value"<<phrase<<endl;
phrase[j] = '\0';
cout<<"436 : "<<phrase<<endl;return (index + 1);
}
@I added the code u asked me to add
@
-
int pos1 = option.indexOf('|');
-
if (pos1 != -1)
-
{
-
stmt1 = option.left(pos1);
-
int pos2 = option.indexOf('\\', pos1);
-
if (pos2 != -1)
-
{
-
phrase = option.mid(pos1, pos2 - pos1);
-
}
-
else
- {
- // there is no '|' symbol in option
-
}
@
-
-
I've already checked my code and it works fine (actually, you can change line 9 with phrase = option.mid(pos1 + 1, pos2 - pos1); to remove leading '|').
Input: "Qt is a |cross platform application framework."
Output: stmt1 = "Qt is a "
phrase = ""cross platform application framework" -
I tried by that too phrase = option.mid(pos1 + 1, pos2 – pos1); bt nw th answer table is not get updated.
i.e the Questions are entering to the database, but the answers are not entering to the database in answer table. -
@
QString option = "Qt is a |cross platform application framework\.";
int pos1 = option.indexOf('|');
if (pos1 != -1)
{
stmt1 = option.left(pos1);int pos2 = option.indexOf('\\', pos1); if (pos2 != -1) { phrase = option.mid(pos1, pos2 - pos1 + 1); }
}
else
{
qDebug("there is no '|' symbol in option");
}qDebug("stmt1=%s, phrase=%s", qPrintable(stmt1), qPrintable(phrase));
@Output: "stmt1=Qt is a , phrase=|cross platform application framework"
Is this output correct for your task?
-
The '|' and '' should not seen in the database. Otherwise the output is correct.
But, the thing is i need the stmt2 also enter to the database.
for eg|Lotus\ is our national flower.
In the above stmt, lotus is the phrase, and is our national flower is the stmt2.
That stmt2 is not entering in database.And also tried with that code, also remain the same problem, the answers are not entering into the database.
-
try to replace '' with '\'
-
ya i tried by replacing '' with '\' Still it is not get inserting into the Answer table.
-
So in my code instead of return -1, i replaced it by returning the index as return index.
As in the switch case, in if condition i'm checking the condition as
@
if(option[index]=='\0')
{
cout<<"option[index]-----\n"<<option[index]<<endl;
stmt1[j] = '\0';
option[0] = '\0';
//return -1; instead of this
return (index); added this
}
@instead of this condition i replaced it as,
@
if(index!=-1) instead of thisif((((Short *)object)->options[i])[index]!='\0') added this
{
query = new QSqlQuery("insert into ShAnsPts(Statement1,Statement2,Option1,QNo,PointNo,CorrectNo) values ("" + stmt1 + "", NULL,"" + phrase + ""," + temp2.setNum(qNo) + "," + temp2.setNum(((Short *)object)->ptno[i+1])+",1)");
}
@With the above condition what i've added it working fine.
It is inserting into the Ques table and also in Ans table now. whether it is right or nt. Do you have any idea about this. Please tell me
-
What is an "Answer table"?! We didn't speak about any insertion of data to Answer table. Check your SQL-queries for correctness.
-
The answer table is where the options and stmt get parsed i.e Qt is a |Cross platform appln framework. is to be in the answer table.
Surely i'll check the SQL-queries where i've to do the corrections. -
First of all - print all values on the screen
Second - change SQL-query builder to the next:@
query = new QSqlQuery("insert into ShAnsPts(Statement1,Statement2,Option1,QNo,PointNo,CorrectNo) values (?, ?, ?, ?, ?, ?)");
query.addBindValue(stmt1);
query.addBindValue(QVariant(QVariant::String)); // NULL string
query.addBindValue(phrase);
query.addBindValue(temp2.setNum(qNo));
query.addBindValue(temp2.setNum(((Short *)object)->ptno[i+1]));
query.addBindValue(1);
@ -
Sorry for asking you again and again, please tell me
Instead of the following code
@
query = new QSqlQuery("insert into ShAnsPts(Statement1,Statement2,Option1,QNo,PointNo,CorrectNo) values ("" + stmt1 + "", NULL,"" + phrase + ""," + temp2.setNum(qNo) + "," + temp2.setNum(((Short *)object)->ptno[i+1])+",1)");
@I've to add this code
@
query = new QSqlQuery("insert into ShAnsPts(Statement1,Statement2,Option1,QNo,PointNo,CorrectNo) values (?, ?, ?, ?, ?, ?)");
query.addBindValue(stmt1);
query.addBindValue(QVariant(QVariant::String)); // NULL string
query.addBindValue(phrase);
query.addBindValue(temp2.setNum(qNo));
query.addBindValue(temp2.setNum(((Short *)object)->ptno[i+1]));
query.addBindValue(1);
@If means by adding this code it is showing the error as request for member ‘addBindValue’ in ‘query’, which is of non-class type ‘QSqlQuery
For printing the values on screen i already added the following code.
@index = parseOption(index,((Short *)object)->options[i],stmt1,phrase);
cout<<"index : "<<index<<"\n"<<stmt1<<"\n"<<phrase<<endl;
QString text11;
stmt1temp=stmt1;
cout<<"stmt1temp\n"<<stmt1<<endl;
stmt1=stmt1temp;
cout<<"stmt1\n"<<stmt1<<endl;
phrasetemp=phrase;
cout<<"phrasetemp\n"<<phrasetemp<<endl;
phrase=phrasetemp;
cout<<"phrase\n"<<phrase<<endl;@ -
- change '.' to '->'
- What is an output of cout << *?
-
index : 41
Qt is a
cross platform appln framework
stmt1temp
.
stmt1
.
phrasetemp
cross platform appln framework
phrase
cross platform appln framework -
- As I can see your output doesn't contain any NULL-value. So, I think you have errors somewere else... Possibly, in SQL-table (e.g. wrong field type).
- For what are you make such assignments:
@
...
stmt1temp=stmt1;
cout<<"stmt1temp\n"<<stmt1<<endl;
stmt1=stmt1temp;
...
@
? -
For eg if i am entering the answer like this.
Android is a |Linux-based operating system\ designed primarily for touchscreen mobile devices.In the following code,
@
index = parseOption(index,((Short *)object)->options[i],stmt1,phrase);
cout<<"index : "<<index<<"\n"<<stmt1<<"\n"<<phrase<<endl;
@
The stmt1temp,stmt1 is considered as Android is a
As you know, the phrasetemp,phrase is the same Linux-based operating system
By the following code,@
stmt1=parseQuestion(stmt1); // function called for replacing tilde,cape symbol to angluar brackets
cout<<"stmt1--\n"<<stmt1<<endl;
stmt2temp=parseStepNo(stmt1,i,aPNo);
cout<<"stmt2temp\n"<<stmt2temp<<endl;
cout<<"\nThis is the apno value required"<<aPNo<<endl;
stmt2=stmt2temp;
cout<<"This is STatement2 value"<<stmt2<<endl;
@The stmt1 is taken for stmt2 i.e designed primarily for touchscreen mobile devices.
The assignments are mainly made for parsing the options. -
Actually i missed some thing in the previous post
index : 40
Qt is a
cross platform appln frameworkstmt1temp
Qt is a
stmt1
Qt is a
phrasetemp
cross platform appln framework
phrase
cross platform appln frameworkAfter this
text11insert into ShAnsPts(Statement1,Statement2,Option1,QNo,PointNo,CorrectNo) values ("Qt is a ", NULL,"cross platform appln framework",4816,4816,1)Then,
index : 41
Qt is a
cross platform appln framework
stmt1temp
.
stmt1
.
phrasetemp
cross platform appln framework
phrase
cross platform appln framework