{ this is interface of c++ code.
c++ source code not included to this archive.
look readme.txt file for more information. }
#ifndef __coding_h__
#define __coding_h__
#ifndef coding_impex
#define coding_impex __declspec(dllimport)
#endif
class coding_impex avldecode
{
public:
~avldecode();
avldecode();
virtual int readbuf
( void*buf,
unsignedmaxlen,
unsigned &rdlen
) = 0;
intget(void *buf, unsignedmaxlen);
intget(void *buf, unsignedmaxlen, unsigned &rdlen)
{return ((int)(rdlen = get(buf, maxlen)) < 0)? rdlen :0 ;
}
void reset();
private:
????????? private part not included ???????????????????
};
class coding_impex avlencode
{
public:
~avlencode();
avlencode();
virtual int writebuf
( void*buf,
unsignedlen
) = 0;
intput(void *buf, unsignedn);
void reset();
private:
?????????? private part not icluded ?????????????
};
#endif //__coding_h__
///encode.pas
{$m 8192,120000,120000}
uses avlcodes;
const bufsize=60000;
var p: pointer;
f,f1: file;
s: string;
buf: pointer;
num: word;
{$f+}
function writetofile(var buf; n: integer): integer;
var num: word;
begin
blockwrite(f1,buf,n,num);
end;
{$f-}
begin
if not getmemory then
begin
writeln('not enough memory in heap to compress file.');
halt;
end;
s:=paramstr(1);
setencodeoutbuffer(@writetofile);
assign(f,s);
{$i-}
if s<>'' then reset(f,1);
{$i+}
if (ioresult<>0) or (s='') then
begin
writeln;
writeln('the author of this turbo pascal program and original c++ code is');
writeln('alexander larkin( translated to turbo pascal from c++ on 27/09/1999 )');
writeln;
writeln('e-mail:[email protected]');
writeln('internet:http://www.geocities.com/siliconvalley/6235/tpdl.htm');
writeln;
writeln('usage: encode.exe infile outfile [password]');
writeln;
freememory;
halt;
end;
s:=paramstr(2);
assign(f1,s);
{$i-}
if s<>'' then rewrite(f1,1);
{$i+}
if (ioresult<>0) or (s='') then
begin
close(f);
writeln('cannot create find file '+s);
freememory;
halt;
end;
setpassword(paramstr(3));
getmem(buf,bufsize);
repeat
blockread(f,buf^,bufsize,num);
encodeput(buf^,num);
until num<=0;
if num<0 then writeln('cannot compress file. you do something wrong.');
encodereset;
close(f);
close(f1);
freememory;
end.
///decode.pas
{$m 8192,120000,120000}
uses avlcodes;
const bufsize=60000;
var p: pointer;
f,f1: file;
s: string;
buf: pointer;
num: word;
{$f+}
function readfromfile(var buf; n: integer; var rdlen: integer): integer;
begin
blockread(f,buf,n,rdlen);
readfromfile:=0;
end;
{$f-}
begin
if not getmemory then
begin
writeln('not enough memory in heap to decompress file.');
halt;
end;
s:=paramstr(1);
setdecodeinbuffer(@readfromfile);
assign(f,s);
{$i-}
if s<>'' then reset(f,1);
{$i+}
if (ioresult<>0) or (s='') then
begin
writeln;
writeln('the author of this turbo pascal program and original c++ code is');
writeln('alexander larkin( translated to turbo pascal from c++ on 27/09/1999 )');
writeln;
writeln('e-mail:[email protected]');
writeln('internet:http://www.geocities.com/siliconvalley/6235/tpdl.htm');
writeln;
writeln('usage: decode.exe infile outfile [password]');
writeln;
freememory;
halt;
end;
s:=paramstr(2);
assign(f1,s);
{$i-}
if s<>'' then rewrite(f1,1);
{$i+}
if (ioresult<>0) or (s='') then
begin
close(f);
writeln('cannot create file '+s);
freememory;
halt;
end;
getmem(buf,bufsize);
setpassword(paramstr(3));
repeat
num:=decodeget(buf^,bufsize);
if num<65535 then blockwrite(f1,buf^,num,num);
until (num=0) or (num=65535);
if num=65535 then writeln('error! data corrupted. cannot decompress file.');
close(f);
close(f1);
freememory;
end.