QStringList eigenartiges Problem

Alles rund um die Programmierung mit Qt
Antworten
marvin
Beiträge: 29
Registriert: 23. Mai 2010 11:58

QStringList eigenartiges Problem

Beitrag 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
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Beitrag von kater »

Und wo ist Datei ics.h ?
marvin
Beiträge: 29
Registriert: 23. Mai 2010 11:58

Beitrag 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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Wo wird dieses "line" deklaiert, welches du in "get" verwendest? Und vor allem WIE!
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

QStringList::at() bringt ein Value zurück und keine Referenz der man etwas zuweisen könnte...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Mr.Blonde
Beiträge: 10
Registriert: 29. Juli 2010 12:14

Beitrag 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);
marvin
Beiträge: 29
Registriert: 23. Mai 2010 11:58

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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() !
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Exasperation
Beiträge: 186
Registriert: 11. März 2009 18:00
Wohnort: VS

Beitrag 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>.
marvin
Beiträge: 29
Registriert: 23. Mai 2010 11:58

Beitrag von marvin »

danke schön , ich werds ausprobieren
gruß marvin
Antworten