Seite 1 von 1

QStringList eigenartiges Problem

Verfasst: 2. September 2010 10:36
von marvin
Hallo ,

ich habe ein Programm das aus einer Datei Zeilen einliesst und diese in einer QStringListe ablegen soll,

ich habe jetz folgenden Error vom GCC,

Code: Alles auswählen

	public:
		QStringList Time;
		QStringList Cause;
		QStringList Who;
		QStringList Room;
		QStringList Date;
		int count;

Code: Alles auswählen

void get(QDate d,QString roomX)
{
	 count=0;
	 file = new QFile("index.ics");
	 
	 bool found=false;

     if (!file->open(QIODevice::ReadOnly | QIODevice::Text))
         return;

     QTextStream in(file);

     while (!in.atEnd()) 
	 {
         line = in.readLine();

		 if(line.contains(d.toString("dd.MM.yyyy"), Qt::CaseInsensitive)==true)
		 {
			 Date.at(count)=line.remove("=0D=0A=",Qt::CaseSensitive);
			 
			 
			 line = in.readLine();
			 Time.at(count)=line.remove("=0D=0A=",Qt::CaseSensitive);

			 line = in.readLine();
			 
			 line = in.readLine();
			 Cause.at(count)=line.remove("=0D=0A=",Qt::CaseSensitive);

			 line = in.readLine();
			 Who.at(count)=line.remove("=0D=0A=",Qt::CaseSensitive);

			 line = in.readLine();

			 if(line.contains(roomX, Qt::CaseInsensitive)==true)
			 {
				 Room.at(count)=line;
				 found=true;
				 count++;
				 
			 }
			 
			
		 }
       
			if(found==false)
			 {
			 Time.at(0)= "";
			 Cause.at(0)="";
			 Who.at(0)="";
			 Room.at(0)="";
			 }
		
     } 
	   
	 return;
}
und hier der fehler
ics.h: In member function 'void ics::get(QDate, QString)':
ics.h:42: error: passing 'const QString' as 'this' argument of 'QString& QString
::operator=(const QString&)' discards qualifiers
ics.h:46: error: passing 'const QString' as 'this' argument of 'QString& QString
::operator=(const QString&)' discards qualifiers
ics.h:51: error: passing 'const QString' as 'this' argument of 'QString& QString
::operator=(const QString&)' discards qualifiers
was passt dem gcc da nicht dran?
gruss marvin

Verfasst: 2. September 2010 11:17
von kater
Und wo ist Datei ics.h ?

Verfasst: 2. September 2010 11:57
von marvin
im projekt ordner, also mit den pfaden passt natürlich schon alles, es kompiliert auch , wenn ich die zeilen rausmache , die die qstringlist operationen haben.

also der code is aus der ics.h

Time.at(count)=line.remove("=0D=0A=",Qt::CaseSensitive); //zeile 42

passend dazu der fehler:

ics.h:42: error: passing 'const QString' as 'this' argument of 'QString& QString
::operator=(const QString&)' discards qualifiers

Verfasst: 2. September 2010 12:00
von franzf
Wo wird dieses "line" deklaiert, welches du in "get" verwendest? Und vor allem WIE!

Verfasst: 2. September 2010 14:38
von Christian81
QStringList::at() bringt ein Value zurück und keine Referenz der man etwas zuweisen könnte...

Verfasst: 2. September 2010 15:59
von Mr.Blonde
Die Fehlermeldung bedeutet, dass du versuchst ein const Objekt zu verändern. Wie Christian schon sagte liegt das an dem Rückgabewert von at(). Versuche mal die at()'s durch [] zu ersetzen dann sollte es klappen.

Time[count]=line.remove("=0D=0A=",Qt::CaseSensitive);

Verfasst: 2. September 2010 18:24
von marvin
Danke an alle,

@Mr.Blonde, so kompiliert ers auf jeden fall, jedoch verursacht das Programm dann einen Runtime Error beim Aufruf der Funktion
also ich stell mir QStringList als ein Feld von Qstrings [] vor das noch paar zusatz funktionen hat , oder lieg ich da falsch.
wenn ich das Programm mit einzelnen Qstrings benutz stürzt es nicht ab, aber dann kann ich natürlich auch nur einen Durchlauf machen oder ersetze immer die vorhergehenden strings

gruß
marvin

Verfasst: 2. September 2010 18:55
von Christian81
Wenn du mit [] auf einen Index zugreifst den es nicht gibt - naja was soll das Program anderes machen als abzustürzen? Ich mein - wo wird die QStringList mit den n Elementen überhaupt initialisiert? Was du suchst ist append() !

Verfasst: 3. September 2010 07:54
von Exasperation
marvin hat geschrieben:also ich stell mir QStringList als ein Feld von Qstrings [] vor das noch paar zusatz funktionen hat , oder lieg ich da falsch.
Jap, denn
QStringList inherits from QList<QString>.

Verfasst: 6. September 2010 08:19
von marvin
danke schön , ich werds ausprobieren
gruß marvin