Statt StreamPosition kann man auch DataStream.Position verwenden, aber ihr wollt nicht wissen wie grauenhaft diesbezüglich der der TMemoryStream implementiert ist,
aber im Normalfall sollte es oftmals nicht groß auffallen.
Was meinst du? Das sieht für mich eigentlich gut aus:
Delphi-Quellcode:
function TStream.GetPosition: Int64;
begin
Result := Seek(0, soCurrent);
end;
function TCustomMemoryStream.Seek(const Offset: Int64; Origin: TSeekOrigin): Int64;
begin
case Origin of
soBeginning: FPosition := Offset;
soCurrent: Inc(FPosition, Offset);
soEnd: FPosition := FSize + Offset;
end;
Result := FPosition;
end;
Sprich für die Abfrage der Position wird die Position mit Inc um 0 erhöht (Seek weiß ja nicht, dass das unnötig ist), und dann die Position direkt zurückgeliefert. Wie sollte das sonst passieren, als auf diesem Standardweg für TStream-Nachfahren?