Thema: Delphi Löschen in einem Stream

Einzelnen Beitrag anzeigen

Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#1

Löschen in einem Stream

  Alt 22. Aug 2004, 22:19
@ all!

Ich möchte in einem Stream (FileStream) was löschen, quasi von x bis y soll raus.

Momentan mach ich das so:
Delphi-Quellcode:
 TempStream := TMemoryStream.Create;
 try
{------FS in TempStream kopieren---}
   FS.Seek(0, soFromBeginning);
   TempStream.CopyFrom(FS, FS.Size);
{------FS "leeren"-----------}
   FS.Free;
   FS := TFileStream.Create(BaumPfad, fmCreate);

{------Alles außer Ausschnitt zurückkopieren----}
   TempStream.Seek(0, soFromBeginning);
   FS.CopyFrom(TempStream, StartPos);
{------Größe des Ausschnitts überspringen------}
   TempStream.ReadBuffer(Len, SizeOf(Len));
   TempStream.Seek(Len, soFromCurrent);
   TempStream.ReadBuffer(Size, SizeOf(Size));
   TempStream.Seek(Size, soFromCurrent);
{------Daten hinter dem Ausschnitt wieder anfügen------}
   FS.CopyFrom(TempStream, TempStream.Size-TempStream.Position);
 finally
   TempStream.Free;
 end;
FS ist der FileStream
TempStream ist ein MemoryStream

Ich mach's momentan mit Free und Create, aber da gibt's doch sicher was besseres, oder?

Danke schonmal!
  Mit Zitat antworten Zitat