Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. How can i stop running a line of code ?
Forum Update on Monday, May 27th 2025

How can i stop running a line of code ?

Scheduled Pinned Locked Moved Unsolved General and Desktop
3 Posts 3 Posters 310 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • I Offline
    I Offline
    imene
    wrote on 26 Aug 2022, 11:01 last edited by imene
    #1

    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");
    }
    
    1 Reply Last reply
    0
    • J Offline
      J Offline
      J.Hilk
      Moderators
      wrote on 26 Aug 2022, 11:09 last edited by
      #2

      @imene you do know, that you can use return at any point in your function to exit the function ?

      Make an appropriated If(condition) check beforehand and you're good to go


      Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


      Q: What's that?
      A: It's blue light.
      Q: What does it do?
      A: It turns blue.

      1 Reply Last reply
      4
      • M Offline
        M Offline
        mchinand
        wrote on 26 Aug 2022, 21:17 last edited by
        #3

        You can also use continue or break 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

        1 Reply Last reply
        2

        1/3

        26 Aug 2022, 11:01

        • Login

        • Login or register to search.
        1 out of 3
        • First post
          1/3
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved