[Gelöst} Fehler "Writing to TStream is not supported" in CompressStream

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.
Antworten
Benutzeravatar
KoBraSoft
Beiträge: 125
Registriert: So 6. Jun 2021, 09:57
OS, Lazarus, FPC: die zu Zeit aktuellen Versionen, überwiegend Linux
CPU-Target: 64Bit 32 Bit
Kontaktdaten:

[Gelöst} Fehler "Writing to TStream is not supported" in CompressStream

Beitrag von KoBraSoft »

Hallo,
ich versuche einen StringStream zu komprimieren.

Dazu möchte ich die Prozedur

Code: Alles auswählen

CompressStream
aus tppdf.pp aus fcl-pdf verwenden.

Code: Alles auswählen

procedure TForm1.Button3Click(Sender: TObject);
var
  S : TStringStream;
  T : TStream;
begin
  S := TStringStream.Create(...
  
  try
    T := TStream.Create;
    CompressStream(S,T);

 
  finally
    T.Free;
    S.Free;
  end;          
Ich erhalte die Fehlermeldung:

Code: Alles auswählen

Writing to TStream is not supported
Ich verstehe, dass CompressStream zwei TStreams erwartet, ich aber einen StringStream und einen TStream übergebe.
Mein (recht bescheidenes) Können reicht aber nicht aus zu erkennen, ob das die Fehlerursache ist noch, wie ich das heilen kann.
Was verurschacht diesen Fehler?
Zuletzt geändert von KoBraSoft am Sa 28. Dez 2024, 15:21, insgesamt 1-mal geändert.
Konrad

www.KoBraSoft.de

Benutzeravatar
theo
Beiträge: 10916
Registriert: Mo 11. Sep 2006, 19:01

Re: Fehler "Writing to TStream is not supported" in CompressStream

Beitrag von theo »

TStream ist nur eine abstrakte Basisklasse. Man kann sie so nicht verwenden.
TStream.Create ergibt nichts Brauchbares (Hat keinen Speicher).
Du musst eine Ableitung davon verwenden (TMemoryStream, TFileStream, TStringStream...)

Aber die Deklaration kannst du so lassen, wenn du möchtest. Du kannst dann einfach nur auf alles Vererbte zugreifen.
Das wäre OK:

Code: Alles auswählen

var
  T : TStream;
begin
  T := TMemoryStream.Create;

Benutzeravatar
KoBraSoft
Beiträge: 125
Registriert: So 6. Jun 2021, 09:57
OS, Lazarus, FPC: die zu Zeit aktuellen Versionen, überwiegend Linux
CPU-Target: 64Bit 32 Bit
Kontaktdaten:

[Gelöst]Re: Fehler "Writing to TStream is not supported" in CompressStream

Beitrag von KoBraSoft »

theo hat geschrieben: Sa 28. Dez 2024, 11:16 TStream ist nur eine abstrakte Basisklasse. Man kann sie so nicht verwenden.
TStream.Create ergibt nichts Brauchbares (Hat keinen Speicher).
Du musst eine Ableitung davon verwenden (TMemoryStream, TFileStream, TStringStream...)

Aber die Deklaration kannst du so lassen, wenn du möchtest. Du kannst dann einfach nur auf alles Vererbte zugreifen.
Das wäre OK:

Code: Alles auswählen

var
  T : TStream;
begin
  T := TMemoryStream.Create;
So einfach. Wieder was gelernt. Danke
Konrad

www.KoBraSoft.de

Antworten