Laden...

[erledigt] StreamReader verschluckt erstes Zeichen

Erstellt von Jack_AI vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.847 Views
J
Jack_AI Themenstarter:in
193 Beiträge seit 2007
vor 16 Jahren
[erledigt] StreamReader verschluckt erstes Zeichen

Hallo.

Ich möchte eine .xml-Datei per StreamReader auslesen. Ursprünglich wollte ich das per XmlReader machen, habe aber einen ominösen Fehler dazu bekommen und wollte es dann auf die "schmutzige" Art machen. Das funktioniert soweit auch ganz gut. Nur wenn ich die Zeilen per ReadLine() ausgeben möchte, fehlt das erste Zeichen jeder Zeile.

Hier der Code (haha):


      // Erster Durchlauf
      while (Reader.Read() != -1)
      {
        string AktuelleZeile = Reader.ReadLine();
        MessageBox.Show(AktuelleZeile);
      }

Weiter unten setze ich die Stream per "Reader.BaseStream.Position = 0" wieder auf den Anfang zurück und lese den Stream noch einmal mit einer zweiten Schleife aus. (Ich erwähne das nur der Vollständigkeit halber, weil ich mir nicht erklären kann, wie das durch eine so einfache Code-Stelle passieren kann)

Kann mir jemand sagen, warum das erste Zeichen verloren geht? Wenn die Zeile mit zwei Leerzeichen anfängt, gehen beide verloren.

Jack

edit: Ach ja! Was ich vergessen habe zu erwähnen: Das erste Zeichen ist der Start einem XML-Element, also immer eine offene eckige Klammer ("<") oder eben ein Leerzeichen.

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo Jack_AI,

StreamReader.Read
Liest das nächste Zeichen aus dem Eingabestream und verschiebt die Zeichenposition um ein Zeichen nach vorn.

herbivore

J
Jack_AI Themenstarter:in
193 Beiträge seit 2007
vor 16 Jahren

Autsch, das war mal wieder peinlich. Jetzt hat herbivore wieder für mich Suchmaschine spielen müssen. Sorry dafür. Leider weiß ich nicht, wie ich an dieses übersprungene Zeichen kommen kann.

Domo arigato,
Jack

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo Jack_AI,

du solltest es gar nicht erst auslesen. Soll ich wieder Suchmaschine spielen oder findest du die Methode mit der man, ohne ein Zeichen zu lesen, herausbekommt, ob noch Zeichen vorhanden sind, auch ohne mich? 🙂

herbivore

J
Jack_AI Themenstarter:in
193 Beiträge seit 2007
vor 16 Jahren

Haha, nein, nein. Ich such' schon, ich such' schon. Wenn ich das Problem gelöst habe, poste ich hier noch mal meine Lösung, für die nächste Generation an Anfängern. Danke nochmals,

Jack

J
Jack_AI Themenstarter:in
193 Beiträge seit 2007
vor 16 Jahren

Ach klasse. Hab's schon:


  while ((AktuelleZeile = Reader.ReadLine()) != null)
  {
    MessageBox.Show(AktuelleZeile);
  }

Manchmal sieht man die Lösung vor lauter Vakuum nicht.

Jack