n := 0;
HeapSize := 0;
SubBitBuf := 0;
BitCount := 0;
BufPtr := 0;
FillChar(PtTable, SizeOf(PtTable),0);
FillChar(PtLen, SizeOf(PtLen),0);
BlockSize := 0;
{ The following variables are used by the compression engine only }
New(Heap);
FillChar(Heap^, SizeOf(Heap^),0);
FillChar(LenCnt, SizeOf(LenCnt),0);
Depth := 0;
FillChar(CFreq, SizeOf(CFreq),0);
FillChar(PFreq, SizeOf(PFreq),0);
FillChar(TFreq, SizeOf(TFreq),0);
FillChar(CCode, SizeOf(CCode),0);
FillChar(PtCode, SizeOf(PtCode),0);
CPos := 0;
OutputPos := 0;
OutputMask := 0;
Pos := 0;
MatchPos := 0;
Avail := 0;
Remainder := 0;
MatchLen := 0;
end;
{******************************** Interface Procedures ************************}
procedure LHACompress(InStr, OutStr: TStream);
begin
InitMemory;
try
InFile := InStr;
OutFile := OutStr;
OrigSize := InFile.Size - InFile.Position;
CompSize := 0;
OutFile.Write(OrigSize,4);
Encode;
finally
FreeMemory;
end;
end;
procedure LHAExpand(InStr, OutStr: TStream); //解码
begin
try
InitMemory;
InFile := InStr;
OutFile := OutStr;
CompSize := InFile.Size - InFile.Position;
InFile.Read(OrigSize,4);
Decode;
finally
FreeMemory;
end;
end;
INITIALIZATION
CLen := nil;
CTable := nil;
Right := nil;
Left := nil;
Buffer := nil;
Heap := nil;
END.
{******************************** Test Program ********************************}
{
The following simple program can be used for testing the LH5Unit.
It compresses/expands files compatible with LHArc.
}
program Testlh5;
uses
WinCRT,
SysUtils,
Classes,
Lh5Unit;
var
InStr, OutStr: TFileStream;
begin
IF NOT (ParamCount IN [2..3]) THEN
BEGIN
Writeln(''''Usage :'''');
Writeln(''''To compress infile into outfile : LH5 infile outfile'''');
Writeln(''''To expand infile into outfile : LH5 infile outfile E'''');
HALT;
END;
InStr := TFileStream.Create(Paramstr(1),fmOpenRead);
OutStr := TFileStream.Create(Paramstr(2),fmCreate);
IF ParamCount=2 THEN
LHACompress(InStr, OutStr)
ELSE
LHAExpand(InStr, OutStr);
InStr.Free;
OutStr.Free;
end.
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




