Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

textdatei auslesen und zeile abfrage



  • hi
    ich suche code für, text datei auslesen und zeilen erste buchstabe abfragen
    z.B text.txt

    ist erste zeile, erste buchstabe "#" 
    dann variabe "0"
    qDebug "ist #"
    wenn nicht 
    dann variabe "1"
    qDebug "ist nicht  #"

  • Lifetime Qt Champion

    Hi
    Nur für die erste Zeile in der Datei?



  • nein
    jeder zeilen einzeiln abfragen


  • Lifetime Qt Champion

    Hi
    ok, so etwas wie dieser code

    void ReadData()
    {
        QFile file("c:/PATHTO/thefile.txt");
        if (!file.open(QIODevice::ReadOnly)) {
            QMessageBox::information(nullptr, "error", file.errorString());
        }
        QTextStream in(&file);
        while (!in.atEnd()) {
            QString line = in.readLine();
            if (! line.isEmpty()  && line[0] == '#'  ) {
                // it has #
            } else {
                // kein #
            }
        }
    }
    


  • kann mann einzeln zeilen abfragen ?
    z.B

    if 1 zeile
    if 2 zeile
    if 3 zeile 
    u.s.w
    

  • Lifetime Qt Champion

    @val78 dazu müsstest Du die Datei zeilenweise in eine QStringList einlesen. Braucht natürlich dann soviel Speicher im RAM wie die Datei auf der Festplatte belegt.



  • ich brauche das für autostart

    um bestimmte programme bei start ein und auschalten
    autostart sied so aus

    mit # =  aus;   ohne  #= ein
    #xterm
    yakuake
    #xfce
    

    und das soll Buton steuern

    wenn  aus dann text "OFF" Button rot
    wenn ein dannn text "ON" Button grun
    

    und da sind mehrere zeilen mit oder ohne "#"


  • Lifetime Qt Champion

    Hi
    Sie können eine Struktur in einer Liste verwenden,
    um sowohl den Namen als auch den Autostartstatus zu speichern

    struct AutoStartItem {
        QString name;
        bool autoStart = false;
    };
    
    QVector<AutoStartItem> AutoStartList; 
    
    void MainWindow::ReadData()
    {
        QFile file("e:/auto.txt"); // change
        if (!file.open(QIODevice::ReadOnly)) {
            QMessageBox::information(nullptr, "error", file.errorString());
        }
        QTextStream in(&file);
        AutoStartItem item;
        while (!in.atEnd()) {
            QString line = in.readLine();
            if (! line.isEmpty()  && line[0] == '#'  ) {
                // it has #
                item.name = line.mid(1);
                item.autoStart = true;
            } else {
                // kein #
                item.name = line;
                item.autoStart = false;
            }
            AutoStartList.append(item);
        }
    
        // list all
        for (auto &item : AutoStartList ) {
            qDebug()  << item.name <<  " start:" << item.autoStart;
        }
    
        // check one
        if ( AutoStartList[3].autoStart ) qDebug()  << "Start it";
    }
    


  • @mrjj was ist AutoStartList
    listView?


  • Lifetime Qt Champion

    @val78
    Nein, nur eine normale Liste
    QVector<AutoStartItem> AutoStartList;



  • @mrjj was meinst du normale liste?


  • Lifetime Qt Champion

    @val78
    Das ist kein Widget, sondern nur eine Liste mit den Daten.

    (ps. Ich habe dein Level angehoben, damit du schneller antworten kannst.)


Log in to reply