AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Komprimiertes Speichern von Virtual Stringtree / Stream
Thema durchsuchen
Ansicht
Themen-Optionen

Komprimiertes Speichern von Virtual Stringtree / Stream

Ein Thema von friedemann2009 · begonnen am 13. Aug 2011 · letzter Beitrag vom 14. Aug 2011
Antwort Antwort
Seite 2 von 2     12   
friedemann2009

Registriert seit: 10. Feb 2010
49 Beiträge
 
#11

AW: Komprimiertes Speichern von Virtual Stringtree / Stream

  Alt 14. Aug 2011, 08:20
Welche Delphiversion nutzt du eigentlich?
Es gibt da auch Delphi-Referenz durchsuchenTZCompressionStream und Delphi-Referenz durchsuchenTZDecompressionStream in der unit ZLib, diese Stream hängst du direkt an den TFileStream und übergibst sie der Speicherroutine, damit wird direkt komprimiert und gleich abgespeichert ... spart enorm viel an Arbeitsspeicher.
Hm, das hörte sich doch interessant an, zumal es vlt. doch die Performance erhöhen könnte. Nur, was meinst Du mit "an den TFileStream dranhängen"?

Gruß, frieder

EDIT: Ok, hat sich wohl erledigt; TCompressionStream gibt es lt. Forum erst ab D7...

Geändert von friedemann2009 (14. Aug 2011 um 08:23 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.196 Beiträge
 
Delphi 12 Athens
 
#12

AW: Komprimiertes Speichern von Virtual Stringtree / Stream

  Alt 14. Aug 2011, 09:43
Im Prinzip könnte man sowas selber Implementieren.

TZCompressionStream ist nach außen ein Stream, welchen man nun an SaveToStream übergeben könnte.
Im Constructor gibt man diesem aber einen anderen Stream mit, wie z.B. einen TFileStream.

Alles was reinkommt, wird komprimiert und an den anderen Stream weitergegeben.




Dieser komprimierte Stream ist aber mit nichts kompatibel, kann also nur mit dem beigelegten TDecompessStream entpackt werden.
Delphi-Quellcode:
program Project2;

{$APPTYPE CONSOLE}

uses SysUtils, SimpleCompressStream;

var
  C: TCompessStream;
  D: TDecompessStream;
  X: AnsiString;
begin
  try
    C := TCompessStream.Create(ChangeFileExt(ParamStr(0), '.dat'));
    try
      X := '123456789';
      C.WriteBuffer(X[1], Length(X));

      X := 'abcdefghij'; // Mehreres in einem Kompressionsteil simulieren
      C.WriteBuffer(X[1], Length(X));

      C.Flush; // einen neuen Kompressionsteil simulieren
      X := 'klmnopqrstubwxyz';
      C.WriteBuffer(X[1], Length(X));
    finally
      C.Free;
    end;

    D := TDecompessStream.Create(ChangeFileExt(ParamStr(0), '.dat'));
    try
      SetLength(X, 9);
      D.ReadBuffer(X[1], Length(X));
      WriteLn(X); // 123456789

      SetLength(X, 10);
      D.ReadBuffer(X[1], Length(X));
      WriteLn(X); // abcdefghij

      SetLength(X, 16);
      D.ReadBuffer(X[1], Length(X));
      WriteLn(X); // klmnopqrstubwxyz
    finally
      D.Free;
    end;

    D := TDecompessStream.Create(ChangeFileExt(ParamStr(0), '.dat'));
    try
      SetLength(X, 35);
      D.ReadBuffer(X[1], Length(X));
      WriteLn(X); // 123456789abcdefghijklmnopqrstubwxyz
    finally
      D.Free;
    end;
    WriteLn('ende...');
    ReadLn;
  except
    on E: Exception do begin
      WriteLn(E.ClassName, ': ', E.Message);
      ReadLn;
    end;
  end;
end.
Angehängte Dateien
Dateityp: pas SimpleCompressStream.pas (4,9 KB, 7x aufgerufen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (14. Aug 2011 um 09:46 Uhr)
  Mit Zitat antworten Zitat
FredlFesl

Registriert seit: 19. Apr 2011
293 Beiträge
 
Delphi 2009 Enterprise
 
#13

AW: Komprimiertes Speichern von Virtual Stringtree / Stream

  Alt 14. Aug 2011, 09:54
1GB-Daten in einem VST? Wer schaut sich sowas denn an?
Das Bild hängt schief.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz