{ 這是 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);
自由記憶體;
結尾。