How can i stop running a line of code ?
Unsolved
General and Desktop
-
How can i stop running a line of code when i get missing items warning here?
missing item = missing table view item (table imported from a csv file)i don't want to get in this for loop:
for(int i=0;i<a; i++) //R :read , W :write { QString PayloadData_R = m_ui->Table_CSV->model()->data(m_ui->Table_CSV->model()->index(i,1)).toString(); qDebug()<< m_ui->Table_CSV->indexAt(QPoint(2,2)).row() << " and " << m_ui->Table_CSV->indexAt(QPoint(2,2)).column(); qDebug()<<"PayloadData_R="<<PayloadData_R; QString IdData_R = m_ui->Table_CSV->model()->data(m_ui->Table_CSV->model()->index(i,2)).toString(); qDebug()<< m_ui->Table_CSV->indexAt(QPoint(2,3)).row() << " and " << m_ui->Table_CSV->indexAt(QPoint(2,2)).column(); qDebug()<<"IdData_R="<<IdData_R; if (m_canDevice).... ...}
void MainWindow::on_SendAll_Button_clicked() { int a= m_ui->Table_CSV->model()->rowCount(); qDebug()<<"int a= m_ui->Table_CSV->model()->rowCount()="<<a; //nombre ligne du tab const int rowCount = mModel->rowCount(); const int colCount = mModel->columnCount(); for(int ix=0; ix<rowCount; ++ix) { QString item1=getValueAt(ix, 0); if(item1=="") {qDebug()<<"Missing_item1="<<item1; QMessageBox::warning(this,"Warning","Missing items");} for(int jx=1; jx < colCount; ++jx) { QString item2=getValueAt(ix, jx); if(item2=="") { {qDebug()<<"Missing_item2="<<item2; QMessageBox::warning(this,"Warning","Missing items");} } } } for(int i=0;i<a; i++) //R :read , W :write { QString PayloadData_R = m_ui->Table_CSV->model()->data(m_ui->Table_CSV->model()->index(i,1)).toString(); qDebug()<< m_ui->Table_CSV->indexAt(QPoint(2,2)).row() << " and " << m_ui->Table_CSV->indexAt(QPoint(2,2)).column(); qDebug()<<"PayloadData_R="<<PayloadData_R; QString IdData_R = m_ui->Table_CSV->model()->data(m_ui->Table_CSV->model()->index(i,2)).toString(); qDebug()<< m_ui->Table_CSV->indexAt(QPoint(2,3)).row() << " and " << m_ui->Table_CSV->indexAt(QPoint(2,2)).column(); qDebug()<<"IdData_R="<<IdData_R; if (m_canDevice) { disconnect(m_canDevice.get(), &QCanBusDevice::framesReceived, this, &MainWindow::processReceivedFrames); //disconnect champ d'envoi alors enable "processReceivedFrames" method QCanBusFrame frameconnect; // Declaration nv trame :de type QCanBusFrame container of a single can frame = content "frameId + payload" to send //QString ID = IdData_R; //Declaration nv ID :chaine de caractère //const uint frameId = ID.toUInt(nullptr, 16); //Declaration nv frameID :conversion de ID (chaine de caractère) to uint(unsgned int taille 16bit) //just changed if 101 *** if (IdData_R=="Tx"){ QString ID = "101"; //Declaration nv ID :chaine de caractère qDebug() <<"Id Tx"<<ID; const uint frameId = ID.toUInt(nullptr, 16); //Declaration nv frameID :conversion de ID (chaine de caractère) to uint(unsgned int taille 16bit) //just changed if 101 *** frameconnect.setFrameId(frameId); //incertion de FrameId dans uint frameId QByteArray payloadconnect= QByteArray::fromHex(PayloadData_R.toLatin1()); //Declaration nv tab of bytes(octets) //fromHex: Renvoie une copie décodée du tableau encodé en hexadécimal hexEncoded. frameconnect.setPayload(payloadconnect);//incertion de FrameId dans uint frameId qDebug() << "payload connect to control board" << payloadconnect; //affichage en terminal payloadconnect="\xFF\x00" m_canDevice->writeFrame(frameconnect); //envoi ecriture du trame initialement crée (frameconnect) sur canDevice // QMessageBox::information(this,"Done","connect frame sent"); m_canDevice->waitForFramesReceived(2000); //attend reception trame 2sec snn out //Renvoie vrai si de nouvelles trames sont disponibles pour la lecture et que le signal framesReceived() est émis ; //sinon renvoie false (si l'opération a expiré ou si une erreur s'est produite). QCanBusFrame frametestconnect = m_canDevice->readFrame(); //read m_canDevice trame et stocage dans la nouvelle "frametestconnect" QByteArray connectRep = frametestconnect.payload();//recupération de payload du trame qDebug() << "trame de test" << connectRep; qDebug() << frametestconnect.payload() << " size reponse connect carte de commande" << frametestconnect.payload().size(); qDebug() << frametestconnect.frameId()<<"rense connect carte de commande" << frametestconnect.payload().size(); //Test comparaison result recu "connectRep" et resultat attendu "Testconnect" QByteArray Testconnect = QByteArray::fromHex("FF00");//"FF00804008000101" Dec de trame qu'il faut recupéré if( connectRep[0]==Testconnect[0]){ qDebug() <<"Test FF good!"; //model dialogue informing mModel->item(i, 4)->setText("FF");//ack mModel->item(i, 6)->setText("Pass");//result } else {qDebug() <<"Test bad! connectRep"<<connectRep; mModel->item(i, 4)->setText("FE");//ack mModel->item(i, 6)->setText("Fail");//result } } }//if 101 ** changeboth send and sendall } QMessageBox::information(this,"Done","Frames are sent successfully"); }
-
You can also use
continue
orbreak
depending on what you want your code to do when it encounters a missing item. This is very, very basic C/C++ stuff. https://www.w3schools.com/cpp/cpp_break.asp