Autor Beitrag
Macoy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31



BeitragVerfasst: Sa 17.12.05 16:25 
Hallo,

Ich benutzte einen BinaryReader um aus einem FileStream daten auszulesen.

Nun habe ich einen Offset und einen Index, bis zu dem ich lesen möchte, kann aber die Byte position des Readers nicht verändern.

ZB.

ausblenden C#-Quelltext
1:
2:
myReader.ReadInt32(); // verschiebt pos um 4 bytes
myReader.ReadInt16(); // verschiebt pos um 2 bytes


Nun habe ich aber einen Bereich, auf den ich ständig zugreifen muss.
Ich bräuchte folgendes Verhalten.
ausblenden C#-Quelltext
1:
myReader.Read( buffer , offset + index , count );					


Dh.: - verschiebe byte pos zu offset + index
- kopiere count daten nach buffer

Das funkioiniert aber nicht, weil o.a. Aufruf von der aktuellen byte pos count daten liest, und diese ab offset+index im buffer schreibt.

Ich habe keine Möglichkeit gefunden, die byte pos zu verändern...

Will sagen: Die position des Iterators eines Readers lässt sich nur implizit mittels Aufrufen von Read Funktionen verschieben. Gibt es eine Möglichkeit, diese position explizit zu verändern oder ist nur rein serieller zugriff möglich ?


Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Sa 17.12.2005 um 15:30
Macoy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31



BeitragVerfasst: Do 27.04.06 14:10 
Problem gelöst. Hier die Solution, falls irgendwann wer das gleiche Prob haben sollte.

Mittels
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
// ggf. alte Position retten
int oldPos = myBinaryReader.BaseStream.Position;

myBinaryReader.BaseStream.Position = offset;
... // lesen von offset aus

// ggf. alte Position wieder setzen
myBinaryReader.BaseStream.Position = oldPos;