Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Datei zeilenweise einlesn

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
02.01.2006, 22:30 Uhr
~Heinz
Gast


Hallo !

Wie kann ich eine .txt Datei zeilenweise einlesen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.01.2006, 04:56 Uhr
CppProgrammer




C++:
CStdioFile ReadFile;
if(!ReadFile.Open("C:\\text.txt",CFile::modeRead)) // Datei öffnen
{
   AfxMessageBox("Datei kann nicht geöffnet werden!"); // Fehler beim Öffnen
}
else
{
   CString strEins = "";
   CString strZwei = "";
   ReadFile.ReadString(strEins); // Zeile 1 lesen
   ReadFile.ReadString(strZwei); // Zeile 2 lesen
   ReadFile.Close(); // Datei schliessen
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.01.2006, 10:49 Uhr
~Heinz
Gast


Hallo !

Vielen Dank, das scheint zu klappen.

Aber: da ich sicher bin, dass alle zu lesenden .txt Dateien mehr als 2 Zeilen haben, ich aber nicht genau weis, wieviele genau, würde bei o.g. Code ja nur zwei Zeilen gelesen werden.

Wie bekomme ich es hin, das a l l e Zeilen gelesen werden ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.01.2006, 11:36 Uhr
CppProgrammer



Du könntest erst die Anzahl von Zeilen mit folgender Funktion durchzählen

C++:
int CountLinesOfFile(CString FILE)
{
    CStdioFile CountFile;
    if(!CountFile.Open(FILE, CFile::modeRead))
    {
        AfxMessageBox("Datei kann nicht geöffnet werden!");
        return 0;
    }
    else
    {
        CString Line;
        int eof;
        int lines=0;
        
        while(eof)
        {
            eof = CountFile.ReadString(Line);
            ++lines;
        }
        return LINES = lines;
    }
    CountFile.Close();
}


...das ganze returned dir dann die Zeilenanzahl der Datei welche du in eine globale variable (hab hier int LINES verwendet) speichern kannst
und dann mit hilfe einer For-Schleife jede einzelne Zeile einlesen

C++:
CStdioFile ReadFile;
if(!ReadFile.Open("C:\\text.txt",CFile::modeRead)) // Datei öffnen
{
   AfxMessageBox("Datei kann nicht geöffnet werden!"); // Fehler beim Öffnen
}
else
{
   CString str1="";
   int i=0;
   for(i=0; i != LINES; ++i) //in LINES befindet sich die gesamte Zeilenanzahl
   {
      ReadFile.ReadString(str1);
      // jetzt ist der inhalt der zeile i in str1
      // du musst allerdings JETZT mit der zeile machen was du willst
      // da im nächsten Durchgang der Schleife schon wieder die nächste Zeile drinnen ist
   }
   ReadFile.Close(); // Datei schliessen
}


so sollte das eigentlich funktionieren... ich hab den code aber noch nicht getestet
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
03.01.2006, 11:50 Uhr
Tommix



Hallo,
einfacher wärs wohl so:

C++:
// ...
while (ReadFile.ReadString(str1))
{
  // Zeile verarbeiten
}
// ...


ReadFile gibt am Dateiende FALSE zurück.

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: