Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Spanish
  4. [RESUELTO] Problema con la clase QFile, favor su ayuda

[RESUELTO] Problema con la clase QFile, favor su ayuda

Scheduled Pinned Locked Moved Spanish
3 Posts 2 Posters 1.5k Views 1 Watching
  • 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.
  • R Offline
    R Offline
    rishardcarranza
    wrote on last edited by
    #1

    Tengo un problema con la implementacion de la clase QFile, quiero guadar en un archivo de texto plano unos ID's, resulta que cuando se guardar la primera vez no hay problema, crea el archivo y lo guarda sin problema, pero cuando llama nuevamente el metodo para guardar en el archivo, el cual ya existe, me limpia el contenido, lo deja en blanco... ya revise todas las posibles soluciones con los pocos conocimientos que tengo de Qt, por favor les pido de ayuda, adjunto el codigo ...

    @void frmAlumnos::ctrlFile(const QString &nomArc, QString idReg) // GUARDAR EL ARCHIVO DE CONTROL
    {
    QFile ctrlFile(nomArc);
    if(ctrlFile.exists()){
    ctrlFile.open(QIODevice::Text | QIODevice::ReadOnly);
    QTextStream txtstr(&ctrlFile);
    QString sli = txtstr.readAll();
    QString sli2;
    QStringList cad = sli.split("\n");

        ctrlFile.flush();
        ctrlFile.close();
    
        //sli+=idReg+"\n";
    
        ctrlFile.open(QIODevice::Text | QIODevice::WriteOnly);
        if (!ctrlFile.isOpen()){
            return;
        }else{
        QTextStream txtstr1(&ctrlFile);
        int ctrol=0;
        for (int i=0;i<cad.size();i++){
            if (cad[i].isEmpty()){return;} // SALIR CUANDO LLEGUE AL FINAL DEL ARCHIVO (ESPACIO EN BLANCO)
            if (cad[i]==idReg){
                ctrol++;
            }
            sli2+=cad[i]+"\n";
        }
        if (ctrol<=0){
            sli2+=idReg+"\n";
        }
        txtstr1<<sli2;
        ctrlFile.flush();
        ctrlFile.close();
        }
    
    }else{
        ctrlFile.open(QIODevice::Text | QIODevice::WriteOnly);
        if(!ctrlFile.isOpen()){return;}
        QTextStream txtstr(&ctrlFile);
        txtstr<<idReg+"\n";
        ctrlFile.flush();
        ctrlFile.close();
    }
    

    }
    @

    Si alguien sabe donde esta el error, o si hay una mejor forma de hacerlo ... Muchas Gracias ...

    1 Reply Last reply
    0
    • juankiJ Offline
      juankiJ Offline
      juanki
      Moderators
      wrote on last edited by
      #2

      Hola

      Tienes que abrir el archivo como QIODevice::Append para que lo que vayas guardando en el archivo lo coloque al final del mismo y no machaque la información cada vez que intentas escribir.

      http://qt-project.org/doc/qt-5/qiodevice.html#OpenModeFlag-enum

      Saludos

      Intenta explicar el problema lo más claro y detallado posible. Adjunta los errores y el código que creas da el error.
      Procura escribir correctamente y sin faltas de ortografía.

      Si la duda se solucionó, por favor, marca el tema como 'solucionado'.

      1 Reply Last reply
      0
      • R Offline
        R Offline
        rishardcarranza
        wrote on last edited by
        #3

        Aaaaah ok muchas gracias... buen punto juanki ... probare con eso

        1 Reply Last reply
        0

        • Login

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