text einlesen funktioniert nicht...



  • ich habe zwar keine ahnung von iteratoren, aber eigentlich müsste das doch hinhauen oder?
    dummerweise kommt nichtmal das "found" in der ausgabe?!

    void Form1::load_items()
    {
    	QString str = comboBox_type->currentText();
    	std::cout<<"Gesucher String ist: "<<str<<std::endl;
    
    	parser prs;
    	prs.read("/home/dgdaniel/develop/Qt/wh40k/lists/orks/base/", "list.wh40k");
    
    	for(QStringList::Iterator it = (prs.get_strlst() ).begin(); it != (prs.get_strlst() ).end(); it++)
    	{
    		if(*it == str)
    		{
    			listBox_items->insertItem(*it, -1);
    			std::cout<<"found"<<std::endl;
    		}
    		if(*it == "#END#")
    			break;
    	}
    }
    


  • Diese ganzen Parser in letzter Zeit kommen mir alle gleich bekannt vor.

    Was ist denn der Rückgabewert von get_strlst()? Poste mal die gesamte Funktion.



  • hey es war nie mein ziel die sache geheim zu halten... da hätt ich dann die fkt. schon umgeschriebeben... :p

    #include <iostream>
    
    #include <qstring.h> 
    #include <qstringlist.h>
    #include <qfile.h>
    #include <qtextstream.h> 
    
    class parser
    {
    private:
    	QStringList strList;
    
    public:
    	parser();
    
    	void read(QString source, QString file);
    	QString get_string(int pos);
    	QStringList parser::get_strlst();
    };
    
    parser::parser()
    {
    
    }
    
    void parser::read(QString source, QString file)
    {
    	QString zeile;
    
    	QFile datei(source + file);
    	datei.open(IO_ReadOnly);
    
    	std::cout<<"oeffne: "<<file<<" in "<<source<<std::endl;
    
    	while(datei.isOpen() )
    	{
    		QTextStream stream(&datei);
    		while(!stream.atEnd() )
    		{
    			zeile = stream.readLine();
    			std::cout<<zeile<<std::endl;
    			strList.append(zeile);
    		}
    		datei.close();
    	}
    	std::cout<<"schliesse: "<<file<<" in "<<source<<std::endl;
    }
    
    QString parser::get_string(int pos)
    {
    	return *strList.at(pos);
    }
    
    QStringList parser::get_strlst()
    {
    	return strList;
    }
    


  • QStringList parser::get_strlst()
    

    Du gibst eine Kopie der Liste zurück. Damit beziehen sich die Iteratoren in

    for(QStringList::Iterator it = (prs.get_strlst() ).begin(); it != (prs.get_strlst() ).end(); it++)
    

    auf verschiedene Objekte. Das kann nicht klappen. Gib besser eine Refernez auf die Liste zurück.



  • ich weiß nicht ob ich no ne referenz zurück gebe aber die adresse auf jeden falll!
    funktioniert leider nicht! wie soll das aussehehn 😕

    QStringList *parser::get_strlst()
    {
    	return &strList;
    }
    


  • bodo_gw schrieb:

    ich weiß nicht ob ich no ne referenz zurück gebe aber die adresse auf jeden falll!
    funktioniert leider nicht! wie soll das aussehehn 😕

    QStringList *parser::get_strlst()
    {
    	return &strList;
    }
    

    Inwiefern funktioniert es nicht. Was kommt dabei raus?



  • insofern du das überhaupt gemeint hast...
    es passiert einfach nichts meine feld bleibt lehr 😞
    wenn ich zeit habe werde ich mir mal qt genauer anschauen und auch auf den blöden designer vollkommen verzichten. dummerweise hab ich keine zeit 🙄 die schule nimmt einen jegliche freiräume und beschränkt!


Anmelden zum Antworten