📄 apunpack.pas
字号:
program test__aplib_depack;
(*
* aPLib compression library - the smaller the better :)
*
* VPascal depacking example
*
* Copyright (c) 1998-2002 by Joergen Ibsen / Jibz
* All Rights Reserved
*
* -> VPascal by Veit Kannegieser, 23.09.1998
*)
{$IfDef DYNAMIC_VERSION}
uses aplibud;
{$Else}
uses aplibu;
{$EndIf}
var
infile ,outfile :file;
inbuffer ,outbuffer :pointer;
insize ,outsize :longint;
outmemsize :longint;
begin
(* check number of parameters *)
if ParamCount<1 then
begin
WriteLn;
WriteLn('Syntax: APUNPACK <input file> [output file]');
WriteLn;
Halt(1);
end;
(* open input file and read header *)
Assign(infile,ParamStr(1));
Reset(infile,1);
insize:=FileSize(infile);
(* get mem and read input file *)
GetMem(inbuffer,insize);
BlockRead(infile,inbuffer^,insize);
Close(infile);
(* get original size from header and get mem *)
outmemsize := _aPsafe_get_orig_size(inbuffer^);
GetMem(outbuffer,outmemsize);
(* unpack data *)
outsize:=_aPsafe_depack_asm_fast(inbuffer^,outbuffer^);
(* or: :=_aPsafe_depack_asm (inbuffer^,outbuffer^); *)
if outsize<>outmemsize then Halt(1);
(* write unpacked data *)
if ParamCount<2 then
begin
Assign(outfile,'out.dat');
WriteLn;
WriteLn('No output file specified, writing to ''out.dat''');
end
else
Assign(outfile,ParamStr(2));
Rewrite(outfile,1);
BlockWrite(outfile,outbuffer^,outsize);
Close(outfile);
(* free mem *)
Dispose(inbuffer);
Dispose(outbuffer);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -