Einzelnen Beitrag anzeigen

Relicted

Registriert seit: 24. Jan 2006
Ort: Iserlohn
646 Beiträge
 
Delphi 10.4 Sydney
 
#1

Probleme mit TCompressStream

  Alt 26. Jul 2008, 17:18
Nabend!

Bräuchte mal Eure Hilfe - weiß leider nicht weiter.
Ich habe eine Klasse, welche Objekte enthält die ich in einer Datei speichern möchte. Möglichst komprimiert. Leider bekomme ich eine Exception beim kopieren des Compressstreams in den FileStream bekomme ich eine Exception - wieso auch immer! "Ungültige Stream Operation".

Die Daten werden scheinbar aber geschrieben. Vielleicht kann mir wer sagen woran es liegt?

Delphi-Quellcode:
var
  coFileOUT : TFileStream;
  coCompressStream : TCompressionStream;
begin
  result := false;
  coFileOUT := TFileStream.Create( sFileName, fmCreate );
  try
    coCompressStream := TCompressionStream.Create(clMax, coFileOUT);
    try
      Self.SaveToStream( coCompressStream );
      coFileOUT.Position := 0;
// coFileOUT.WriteBuffer( coCompressStream, coCompressStream.Size );
      coFileOUT.CopyFrom(coCompressStream, coCompressStream.Size);
    finally
      FreeAndNil( coCompressStream );
    end;
  finally
    FreeAndNil( coFileOUT );
  end;
  result := true;
Hier knallt es sowohl bei dem "CopyFrom" als auch bei "WriteBuffer".


Die "SaveToStream" Methode ist aus TStringList bzw. TStrings geklaut.

Delphi-Quellcode:
var
  s : string;
  i: Integer;
begin
  s := '';

  // Zusammenbauen von "S" ... eher unwichtig dafür

  // Und rein in den Stream!
  coStream.WriteBuffer(Pointer(S)^, Length(S));
Die Funktion tut das was sie soll...


Jemand eine Idee wo der Fehler liegt?


Gruß
Reli
  Mit Zitat antworten Zitat