Welche
Exception kommt überhaupt? Das wäre echt mal witzig zu erfahren...
Und nochwas: CopyFrom() bewegt den Dateizeiger mit. Also das Seek nach dem CopyFrom() wird dir vllt. das Genick brechen, da der Dateizeiger zu weit bewegt wurde...
Was macht deine Methode Clear? Setzt sie Size und auch
Position ordentlich zurück?
Ein wenig gekürzt:
Delphi-Quellcode:
procedure TMeinStream.RemoveRange(FromOffset: Integer; Count: Integer);
var
OutStream: TMemoryStream;
begin
OutStream := TMemoryStream.Create;
try
Position := 0; // An Anfang gehen
if FromOffset > 0 then
OutStream.CopyFrom(Self, FromOffset); // Den Anfang kopieren
Seek(Count, soFromCurrent); // Count Bytes überspringen
if Size - Position > 0 then
OutStream.CopyFrom(Self, Size - Position); // Ende kopieren
// im Normalfall so, deshalb hat kein TStream Nachfahre ein Clear (siehe z.B. TMemoryStream)
Size := 0;
if OutStream.Size > 0 then
CopyFrom(OutStream, 0);
finally
OutStream.Free;
end;
end;