Seite 1 von 1
[gelöst] brauch hilfe bei QString-suche und ersetzung
Verfasst: 29. Juni 2005 21:16
von slash-ex
ich will nach einen string in einem text suchen und diesen ersetzen, bekomme aber diesen fehler:
Code: Alles auswählen
In file included from .ui/form1.cpp:20:
.ui/../form1.ui.h: In member function `virtual void Form1::openFile()':
.ui/../form1.ui.h:43: Fehler: Ungültige Umformung von »void*« in »char**«
.ui/../form1.ui.h:43: Fehler: »QString« kann nicht nach »size_t*« für Argument »2« nach »__ssize_t getline(char**, size_t*, FILE*)« umgewandelt werden
make: *** [.obj/form1.o] Fehler 1
weiß jemand warum?
Code: Alles auswählen
void Form1::openFile()
{
QString rw = lineEdit3->displayText();
QString sw = lineEdit2->displayText();
//int sw_length = sw.length();
ifstream file(s_file);
if(file.is_open() )
{
vector<QString> v; QString line;
// Datei in vector<QString> lesen
while(getline(file, line) )
v.push_back(line);
// ersetzen...
for(size_t i = 0; i < v.size(); ++i)
{
size_t pos = v[i].find(sw);
if(pos != string::npos)
v[i].replace(pos, sw.length(), rw );
}
}
}
Re: brauch hilfe bei QString-suche und ersetzung
Verfasst: 30. Juni 2005 07:57
von macman
slash-ex hat geschrieben:ich will nach einen string in einem text suchen und diesen ersetzen, bekomme aber diesen fehler:
Warum machst Du nicht alles mit Qt? Ist doch viel einfacher und Du sparst dir solche Typkonflikte.
Code: Alles auswählen
void Form1::openFile()
{
QString rw = lineEdit3->displayText();
QString sw = lineEdit2->displayText();
//int sw_length = sw.length();
if (file.open(QIODevice::ReadOnly))
{
QStringList sl; QString line;
QTextStream stream(&file);
while (!stream.atEnd()) // lesen bis Fileende
sl.append(stream.readLine());
file.close();
// ersetzen...
for(uint i=0; i<sl.count(); ++i)
sl[i].replace(sw, rw);
}
}
Wobei das allerdings noch kürzer geht, wenn Du den replace sofort machst und nicht erst in einer weiteren Schleife:
Verfasst: 30. Juni 2005 14:05
von slash-ex
so, das hab ich schonmal:
Code: Alles auswählen
void Form1::openFile()
{
QString rw = lineEdit3->displayText();
QString sw = lineEdit2->displayText();
//int sw_length = sw.length();
QFile file(s_file);
if (file.open(QIODevice::ReadOnly))
{
QStringList sl; QString line;
QTextStream stream(&file);
while (!stream.atEnd()) // lesen bis Fileende
sl.append(stream.readLine().replace(sw, rw));
file.close();
}
}
Code: Alles auswählen
In file included from .ui/form1.cpp:20:
.ui/../form1.ui.h: In member function `virtual void Form1::openFile()':
.ui/../form1.ui.h:36: Fehler: »ReadOnly« ist kein Element von »QIODevice«
make: *** [.obj/form1.o] Fehler 1
warum kein:
abgesehen dass das prog nicht funzt
aber abstüzen tut es nicht mehr!
Verfasst: 30. Juni 2005 14:18
von macman
slash-ex hat geschrieben:
Code: Alles auswählen
In file included from .ui/form1.cpp:20:
.ui/../form1.ui.h: In member function `virtual void Form1::openFile()':
.ui/../form1.ui.h:36: Fehler: »ReadOnly« ist kein Element von »QIODevice«
make: *** [.obj/form1.o] Fehler 1
Sorry, war aus Qt4 entnommen. Mit Qt3 muß es "file.open(IO_ReadOnly)" heißen.
slash-ex hat geschrieben:abgesehen dass das prog nicht funzt
aber abstüzen tut es nicht mehr!
Ich wollte dir nicht das programmieren abnehmen

Was funzelt denn nicht, was Du inzwischen nicht selbst gefunden hast?
Verfasst: 30. Juni 2005 16:19
von slash-ex
danke, ich habs doch noch hinbekommen!!! benutzt du qt4 mit linux oder windows? wenn mit linux wie installiert man sich die sourcen korrekT?
void Form1::openFile()
{
QString sw = lineEdit2->displayText();
QString ew = lineEdit3->displayText();
//int sw_length = sw.length();
QFile file(s_file);
QStringList sl;
if (file.open(IO_ReadOnly))
{
cout<<"lese Datei! "<<endl;
QString line;
QTextStream stream(&file);
while (!stream.atEnd()) // lesen bis Fileende
sl.append(stream.readLine().replace(sw, ew));
file.close();
}
if ( file.open( IO_WriteOnly ) )
{
QTextStream stream(&file);
cout<<"vertausche "<<sw<<" mit "<<ew<<"!"<<endl;
for ( QStringList::Iterator it = sl.begin(); it != sl.end(); ++it )
{
stream<<*it<<endl;
}
}
}
Verfasst: 1. Juli 2005 07:42
von macman
slash-ex hat geschrieben:benutzt du qt4 mit linux oder windows? wenn mit linux wie installiert man sich die sourcen korrekT?
Ich nutze Qt mit Windows, hauptsächlich. Zuhause kommt es schon mal vor das ich es auch auf meinem Mac installiere, hab aber noch nicht Produktives gemacht. Unter Linux (Fedora) habe ich es schon mal installiert, ist aber schon lange her.
Was das installieren angeht, einfach das Archiv auspacken und die Datei Install lesen. Da sollte eigentlich alles drinstehen. Kann mir nicht vorstellen das es anders als bei Windows ist. Entpacken, ins Verzeichnis wechseln, configure, make, fertig. Umgebungsvariablen müssen eventuell noch gesetzt werden.