Textdatei Koordinaten auslesen und als QString speichern

Du bist neu in der Welt von C++? Dann schau hier herein!
ScyllaIllciz
Beiträge: 200
Registriert: 9. Juli 2010 19:31

Re: Textdatei Koordinaten auslesen und als QString speichern

Beitrag von ScyllaIllciz »

Code: Alles auswählen


QTextStream stream (&file);
QVector<QPoint> allPoints;      
while(!stream.atEnd()){
    QString line = stream.readLine(); //Zeile einlesen
    QStringList list = line.split(" ");     //Zeile splitten mit " " als Trennzeichen
    QPoint point(list.at(0).toInt(), list.at(1).toInt()); //1. Wert=x, 2. Wert=y
    allPoints.append(point); //Punkt dem Vector hinzufügen
}
Ist ungetestet aber sowas in dieser Richtung, würde ich gehen.
mutantmonkey
Beiträge: 25
Registriert: 28. Juni 2011 09:27

Re: Textdatei Koordinaten auslesen und als QString speichern

Beitrag von mutantmonkey »

danke für diese super hilfe, hab das ganze jetzt glaub ich verstanden und hab das alles nochmal in der doku nachgelesen, alleine wär ich da nie drauf gekommen

wenn ich das ganze starte bekomm ich keine fehlermeldung jedoch stellt sich mir die frage wie kann ich nachschauen ob der die koordinaten auch wirklich gespeichert hat.

habe mir ein Textfeld im editor gezogen und wollte mir das allPoints dann anzeigen lassen, jedoch bleibt mein fenster leer??

Code: Alles auswählen

ui->plainTextEdit->setplainText(allpoints.readAll());
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Textdatei Koordinaten auslesen und als QString speichern

Beitrag von franzf »

Gibs doch auf der Konsole aus:

Code: Alles auswählen

foreach (QPoint const &pnt, allPoints) {
    qDebug() << pnt;
}
mutantmonkey
Beiträge: 25
Registriert: 28. Juni 2011 09:27

Re: Textdatei Koordinaten auslesen und als QString speichern

Beitrag von mutantmonkey »

ok das ist auf jedenfall die elegantere Lösung,

hab das jetzt eingegeben aber der zeigt mir keinerlei Punkte an...
Die Konsole finde ich doch dann wenn ich das Compiliere mit dem Debug Modus oder?
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Textdatei Koordinaten auslesen und als QString speichern

Beitrag von franzf »

Unter Windows brauchst du AFAIK

Code: Alles auswählen

CONFIG += console
in deinem .pro, ob du da auch noch debug brauchst, weiß ich nicht; unter Linux jedenfalls nicht.
Du solltest dein Programm dann direkt in einer konsole starten (z.B. xterm unter Linux, cmd.exe unter Windows), dann gibts diese Ausgaben.
mutantmonkey
Beiträge: 25
Registriert: 28. Juni 2011 09:27

Re: Textdatei Koordinaten auslesen und als QString speichern

Beitrag von mutantmonkey »

bekomme immer die Fehlermeldung das QtCore4.dll nicht gefunden wurde und die Anwenung nicht gestartet werden kann.

werd aber nicht schlau bis jetzt aus den Inet beiträgen was ich da nun gegen machen muss??
mutantmonkey
Beiträge: 25
Registriert: 28. Juni 2011 09:27

Re: Textdatei Koordinaten auslesen und als QString speichern

Beitrag von mutantmonkey »

ok das klappt nun, wenn ich das ganze jetzt über die Konsole starte, öffnet er das Programm ich kann jedoch keine Datei mehr einlesen?
ScyllaIllciz
Beiträge: 200
Registriert: 9. Juli 2010 19:31

Re: Textdatei Koordinaten auslesen und als QString speichern

Beitrag von ScyllaIllciz »

Was heisst "kann keine Datei mehr einlesen?". Wie versuchst Du denn die Datei einzulesen?
mutantmonkey
Beiträge: 25
Registriert: 28. Juni 2011 09:27

Re: Textdatei Koordinaten auslesen und als QString speichern

Beitrag von mutantmonkey »

starte das programm über die konsole , dann öffnet der dieses auch und ich drücke dann auf meinen button zum einlesen der txt datei , da werden aber keine txt dateine mehr angezeigt,

wenn ich das ganze über qt compiliere und der das programm öffnet klappt das

ziel der ganzen ist ja dass ich nachschauen kann ob der aus dem eingelesenen file auch die einzelnen punkte wirklcih erkennt und speichert
ScyllaIllciz
Beiträge: 200
Registriert: 9. Juli 2010 19:31

Re: Textdatei Koordinaten auslesen und als QString speichern

Beitrag von ScyllaIllciz »

starte das programm über die konsole , dann öffnet der dieses auch und ich drücke dann auf meinen button zum einlesen der txt datei , da werden aber keine txt dateine mehr angezeigt,

wenn ich das ganze über qt compiliere und der das programm öffnet klappt das

ziel der ganzen ist ja dass ich nachschauen kann ob der aus dem eingelesenen file auch die einzelnen punkte wirklcih erkennt und speichert
Das verstehe ich nicht.
Wie sieht Dein Quellcode zum öffnen der Datai aus? Wo ist der Unterschied zwischen "aus Konsole öffnen" und "qt compiliere"?
mutantmonkey
Beiträge: 25
Registriert: 28. Juni 2011 09:27

