Seite 1 von 1

file.readLine line.nummer von x bis y ... qt4

Verfasst: 6. April 2006 17:24
von patrik08
Mit file oeffnen und schreiben sehe ich keine problemen:



aber mit nur eine zeilen lesen... wie kan ich ein range eingeben
von zeile 5 bis 8 zum beisbiel.....

Wen das file 10MB ist .... fine ich es nicht noetig alles zu durchehen wenn ich nur ueberpruefen will ob auf zeile 4 "expression" lesbar ist....

Code: Alles auswählen


QString file_get_line(QString fullFileName,int linenr)
{
    QString inside ="";
    QFile file(fullFileName);
    int endline = linenr + 1
    int count = 0;
    
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
    
    return inside;
    }
        while (!file.atEnd()) {   ////// eben nicht am ende 
         ++count;
            if (count == linenr) {
                inside = file.readLine();
            }
        }
        
return inside;
}

QString file_get_contents(QString fullFileName)
{
     /*  Warning file.exists()  &  url.isValid()  is true/true  */
     QString inside;
     QFile file(fullFileName);
    
    /*  ok is a fake normal file.....  */
    if (file.exists()) {
                if (file.open(QFile::ReadOnly | QFile::Text)) {
                  inside =file.readAll();
                  file.close();
                } else {
                 inside = "no_open_file";
                }
    } else {
    inside = "no_file";  
    }
    
   return inside;
}


 bool file_put_contents(QString fullFileName,QString xml)
{
    QString data = xml;
    QFile f( fullFileName );
	if ( f.open( QFile::WriteOnly | QFile::Text ) )
	{
		QTextStream sw( &f );
		sw << data;
		f.close();
		return true;
	}
	return false;
    
}



Verfasst: 6. April 2006 17:49
von Christian81
Dann höre doch bei der 4. Zeile auf...
Da man nicht weiss wie lang die einzelnen Zeilen sind kann man auch nicht direkt an eine Position springen.

Verfasst: 6. April 2006 18:42
von patrik08
qt4! ...

ja gut wenn ein einfache break genug ist ... offen wir das beste....

Code: Alles auswählen

QString file_get_line(QString fullFileName,int linenr)
{
    QString inside ="";
    QFile file(fullFileName);
    int countnr = 0;
    
    if (!file.open(QFile::ReadOnly | QFile::Text)) {
    return inside;
    }
    
    QTextStream in(&file);
    
        while (!in.atEnd()) {   ////// eben nicht am ende
         ++countnr;
            if (countnr == linenr) {
                inside = in.readLine(0);
                if (inside.size() > 0) {
                return inside;  
                }
             break;
            }
        }
    file.close();
       
return inside;
}