Skocz do zawartości

[Delphi] Kompresja/Dekompresja


Toster

Polecane posty

Witam,

Poscik moze trywialny ale z drugiej strony moze zaoszczedzic kilkunastu minut szukania w sieci (albo godzin :D ). Czyli jak zrobic kompresje w Delphi (TurboDelphi, a wlasciwie chyba od D6 wzwyz)

 

Otorz 2 metody do kompresji/dekompresji. Sa to obudowy do unitow znalezionych w Delphi wiec nic wyszukanego. przejdzmy do rzeczy:

 

KOD

uses ZLib, classes, SysUtils;

 

function CompresToStream(const name: string): TMemoryStream;

var

comp: TCompressionStream;

input: TFileStream;

begin

//metoda otwiera wskazany plik, kompresuje go do streama

input := TFileStream.Create(name, fmOpenRead);

Result := TMemoryStream.Create;

comp := TCompressionStream.Create(clMax, Result);

comp.CopyFrom(input, input.Size);

comp.Free;

input.Free;

end;

 

function DeCompresToStream(const input: TStream): TMemoryStream;

var

decomp: TDecompressionStream;

t: integer;

buffer: array[0..32*1024] of byte;

begin

//dekompresja stramu wejsciowego do wyjsciowego

Result := TMemoryStream.Create;

decomp := TDecompressionStream.Create(input);

t := 1;

while t > 0 do begin

t := decomp.Read(buffer[0], 32*1024);

Result.Write(buffer[0], t);

end;

decomp.Free;

input.Free;

end;

 

 

Pierwsza metoda otwiera plik, dekompresuje go, a wynik zwraca w postaci TMemoryStream.

Druga metoda przyjmuje jakis stream wejsciowy a wyrzuca TMemoryStream ze skompresowana zawartoscia.

Z uwagi na uzycie TMemoryStreamow nie poleca sie kompresji/dekompresji filmow ;)

Mam nadzieje ze sie komus przyda (przynajmniej jako wzorzec jak sie za to szybko i bezbolesnie zabrac)

 

No i najwazniejsze z moich obserwacji wynika ze nie sa potrzebne dodatkowe dll'ki, najwyrazniej wszystko co jest potrzebne znajduje sie obj'tach wkompilowany w nasz program ;)

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

O widzisz :)

Ja musialem jak noob: -> przeryc googla -> zaciagnac zliba -> znalezc do niego naglowki -? przeczytac readme.txt aby sie dowiedziec ze od D6 jest to na bazie w delphi -> poszukac w katalogu delphi ze zrodlami -> przeczytac opis w unicie -> wepchnac swoj kijek w szprychy -> napisac te 2 procki :)

Damn.. musze poprawic swoj algorytm poszukiwania ;D

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

też coś o tym pisałem :D : http://www.unit1.pl/174,txt :rolleyes:

soon Delphi will be only for veterans and finally we all will die at the end…

delphi.dathox.com - nowinki z świata Delphi/Pascala

only programmers and drug dealers call their customers "users"

 

Oto cisza przed burzą, Chwile się dłużą.Z gór schodzi dużo chmur ku podnóżom.Ptaki milaczą, drogi suche jak wiór się kurzą, Ptaki milczą a drogi się kurzą.

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...