textdatei auslesen und zeile abfrage
-
wrote on 14 Apr 2019, 09:41 last edited by aha_1980
hi
ich suche code für, text datei auslesen und zeilen erste buchstabe abfragen
z.B text.txtist erste zeile, erste buchstabe "#" dann variabe "0" qDebug "ist #" wenn nicht dann variabe "1" qDebug "ist nicht #"
-
Hi
Nur für die erste Zeile in der Datei? -
wrote on 14 Apr 2019, 10:08 last edited by val78
nein
jeder zeilen einzeiln abfragen -
Hi
ok, so etwas wie dieser codevoid 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 # } } }
-
wrote on 14 Apr 2019, 10:38 last edited by
kann mann einzeln zeilen abfragen ?
z.Bif 1 zeile if 2 zeile if 3 zeile u.s.w
-
@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. -
wrote on 14 Apr 2019, 11:10 last edited by
ich brauche das für autostart
um bestimmte programme bei start ein und auschalten
autostart sied so ausmit # = 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 "#"
-
Hi
Sie können eine Struktur in einer Liste verwenden,
um sowohl den Namen als auch den Autostartstatus zu speichernstruct 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"; }
-
Hi
Sie können eine Struktur in einer Liste verwenden,
um sowohl den Namen als auch den Autostartstatus zu speichernstruct 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"; }
-
@val78
Nein, nur eine normale Liste
QVector<AutoStartItem> AutoStartList; -
@val78
Das ist kein Widget, sondern nur eine Liste mit den Daten.(ps. Ich habe dein Level angehoben, damit du schneller antworten kannst.)
5/12