Вход
Логин: Пароль:Забыли пароль?
Запомнить вас на этом компьютере?
Войти скрытым?

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
[Source - Delphi], [Source - Delphi]Compress/Decompress *.enc files

Барклай
сообщение 25.10.2010, 12:41
Сообщение #1


Модэратор-не бог,забаненый не прокаженный
*******
Группа: Проверенные
Сообщений: 684
Регистрация: 18.7.2009
Пользователь №: 7136
Спасибо сказали: 333 раз(а)



Репутация:   0  
Для просмотра этого блока необходима регистрация


Свёрнутая информация:
procedure DecompressFile(const SourceFile, DestFile: string);
var
SourceStream: TStream;
ZLibStream: TStream;
DestStream: TStream;
DecSize: Cardinal;
Ms: TStream;
i: Integer;
Data: TBytes;
MsOut: TStream;
begin
SourceStream := TFileStream.Create(SourceFile, fmOpenRead);
Ms := TMemoryStream.Create;
MsOut := TMemoryStream.Create;

Ms.CopyFrom(SourceStream, SourceStream.Size);
Ms.Position := 0;

SetLength(Data, Ms.Size);
Ms.Read(Data[0], Ms.Size);
DecSize := PDword(@Data[0])^;

for i := 0 to 3 do
Data[i + 4] := Data[i + 4] xor Xorkey[i mod 4];

MsOut.Size := Length(Data);
MsOut.Write(Data[0], Length(Data));
MsOut.Position := 4;
try
ZLibStream := TZDecompressionStream.Create(MsOut, -15);
try
DestStream := TFileStream.Create(DestFile, fmCreate or fmShareExclusive);
try
ZLibStream.Read(Data[0], SizeOf(DecSize));
DestStream.Write(Data[0],SizeOf(DecSize));
DestStream.CopyFrom(ZLibStream, DecSize -4);
finally
DestStream.Free;
end;
finally
ZLibStream.Free;
end;
finally
SourceStream.Free;
Ms.Free;
MsOut.Free;
end;
end;


Свёрнутая информация:
procedure CompressFile(const SourceFile, DestFile: string);
var
SourceStream: TStream;
ZLibStream: TStream;
DestStream: TStream;
DecSize, FixShit: Integer;
i: Integer;
Data: TBytes;
begin
SourceStream := TFileStream.Create(SourceFile, fmOpenRead);
try
DecSize := SourceStream.Size;
DestStream := TFileStream.Create(DestFile, fmCreate or fmShareExclusive);

DestStream.Write(DecSize,SizeOf(DecSize));
try
ZLibStream := TZCompressionStream.Create(DestStream, zcFastest , -15, 8, zsDefault);
try
repeat
FixShit := SourceStream.Read(DecSize, SizeOf(DecSize));
ZLibStream.Write(DecSize, FixShit);
until FixShit = 0;
finally
ZLibStream.Free;
end;

SetLength(Data, DestStream.Size);
DestStream.Position := 0;
DestStream.Read(Data[0],Length(Data));
DestStream.Position := 0;

for i := 0 to 3 do
Data[i + 4] := Data[i + 4] xor Xorkey[i mod 4];

DestStream.Write(Data[0],Length(Data));
finally
DestStream.Free;
end;
finally
SourceStream.Free;
end;
end;


Для просмотра этого блока необходима регистрация

ссылка скрыта от гостей (авторизуйтесь)



ссылка скрыта от гостей (авторизуйтесь)

Перейти в начало страницы
+Цитировать сообщение

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
Нет новых [Release] Source Louis Emulator S4 S6 S8 (update 13)
Актуальная версия (Update 20)
9 vadimash_rs 1193 30.10.2020, 9:38 Посл. сообщение: Darki123
Нет новых DMNCms 1.2.1 Open Source
MuOnline Web dmncms
9 ausmann 613 24.9.2020, 17:14 Посл. сообщение: Profesor08
Нет новых Ex-Team Latest Complete source code
S6EP3
104 Wendigo 7495 2.8.2020, 21:30 Посл. сообщение: dizzy
Нет новых сообщений Source codes
8 OLDBOY 4525 13.11.2019, 13:07 Посл. сообщение: Wendigo
Нет новых Connect Server on JAVA (OPEN SOURCE)
26 Mr.Kernighan 2183 24.7.2019, 19:55 Посл. сообщение: ausmann

 

RSS Текстовая версия Сейчас: 26.1.2021, 14:36
Яндекс.Метрика  Перевод с помощью Google English French German Italian Portuguese Russian Spanish