Erfolgreiches Kompilieren ->Laufzeitfehler...
Verfasst: 10. Februar 2012 03:47
Werte Qt-Gemeinde,
ich bastle gerade an einem Tool, dass mir eine Texdatei in XML umwandelt.
Die einzelnen Values sind per "//" getrennt. Also versuchte ich eine Datei zu öffnen,
diese zeilenweise mit Split in eine Stringlist zu schreiben und dann über den Index zusammen mit XML-Tags in eine neue Datei zu schreiben. Kompilieren lässt es sich ohne Murren. Lade ich nun aber das zu konvertierende Dokument, so stürzt das Programm ab (Mac OSX 10.7.2).
Nachricht " CSV2XML <-(Name des Programms) wurde unerwartet beendet"
Die zu ladende Datei hat folgende Format
Anrede//Name//Art//Strasse//Ort
manche Elemente können auch leer sein, das wäre dann:
Anrede//Name////Strasse//Ort
insgesamt sind es immer 4 Trenner "//"
Hier ist mein Ansatz:
Header: hauptfenster.h
Quelldateien:
hauptfenster.cpp:
main.cpp:
Hat jemand eine Idee? Das Programm kompiliert wie gesagt ohne Probleme...
Grüße und gute Nacht
Timo
ich bastle gerade an einem Tool, dass mir eine Texdatei in XML umwandelt.
Die einzelnen Values sind per "//" getrennt. Also versuchte ich eine Datei zu öffnen,
diese zeilenweise mit Split in eine Stringlist zu schreiben und dann über den Index zusammen mit XML-Tags in eine neue Datei zu schreiben. Kompilieren lässt es sich ohne Murren. Lade ich nun aber das zu konvertierende Dokument, so stürzt das Programm ab (Mac OSX 10.7.2).
Nachricht " CSV2XML <-(Name des Programms) wurde unerwartet beendet"
Die zu ladende Datei hat folgende Format
Anrede//Name//Art//Strasse//Ort
manche Elemente können auch leer sein, das wäre dann:
Anrede//Name////Strasse//Ort
insgesamt sind es immer 4 Trenner "//"
Hier ist mein Ansatz:
Header: hauptfenster.h
Code: Alles auswählen
#ifndef HAUPTFENSTER_H
#define HAUPTFENSTER_H
#include <QMainWindow>
namespace Ui {
class Hauptfenster;
}
class Hauptfenster : public QMainWindow
{
Q_OBJECT
public:
explicit Hauptfenster(QWidget *parent = 0);
~Hauptfenster();
private:
Ui::Hauptfenster *ui;
public slots:
void readFile();
};
#endif // HAUPTFENSTER_H
Quelldateien:
hauptfenster.cpp:
Code: Alles auswählen
#include "hauptfenster.h"
#include "ui_hauptfenster.h"
#include <QFile>
#include <QString>
#include <QFileDialog>
#include <QTextStream>
#include <QStringList>
Hauptfenster::Hauptfenster(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Hauptfenster)
{
ui->setupUi(this);
connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(readFile()));
}
Hauptfenster::~Hauptfenster()
{
delete ui;
}
void Hauptfenster::readFile()
{
//Ursprungsdatei wird durch einen QFileDialog geöffnet
QFile file (QFileDialog::getOpenFileName(this,"Textdatei öffnen", "/", "Textdateien (*.*)"));
file.open(QIODevice::ReadOnly | QIODevice::Text); // Als Text-Datei nur zum Lesen öffnen
//Die zu schreibende Datei wird angelegt
QFile file_save("test.xml");
file_save.open(QIODevice::WriteOnly | QIODevice::Text);
QTextStream out(&file_save);
out <<"<?xml version=''1.0'' encoding=''UTF-8'' ?>"<<"\n";
out <<"<adressen>"<<"\n";
//Die Ursprungsdatei wird zeilenweise verarbeitet. Die Zeile wird an "//" gesplittet und die Werte wandern in eine
//StringList.
//Die Elemente der jeweiligen Zeile werden über einen Index aus der Stringlist ausgelesen und zwischen XML Tags eingefügt.
QTextStream in(&file);
while (!in.atEnd()) {
QString line = in.readLine();
QStringList felder = line.split("//");
out <<"<datensatz>\n";
out <<"<anrede>" << felder.at(0).constData() << "</anrede>"<<"\n";
out <<"<name>" << felder.at(1).constData() << "</name>"<<"\n";
out <<"<art>" << felder.at(2).constData() << "</art>"<<"\n";
out <<"<strasse>" << felder.at(3).constData() << "</strasse>"<<"\n";
out <<"<ort>" << felder.at(4).constData() << "</ort>"<<"\n";
out <<"</datensatz>\n";
}
out <<"</adressen>"<<"\n";
file_save.close();
//Zur Übersicht werden die Daten der Quelldatei in einer texEdit angezeigt.
ui->textEdit->setText(file.readAll());
file.close();
//Die generierte XML-Datei wird in einer zweiten textEdit angezeigt
QFile file_load("test.xml");
file_load.open(QIODevice::ReadOnly | QIODevice::Text);
ui->textEdit_2->setText(file_load.readAll());
file_load.close();
}
main.cpp:
Code: Alles auswählen
#include <QtGui/QApplication>
#include "hauptfenster.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Hauptfenster w;
w.show();
return a.exec();
}
Hat jemand eine Idee? Das Programm kompiliert wie gesagt ohne Probleme...
Grüße und gute Nacht
Timo