Problema comparando un QList con un QString



  • Mi codigo es el siguiente:

    for(int i = 0; i < 25; i++){
                if(vector[i].compare(aux) == 1){ //Problema
                     cont++;
                     query2.bindValue(":idAlmacenados",cont);
                     query2.bindValue(":HoraA",b);
                     query2.bindValue(":HoraB",c);
                     query2.bindValue(":Nombre",a);
                     query2.bindValue(":Grupo",d);
                }
    }
     
    

    Mi problema es que cada vez que trato de compara el vector[i](del tipo QList) con aux, el programa a la hora de compilar no muestra errores, pero a la hora de correrlo el programa colapsa y se cierra. El problema se que esta en el "compare" ya que cuando saco el "== 1" el programa corre pero cuando obtengo el valor numerico de "vector[i].compare(aux)" el resultado es -3 cuando segun tengo entendido compare debería dar un booleano. Alguien me puede explicar por que pasa esto y como deberia compara un QList
    PD: QVector tiene el mismo problema y el "==" sin compare no sirve


  • Moderators

    If vector is a Qlist, why not using

    for(int i = 0; i < vector.length(); i++){
    

    Also it is advised to use "at(i)" instead of [] see the docs

    Edit : tested to use google translate here and it seems ok... i hope:

    Si el vector es un qlist, ¿por qué no usar

    for(int i = 0; i < vector.length(); i++){
    También se recomienda para usar "at(i)" lugar de [] ver los documentos

    Editar: probado para usar traductor Google aquí y parece bien ... espero



  • Vector supongo que es un QList de QStrings y aux es un QString.

    Compare siempre devuelve un int mira la documentacion: http://doc.qt.io/qt-5/qstring.html#compare-2. Ademas la sentencia if() soporta tanto booleano como enteros, si es != 0 es true y si es 0 false. Asi que el problema del error y se te cierra no creo que venga del compare.



  • @meepo1 Usa at() en lugar de compare() o []


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.