Es gibt mehrere solcher verschachtelter Streams/Reader/Writer in Delphi.
Bei Einigen muß man aber aufpassen, da sie einen Cache bzw. Buffer nutzen.
Dieser TBinaryReader besitzt z.B. einen Cache für Char/String-Funktionen
und ich weiß nicht, wie er auf sowas hier reagiert.
Wird oft für Vorschaufunktionen gemacht, oder wenn man die Länge vorher noch nicht kennt, z.B. bei Strings mit Terminator, anstatt vorangestellter Länge.
[add] Ohhh, aber du kannst Glück haben, denn was kann man da sehen?
Delphi-Quellcode:
function TBinaryReader.PeekChar: Integer;
var
Position: Int64;
begin
Position := FStream.Position;
try
Result := InternalReadChar;
finally
FStream.Position := Position;
end;
end;
PS: Wenn man nur vorwärts springt und nie rückwärts, dann könnte man auch eine Skip-Funktion nutzen, bzw. "blind" die gewünschte Anzahl an Bytes lesen.
Das betrifft auch solche Streams, welche sich teilweise nicht beliebig umherschubsen lassen, wie z.B. einige Verschlüsselungs- und Komprimierungsstreams.