Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > LZMA Lib Decompression Sample


Автор: Zm3x 20.5.2015, 16:21
приветствую, вот https://github.com/ccy/delphi-zip нашёл реализацию библиотеки для компресси с использованием lzma, и все бы хороше но не могу понять как реализовать декомпрессию.
Там в либе есть unit System.Zip.LZMA

В нем класс TLZMAEncoderStream  и TLZMADecoderStream .

С классом TLZMAEncoderStream  все понятно, но как быть с TLZMADecoderStream ?

Написал на коленке такой вот сэмпл:
компрессия - Ok, а декомпрессия чето никак :(, шо делать люди добрые ?

Код


procedure TForm2.Progress(Sender: TObject; const aPosition, aSize, aCompressedSize: UInt64);
begin
end;

procedure TForm2.DeProgress(Sender: TObject; const aPosition, aSize: UInt64);
begin
end;

procedure TForm2.Button1Click(Sender: TObject);
var LZI: TLZMAEncoderStream;  OutStream, InStream: TMemoryStream;
begin
     OutStream:= TMemoryStream.Create;
     LZI := TLZMAEncoderStream.Create(OutStream,  Progress);
     InStream:= TMemoryStream.Create;
     InStream.LoadFromFile('1.exe');
     InStream.Position := 0;
     LZI.Write(InStream, InStream.Size);
     OutStream.Position := 0;
     OutStream.SaveToFile('enc2.exe');
     InStream.Free;
     OutStream.Free;
     LZI.Free;
end;

procedure TForm2.Button2Click(Sender: TObject);
var Deca: TLZMADecoderStream;    Str1: TMemoryStream; S2 : TBytesStream;   I: Integer;
begin
    I := 0;
    Str1 := TMemoryStream.Create;
    Str1.LoadFromFile('enc2.exe');
    Str1.Position := 0;
    Deca:= TLZMADecoderStream.Create(Str1, DeProgress);
   S2   := TBytesStream.Create;
   Deca.Read(S2.Bytes, 0, i);
   S2.Position := 0;
   S2.SaveToFile('Dec0.exe');
   Str1.Free;
   S2.Free;
end;



Автор: ZBugz 22.5.2015, 07:25
Почитай тут http://pblog.ru/?p=67

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)