Erstmal das TStream, wie schon erwähnt, damit es vielseitiger verwendbar ist.
PS: man muß einen TStream auch nicht nur in einer TStream-Variable ablegen.
Die Funktion von .Read und .Write bitte prüfen.
http://www.delphipraxis.net/internal...144663#1144663
Und ich würe bei beiden Funktionen noch zusätzlich einen weiteren (optionalen) Parameter einfügen.
Einen weiteren TStream, welcher die Daten enthält/erhält, welche eingefügt oder entfernt werden sollen.
Delphi-Quellcode:
procedure InsertData(Stream: TStream; const P, Len: Int64;
Insert: TStream = nil); overload;
procedure InsertData(Stream: TStream; const P: Int64; Len: Cardinal;
Insert: Pointer); overload;
procedure RemoveData(Stream: TStream; const P, Len: Int64;
Removed: TStream = nil); overload;
procedure RemoveData(Stream: TStream; const P: Int64; Len: Cardinal;
Removed: Pointer); overload;
So könnte man auch gleichzeitig und über den selben Befehl die neuen Daten in die Lücke einfügen oder die entfernten Daten auslesen.
Als Puffergröße sieht eine $00010000 (runde 64 KB) auch nicht sooo schlecht aus.
PS: Das Ganze über eine Klasse zusammengefaßt oder gar als Class Helper für TStream wäre nicht verkehrt.