{ esta é a interface do código c++.
código-fonte c++ não incluído neste arquivo.
consulte o arquivo readme.txt para obter mais informações. }
#ifndef __codificação_h__
#define __codificação_h__
#ifndef codificação_impex
#define coding_impex __declspec(dllimport)
#endif
classe coding_impex avldecode
{
público:
~avldecode();
avldecode();
virtual int readbuf
( vazio * buf,
maxlen não assinado,
não assinado &rdlen
) = 0;
intget(void *buf, unsignedmaxlen);
intget(void *buf, unsignedmaxlen, unsigned &rdlen)
{retornar ((int)(rdlen = get(buf, maxlen)) < 0)? rdlen :0 ;
}
void reset();
privado:
????????? parte privada não incluída ???????????????????
};
classe coding_impex avlencode
{
público:
~avlencode();
avlencode();
virtual int writebuf
( vazio * buf,
não assinado
) = 0;
entrada(void *buf, não assinadon);
void reset();
privado:
?????????? parte privada não incluída ???????????????
};
#endif //__codificação_h__
///encode.pas
{$ milhões 8192.120000.120000}
usa avlcodes;
const tamanhobuff=60000;
var p: ponteiro;
f,f1: arquivo;
s: corda;
buf: ponteiro;
num: palavra;
{$f+}
função writetofile(var buf; n: inteiro): inteiro;
var num: palavra;
começar
escreverbloco(f1,buf,n,num);
fim;
{$f-}
começar
se não conseguir memória então
começar
writeln('memória insuficiente no heap para compactar o arquivo.');
parar;
fim;
s:=paramstr(1);
setencodeoutbuffer(@writetofile);
atribuir(f,s);
{$i-}
se s<>'' então reset(f,1);
{$i+}
se (iresultado<>0) ou (s='') então
começar
escrever;
writeln('o autor deste programa turbo pascal e do código c++ original é');
writeln('alexander larkin( traduzido para turbo pascal de c++ em 27/09/1999 )');
escrever;
writeln('e-mail:[e-mail protegido]');
writeln('internet:http://www.geocities.com/siliconvalley/6235/tpdl.htm');
escrever;
writeln('uso: encode.exe arquivo de saída do arquivo [senha]');
escrever;
memória livre;
parar;
fim;
s:=paramstr(2);
atribuir(f1,s);
{$i-}
se s<>'' então reescrever(f1,1);
{$i+}
se (iresultado<>0) ou (s='') então
começar
fechar(f);
writeln('não é possível criar arquivo de busca '+s);
memória livre;
parar;
fim;
setpassword(paramstr(3));
getmem(buf,bufsize);
repita
blockread(f,buf^,bufsize,num);
codificarput(buf^,num);
até num<=0;
if num<0 then writeln('não é possível compactar o arquivo. você fez algo errado.');
redefinição de codificação;
fechar(f);
fechar(f1);
memória livre;
fim.
///decode.pas
{$ milhões 8192.120000.120000}
usa avlcodes;
const tamanhobuff=60000;
var p: ponteiro;
f,f1: arquivo;
s: corda;
buf: ponteiro;
num: palavra;
{$f+}
função readfromfile(var buf; n: inteiro; var rdlen: inteiro): inteiro;
começar
leitura de bloco(f,buf,n,rdlen);
lerdoarquivo:=0;
fim;
{$f-}
começar
se não conseguir memória então
começar
writeln('memória insuficiente no heap para descompactar o arquivo.');
parar;
fim;
s:=paramstr(1);
setdecodeinbuffer(@readfromfile);
atribuir(f,s);
{$i-}
se s<>'' então reset(f,1);
{$i+}
se (iresultado<>0) ou (s='') então
começar
escrever;
writeln('o autor deste programa turbo pascal e do código c++ original é');
writeln('alexander larkin( traduzido para turbo pascal de c++ em 27/09/1999 )');
escrever;
writeln('e-mail:[e-mail protegido]');
writeln('internet:http://www.geocities.com/siliconvalley/6235/tpdl.htm');
escrever;
writeln('uso: decode.exe arquivo de saída do arquivo [senha]');
escrever;
memória livre;
parar;
fim;
s:=paramstr(2);
atribuir(f1,s);
{$i-}
se s<>'' então reescrever(f1,1);
{$i+}
se (iresultado<>0) ou (s='') então
começar
fechar(f);
writeln('não é possível criar arquivo '+s);
memória livre;
parar;
fim;
getmem(buf,bufsize);
setpassword(paramstr(3));
repita
num:=decodeget(buf^,bufsize);
se num<65535 então blockwrite(f1,buf^,num,num);
até (num=0) ou (num=65535);
se num = 65535 então writeln ('erro! dados corrompidos. não é possível descompactar o arquivo.');
fechar(f);
fechar(f1);
memória livre;
fim.