Einzelnen Beitrag anzeigen

Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#1

Exception bei TStream.CopyFrom()

  Alt 21. Jan 2008, 18:54
Guten Abend Forum ...

Ich sitze jetzt schon ziemlich lange an einer kleinen Funktion, die mich zur Weißglut treibt.. Hätte ich nicht eine kleine Pause eingelegt, wäre meine Maus jetzt vermutlich durch die vielen Schläge auf den Tisch nicht mehr funktionsfähig.. und damit das auch später nicht passiert, belästige ich euch einfach mal...

Zum Thema: Ich habe mir einen Nachfahren von TMemoryStream gebaut und diesem eine Prozedur RemoveRange verpasst.. das sieht so aus:
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
    begin
      Seek(Count, soFromCurrent); // Bei FromOffset=0, einfach Count Bytes überspringen
    end else
    begin
      OutStream.CopyFrom(Self, FromOffset); // Den Anfang kopieren
      Seek(Count, soFromCurrent); // Count Bytes überspringen
    end;

    if Size - Position > 0 then
      OutStream.CopyFrom(Self, Size - Position); // Ende kopieren

    Clear;
    if OutStream.Size > 0 then
      CopyFrom(OutStream, 0);
  finally
    OutStream.Free;
  end;
end;
Ich möchte damit eben ab Position FromOffset Count Bytes wegmachen. Die Funktion habe ich mit einer kleinen Textdatei getestet, aus der ich einzelne Wörter herausschneide, hat super geklappt. Jetzt habe ich das Teil mal benutzt, um eine Datei zu bearbeiten und bei dem letzten CopyFrom gibt es immer eine Exception. OutStream ist natürlich vorhanden und OutStream.Size ist wohl irgendwas bei 20000 Bytes... Warum klappt das nicht? Das müsste doch einfach nur gehen...? Ich vermute mal, ich mache irgendeinen dummen Fehler.. Aber ich komme einfach nicht dahinter.... und jetzt werde ich eine kleine Pause einlegen um mich zu beruhigen.. und um auf Antworten zu warten, für die ich mich schon im Vorraus bedanke ...
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat