Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Suche die TByteBuffer Klasse aus SysUtils ab XE 3 (?)

  Alt 18. Okt 2013, 14:40
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?
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat