Leerzeilen und ifstream



  • Jaja, ich weiß, ifstream ist jetzt nicht wirklich Borland-bezogen, aber von reinem C hab ich keine Ahnung. Sonst habe ich auch nichts gefunden.

    ifstream is;
      char cs[255];
      is.open("D:\\test.txt");
    
      if( is.is_open() )
      {
          while( !is.eof() )
          {
            is.getline( cs, sizeof(cs) );
            AnsiString line = cs;
            Memo1->Lines->Add(line);
          }
      }
      is.close();
    

    Damit kann ich aber den folgenden Text nicht korrekt einlesen:

    Text1

    Text2

    Text3
    Text4

    Text5

    Heraus kommt:

    Text1

    Text2
    Text3
    Text4
    Text5

    Warum liest der die Leerzeilen nicht mit ein???



  • Plemplem schrieb:

    von reinem C hab ich keine Ahnung

    Dann benutz' doch einfach VCL-Methoden wie LoadFromFile.



  • Ups, hätte ich noch sagen sollen: Ich muss es mit ifstream machen. Leider so vorgegeben. Warum auch immer. 😞



  • Jetzt habe ich es so gemacht:

    AnsiString asString;
      ifstream is;
      is.open("d:\\test.txt");
      char line[30];
    
      while(!is.eof())
      {
        char Zeichen;
        int i = 0;
    
        bool HabNeZeile = false;
        while (!HabNeZeile)
        {
          is.get(Zeichen);
          if(Zeichen == '\n' || Zeichen == '\r' || is.eof())
          {
            Zeichen = '\0';   //Schließt einen String ab
            line[i] = Zeichen;
            i = 0;
            asString = line;
            HabNeZeile = true;
          }
          else
          {
            line[i] = Zeichen;
            i++;
          }
        }
        Memo1->Lines->Add(asString);
      }
    


  • 1. Also, das Bespiel aus deinem ersten Beitrag erzeugt bei mir eine Qutput mit Leerzeilen, so wie es soll.

    2. Die Speicher- und LadeFunktionen von TStringList sind mehr als nur gefährlich. Dieses Funktionen rufen Windows- Funktionen auf, die Fehleranfällig sind. Bei uns im Netzwerk stellt sich zum Beispiel heraus, dass die Routinen von TStringList am Speichern und Laden von Dateien scheitern. Auch Lokale Dateioperationen lassen sich auf gewissen Rechnern damit nicht durchführen. Deshalb rate ich von der Verwendung der TStringList als Dateiverwaltung ab.


Anmelden zum Antworten