{ 这是 C++ 代码的接口。
c++ 源代码未包含在此存档中。
查看 readme.txt 文件以获取更多信息。 }
#ifndef __coding_h__
#定义__coding_h__
#ifndef 编码_impex
#definecoding_impex __declspec(dllimport)
#endif
类coding_impex avldecode
{
民众:
〜avldecode();
avl解码();
虚拟 int readbuf
(无效*缓冲区,
无符号最大长度,
无符号&rdlen
) = 0;
intget(void *buf, unsignedmaxlen);
intget(void *buf, unsignedmaxlen, unsigned &rdlen)
{返回((int)(rdlen = get(buf,maxlen))<0)? rdlen:0;
}
无效重置();
私人的:
???????不包括私人部分???????????????????
};
类coding_impex avlencode
{
民众:
〜avlencode();
avlencode();
虚拟 int writebuf
(无效*缓冲区,
无符号长度
) = 0;
输入(void *buf,无符号n);
无效重置();
私人的:
??????????私人部分不包括在内?????????????
};
#endif //__coding_h__
///编码.pas
{百万美元 8192,120000,120000}
使用 avlcode;
常量缓冲区大小=60000;
var p:指针;
f,f1:文件;
s:字符串;
buf:指针;
数字:单词;
{$f+}
函数 writetofile(var buf; n: 整数): 整数;
变量编号:单词;
开始
块写入(f1,buf,n,num);
结尾;
{$f-}
开始
如果没有获取内存那么
开始
writeln('堆中没有足够的内存来压缩文件。');
停止;
结尾;
s:=paramstr(1);
setencodeoutbuffer(@writetofile);
分配(f,s);
{$i-}
如果 s<>'' 则重置(f,1);
{$i+}
if (ioresult<>0) 或 (s='') then
开始
写;
writeln('这个turbo pascal程序和原始c++代码的作者是');
writeln('alexander larkin(于 1999 年 9 月 27 日从 C++ 翻译为 Turbo Pascal)');
写;
writeln('电子邮件:[电子邮件受保护]');
writeln('互联网:http://www.geocities.com/siliconvalley/6235/tpdl.htm');
写;
writeln('用法:encode.exe infile outfile [密码]');
写;
自由内存;
停止;
结尾;
s:=paramstr(2);
分配(f1,s);
{$i-}
如果 s<>'' 则重写(f1,1);
{$i+}
if (ioresult<>0) 或 (s='') then
开始
关闭(f);
writeln('无法创建查找文件'+s);
自由内存;
停止;
结尾;
设置密码(paramstr(3));
getmem(buf,bufsize);
重复
blockread(f,buf^,bufsize,num);
编码输入(buf^,num);
直到num<=0;
if num<0 then writeln('无法压缩文件。你做错了什么。');
编码器重置;
关闭(f);
关闭(f1);
自由内存;
结尾。
///解码.pas
{百万美元 8192,120000,120000}
使用 avlcode;
常量缓冲区大小=60000;
var p:指针;
f,f1:文件;
s:字符串;
buf:指针;
数字:单词;
{$f+}
函数 readfromfile(var buf; n: 整数; var rdlen: 整数): 整数;
开始
块读取(f,buf,n,rdlen);
从文件读取:=0;
结尾;
{$f-}
开始
如果没有获取内存那么
开始
writeln('堆中没有足够的内存来解压缩文件。');
停止;
结尾;
s:=paramstr(1);
setdecodeinbuffer(@readfromfile);
分配(f,s);
{$i-}
如果 s<>'' 则重置(f,1);
{$i+}
if (ioresult<>0) 或 (s='') then
开始
写;
writeln('这个turbo pascal程序和原始c++代码的作者是');
writeln('alexander larkin(于 1999 年 9 月 27 日从 C++ 翻译为 Turbo Pascal)');
写;
writeln('电子邮件:[电子邮件受保护]');
writeln('互联网:http://www.geocities.com/siliconvalley/6235/tpdl.htm');
写;
writeln('用法:decode.exe infile outfile [密码]');
写;
自由内存;
停止;
结尾;
s:=paramstr(2);
分配(f1,s);
{$i-}
如果 s<>'' 则重写(f1,1);
{$i+}
if (ioresult<>0) 或 (s='') then
开始
关闭(f);
writeln('无法创建文件'+s);
自由内存;
停止;
结尾;
getmem(buf,bufsize);
设置密码(paramstr(3));
重复
num:=decodeget(buf^,bufsize);
如果 num<65535 则 blockwrite(f1,buf^,num,num);
直到(num=0)或(num=65535);
if num=65535 then writeln('错误!数据损坏。无法解压文件。');
关闭(f);
关闭(f1);
自由内存;
结尾。