Re: Textdatei Koordinaten auslesen und als QString speichern

Beitrag von mutantmonkey »

Quellcode im ganzen:

Code: Alles auswählen

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QFile>
#include <QTextStream>
#include <QtGui>
#include <QFileDialog>
#include <QVector>
#include <QPoint>


namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0,  Qt::WindowFlags flags = 0);
    ~MainWindow();


public slots:

    void openFile();



private:


    Ui::MainWindow *ui;

};

#endif // MAINWINDOW_H

Code: Alles auswählen

#include <QtGui/QApplication>
#include "mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    MainWindow* window =new MainWindow;
    window->show();


    return a.exec();
}

Code: Alles auswählen

#include "mainwindow.h"
#include "ui_mainwindow.h"
using namespace std;

MainWindow::MainWindow(QWidget *parent, Qt::WindowFlags flags) :
    QMainWindow(parent, flags),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

   //Button mit Fkt füllem
    connect (ui->Open, SIGNAL(clicked()),this, SLOT(openFile()));

}
// Funktion Öffnen der Text Datei
void MainWindow::openFile()
{
    QString fileName;
    fileName = QFileDialog::getOpenFileName(this, tr("Datei Oeffnen"),"",
                                                "Alle Dateien (*.txt)");
//QString in QFile
        QFile file (fileName);
//Status ob File gelesen werden kann

        if (file.open(QIODevice::ReadOnly | QIODevice::Text))
{
    QMessageBox::information(this, tr("OK"), tr("Daten eingelesen"));
    return;
}
            QTextStream stream (&file);
            QVector<QPoint>allPoints;
          while (!file.atEnd())
          {
              QString line = stream.readLine();
              QStringList list = line.split(" ");
              QPoint point(list.at(0).toInt(),list.at(1).toInt());
              allPoints.append(point);

              foreach (QPoint const &pnt, allPoints)
              {
                  qDebug()<<pnt;
              }

      }

            }














MainWindow::~MainWindow()
{
    delete ui;
}
wenn ich das programm mit QtCreator öffne klappt es und ich kann ein textfile auswählen, wenn ich versuche über die windows konsole das programm zu satrten kann ich kein textfile mehr auswehlen über meinen öffnen button.

ich möchte mir ja anzeigen welche Punkte er aus der Textdatei eingelesen hat und wenn ich das richtig verstanden habe werden mir diese ja in der Konsole angezeigt wenn ich das programm damit starte?
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Textdatei Koordinaten auslesen und als QString speichern

Beitrag von franzf »

Hört sich komisch an.
Kann es sein, dass du irgend wann deinen Button umbenannt hast? Kommt eine connect-Fehlermeldung auf der Konsole? Kannst du mal bereinigen (make clean o.Ä.) und mit qmake ein neues Makefile erstellen lassen? (Evtl. liegt nur ein veraltetes ui_XYZ.h im Builddir)

BTW., denke über das Resultat dieser Anweisungen nach:

Code: Alles auswählen

if (file.open(QIODevice::ReadOnly | QIODevice::Text))
{
    QMessageBox::information(this, tr("OK"), tr("Daten eingelesen"));
    return;
}
ScyllaIllciz
Beiträge: 200
Registriert: 9. Juli 2010 19:31

Re: Textdatei Koordinaten auslesen und als QString speichern

Beitrag von ScyllaIllciz »

Code: Alles auswählen

if (file.open(QIODevice::ReadOnly | QIODevice::Text))
{
    QMessageBox::information(this, tr("OK"), tr("Daten eingelesen"));
    return;
}
Ich glaube hier sollte stehen:

Code: Alles auswählen

if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
    QMessageBox::information(this, tr("Fehler"), tr("Kann Datei nicht oeffnen!"));
    return;
}
[Edit]
Warum wird in der main.cpp das Objekt auf dem Heap angelegt? Das macht keinen Sinn!
mutantmonkey
Beiträge: 25
Registriert: 28. Juni 2011 09:27

Re: Textdatei Koordinaten auslesen und als QString speichern

Beitrag von mutantmonkey »

danke für die schnelle hilfe
die message box steht an der falschen stelle ich weiß, hab sie erstaml eingebaut um überhaupt zu schauen ob des klappt, werde sie jetzt umstricken

habe nochmal alles neu gemacht und ich kann das ganze jetzt ohne QtCreator öffnen, kann auch ein file auswählen welches das eingelesen wird, die Konsole öffnet sich nun auch, jedoch werden keine Punkte angezeigt?

irgendwo steckt doch noch ein fehler drin??

Habe das so in einem Beispiel gesehen und mir Gedacht ich mache das erstmal genauso, werde mich mal über den Heap schlaumachen..
ScyllaIllciz
Beiträge: 200
Registriert: 9. Juli 2010 19:31

Re: Textdatei Koordinaten auslesen und als QString speichern

Beitrag von ScyllaIllciz »

Stelle doch dein Programm hier rein mit Beispiel Text Datei ;-)
Antworten