[gelöst] Datei auslesen
[gelöst] Datei auslesen
Grüße Euch
Ich versuche seit Tagen, die /etc/fstab auszulesen und in einem textedit auszugeben um sie dort zu bearbeiten und wieder zu speichern(überschreiben) leider ohne erfolg.
Habe gegoooogelt und hilfe gelesen,komme einfach nicht weiter.
Wie kann man Textdateien bearbeiten, mit Qfile kriege ich das nicht hin.
Vielen Dank im vorraus.
MFG
Ich versuche seit Tagen, die /etc/fstab auszulesen und in einem textedit auszugeben um sie dort zu bearbeiten und wieder zu speichern(überschreiben) leider ohne erfolg.
Habe gegoooogelt und hilfe gelesen,komme einfach nicht weiter.
Wie kann man Textdateien bearbeiten, mit Qfile kriege ich das nicht hin.
Vielen Dank im vorraus.
MFG
das beste ist wohl die Datei zunächst zum lesen zu öffnen, dann mit einem QTextStream auszulesen und auzugeben. Anschließend die Datei wieder zu schließen. Wenn gespeichert werden soll wiederrum die Datei öffnen, dieses mal nur zum schreiben, wiederrum einen QTextStream auf diese Datei erstellen und mit Hilfe von diesem den Inhalt des Textwidgets abzuspeichern. Anschließend sollte die Datei wieder geschlossen werden.
Wenn das nicht hilft wirst du wohl dein Problem etwas genau beschreiben müssen, und sagen müssen wie du auf was zugreifst (und vllt sagen müssen, welche Qt Version du verwendest).
Wenn das nicht hilft wirst du wohl dein Problem etwas genau beschreiben müssen, und sagen müssen wie du auf was zugreifst (und vllt sagen müssen, welche Qt Version du verwendest).
Code: Alles auswählen
{
QFile file ( <Dateiname> );
file.open ( QIODevice::ReadOnly );
QTextStream stream ( &file );
// streamen (lesen)
file.close ( );
}
//bearbeiten
{
QFile file ( <Dateiname> );
file.open ( QIODevice::WriteOnly );
QTextStream stream ( &file );
// streamen (schreiben)
}Glaube an eine Lösung, nur dann kannst du auch eine finden.
hab's so gemacht
zum Einlesen:
-----------------
QTextEdit *NoteEdit = new QTextEdit();
QFile f ("file.txt");
f.open (QIODevice::ReadOnly);
QTextStream textStream (&f);
NoteEdit->setText (textStream.read());
----------------
zum Auslesen:
----------------
QFile f ("file.txt");
QTextStream textStream (&f);
f.open (QIODevice::WriteOnly | QIODevice::Truncate);
textStream << NoteEdit->text ();
f.close ();
--------------------
das verwende ich oft so
-----------------
QTextEdit *NoteEdit = new QTextEdit();
QFile f ("file.txt");
f.open (QIODevice::ReadOnly);
QTextStream textStream (&f);
NoteEdit->setText (textStream.read());
----------------
zum Auslesen:
----------------
QFile f ("file.txt");
QTextStream textStream (&f);
f.open (QIODevice::WriteOnly | QIODevice::Truncate);
textStream << NoteEdit->text ();
f.close ();
--------------------
das verwende ich oft so
MfG Rene
Re: hab's so gemacht
QTextStream hat kein read. readAll oder readLine, aber nicht read. Sicher das Du das oft so benutzt? Gib doch mal ein bißchen Code, so können wir nur raten was verkehrt sein könnte.mozart hat geschrieben:NoteEdit->setText (textStream.read());
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
Erstmal vielen Dank für die Antworten.
Ich benutze Qt 3.3.4 und möchte ein Widget erstellen in dem sich ein TextEdit feld mit einem pushButton zum öffnen und ein Button zum speichern befindet. Wenn ich den öffnen Button drücke, soll im TextEdit feld die /etc/fstab ausgegeben werden.
Habe ich die /etc/fstab geändert möchte ich nur noch den speichern Button drücken damit die alte Datei überschrieben wird.
Nochmals vielen Dank für Eure mühe.
MFG
Ich benutze Qt 3.3.4 und möchte ein Widget erstellen in dem sich ein TextEdit feld mit einem pushButton zum öffnen und ein Button zum speichern befindet. Wenn ich den öffnen Button drücke, soll im TextEdit feld die /etc/fstab ausgegeben werden.
Habe ich die /etc/fstab geändert möchte ich nur noch den speichern Button drücken damit die alte Datei überschrieben wird.
Nochmals vielen Dank für Eure mühe.
MFG
Aaaaaahjaa, dann also read() und nicht readAll(). Jetzt wissen wir aber immer noch nicht wo es hängt. Darfst Du die Datei überhaupt lesen und kannst Du sie öffnen oder schlägt das schon fehl? Gib doch mal endlich ein Stückchen Code, meine Glaskugel will heut nicht.imbiss hat geschrieben:Ich benutze Qt 3.3.4
void Form1::newSlot()
{
QFile file ( "/etc/fstab" );
file.open ( QIODevice| IO_ReadOnly );
QTextStream stream ( &file );
lineEdit1 -> stream;
file.close ( );
}
Dann die fehler meldung bei make
form1.ui.h: In member function `virtual void Form1::newSlot()':
form1.ui.h:106: error: `QFile' undeclared (first use this function)
form1.ui.h:106: error: (Each undeclared identifier is reported only once for
each function it appears in.)
form1.ui.h:106: error: Fehler beim Parsen before `(' token
form1.ui.h:107: error: `file' undeclared (first use this function)
form1.ui.h:107: error: Fehler beim Parsen before `|' token
form1.ui.h:109: error: 'class QLineEdit' has no member named 'stream'
make: *** [.obj/form1.o] Fehler 1
{
QFile file ( "/etc/fstab" );
file.open ( QIODevice| IO_ReadOnly );
QTextStream stream ( &file );
lineEdit1 -> stream;
file.close ( );
}
Dann die fehler meldung bei make
form1.ui.h: In member function `virtual void Form1::newSlot()':
form1.ui.h:106: error: `QFile' undeclared (first use this function)
form1.ui.h:106: error: (Each undeclared identifier is reported only once for
each function it appears in.)
form1.ui.h:106: error: Fehler beim Parsen before `(' token
form1.ui.h:107: error: `file' undeclared (first use this function)
form1.ui.h:107: error: Fehler beim Parsen before `|' token
form1.ui.h:109: error: 'class QLineEdit' has no member named 'stream'
make: *** [.obj/form1.o] Fehler 1
Das sieht nach einem fehlenden Include aus. Und wenn Du den drin hast, probier es mal hiermit.imbiss hat geschrieben:form1.ui.h:106: error: `QFile' undeclared (first use this function)
Code: Alles auswählen
QFile file ( "/etc/fstab" );
if (file.exists())
{
if (file.open(IO_ReadOnly))
{
QTextStream stream(&file);
lineEdit1->setText(stream->read());
}
}
main.cpp
#include <qapplication.h>
#include <qfile.h>
#include <qtextstream.h>
#include "form1.h"
int main( int argc, char ** argv )
{
QApplication a( argc, argv );
Form1 w;
w.show();
a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
return a.exec();
}
fehlermeldung
form1.ui.h: In member function `virtual void Form1::newSlot()':
form1.ui.h:16: error: `QFile' undeclared (first use this function)
form1.ui.h:16: error: (Each undeclared identifier is reported only once for
each function it appears in.)
form1.ui.h:16: error: Fehler beim Parsen before `(' token
form1.ui.h:17: error: `file' undeclared (first use this function)
form1.ui.h:22: error: `lineEdit1' undeclared (first use this function)
form1.ui.h:22: error: base operand of `->' has non-pointer type `QTextStream'
make: *** [.obj/form1.o] Fehler 1
hoffe ich nerve nicht, aber nach 1woche habe ich langsam graue haare...
#include <qapplication.h>
#include <qfile.h>
#include <qtextstream.h>
#include "form1.h"
int main( int argc, char ** argv )
{
QApplication a( argc, argv );
Form1 w;
w.show();
a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
return a.exec();
}
fehlermeldung
form1.ui.h: In member function `virtual void Form1::newSlot()':
form1.ui.h:16: error: `QFile' undeclared (first use this function)
form1.ui.h:16: error: (Each undeclared identifier is reported only once for
each function it appears in.)
form1.ui.h:16: error: Fehler beim Parsen before `(' token
form1.ui.h:17: error: `file' undeclared (first use this function)
form1.ui.h:22: error: `lineEdit1' undeclared (first use this function)
form1.ui.h:22: error: base operand of `->' has non-pointer type `QTextStream'
make: *** [.obj/form1.o] Fehler 1
hoffe ich nerve nicht, aber nach 1woche habe ich langsam graue haare...
Was nervt sind mangelnde und falsche Informationen. Die Fehlermeldungen beziehen sich auf die form1.ui.h und Du postet die main.cpp. In der form1.ui.h fehlt wahrscheinlich das include. Ist dein Projekt schon so groß oder so geheim oder warum packst Du es nicht einfach und lädst es hoch?imbiss hat geschrieben:hoffe ich nerve nicht, aber nach 1woche habe ich langsam graue haare...
Sorry
/****************************************************************************
** ui.h extension file, included from the uic-generated form implementation.
**
** If you want to add, delete, or rename functions or slots, use
** Qt Designer to update this file, preserving your code.
**
** You should not define a constructor or destructor in this file.
** Instead, write your code in functions called init() and destroy().
** These will automatically be called by the form's constructor and
** destructor.
*****************************************************************************/
void Form1::newSlot()
{
QFile file ( "/etc/fstab" );
if (file.exists())
{
if (file.open(IO_ReadOnly))
{
QTextStream stream(&file);
lineEdit1->setText(stream->read());
}
}
}
/****************************************************************************
** ui.h extension file, included from the uic-generated form implementation.
**
** If you want to add, delete, or rename functions or slots, use
** Qt Designer to update this file, preserving your code.
**
** You should not define a constructor or destructor in this file.
** Instead, write your code in functions called init() and destroy().
** These will automatically be called by the form's constructor and
** destructor.
*****************************************************************************/
void Form1::newSlot()
{
QFile file ( "/etc/fstab" );
if (file.exists())
{
if (file.open(IO_ReadOnly))
{
QTextStream stream(&file);
lineEdit1->setText(stream->read());
}
}
}