{ これは C++ コードのインターフェイスです。
C++ ソース コードはこのアーカイブには含まれていません。
詳細については、readme.txt ファイルを参照してください。 }
#ifndef __coding_h__
#define __coding_h__
#ifndef コーディング_impex
#definecoding_impex __declspec(dllimport)
#endif
クラスcoding_impex avldecode
{
公共:
~avldecode();
avldecode();
仮想 int 読み取りバッファ
( void*buf,
unsignedmaxlen、
署名なし&rdlen
) = 0;
intget(void *buf, unsignedmaxlen);
intget(void *buf, unsignedmaxlen, unsigned &rdlen)
{return ((int)(rdlen = get(buf, maxlen)) < 0)? rdlen :0 ;
}
無効なリセット();
プライベート:
?????????プライベート部分は含まれません??????????????????
};
クラスcoding_impex avlencode
{
公共:
~avlencode();
avlencode();
仮想 int ライトバッファ
( void*buf,
無署名
) = 0;
input(void *buf, unsignedn);
無効なリセット();
プライベート:
??????????プライベート部分は含まれていません????????????
};
#endif //__coding_h__
///エンコード.pas
{$m 8192,120000,120000}
avlcode を使用します。
const bufsize=60000;
var p: ポインタ;
f,f1: ファイル;
s: 文字列;
buf: ポインタ;
数字: 単語;
{$f+}
関数 writetofile(var buf; n: 整数): 整数;
変数番号: 単語;
始める
blockwrite(f1,buf,n,num);
終わり;
{$f-}
始める
getmemory でない場合は
始める
writeln('ファイルを圧縮するにはヒープに十分なメモリがありません。');
停止します。
終わり;
s:=paramstr(1);
setencodeoutbuffer(@writetofile);
割り当て(f,s);
{$i-}
s<>'' の場合、reset(f,1);
{$i+}
if (ioresult<>0) または (s='') then
始める
書く;
writeln('このターボ パスカル プログラムと元の C++ コードの作者は');
writeln('alexander larkin( 1999 年 9 月 27 日に C++ からターボ パスカルに翻訳されました )');
書く;
writeln('e-mail:[email protected]');
writeln('インターネット:http://www.geocities.com/siliconvalley/6235/tpdl.htm');
書く;
writeln('使用法: encode.exe infile outfile [パスワード]');
書く;
フリーメモリ;
停止します。
終わり;
s:=paramstr(2);
割り当て(f1,s);
{$i-}
if s<>'' then rewrite(f1,1);
{$i+}
if (ioresult<>0) または (s='') then
始める
閉じる(f);
writeln('検索ファイルを作成できません '+s);
フリーメモリ;
停止します。
終わり;
setpassword(paramstr(3));
getmem(buf,bufsize);
繰り返す
blockread(f,buf^,bufsize,num);
encodeput(buf^,num);
num<=0 になるまで;
if num<0 then writeln('ファイルを圧縮できません。何か間違っています。');
エンコードリセット;
閉じる(f);
閉じる(f1);
フリーメモリ;
終わり。
///デコード.pas
{$m 8192,120000,120000}
avlcode を使用します。
const bufsize=60000;
var p: ポインタ;
f,f1: ファイル;
s: 文字列;
buf: ポインタ;
数字: 単語;
{$f+}
関数 readfromfile(var buf; n: 整数; var rdlen: 整数): 整数;
始める
blockread(f,buf,n,rdlen);
読み取りファイル:=0;
終わり;
{$f-}
始める
getmemory でない場合は
始める
writeln('ファイルを解凍するにはヒープに十分なメモリがありません。');
停止します。
終わり;
s:=paramstr(1);
setdecodeinbuffer(@readfromfile);
割り当て(f,s);
{$i-}
s<>'' の場合、reset(f,1);
{$i+}
if (ioresult<>0) または (s='') then
始める
書く;
writeln('このターボ パスカル プログラムと元の C++ コードの作者は');
writeln('alexander larkin( 1999 年 9 月 27 日に C++ からターボ パスカルに翻訳されました )');
書く;
writeln('e-mail:[email protected]');
writeln('インターネット:http://www.geocities.com/siliconvalley/6235/tpdl.htm');
書く;
writeln('使用法: decode.exe infile outfile [パスワード]');
書く;
フリーメモリ;
停止します。
終わり;
s:=paramstr(2);
割り当て(f1,s);
{$i-}
if s<>'' then rewrite(f1,1);
{$i+}
if (ioresult<>0) または (s='') then
始める
閉じる(f);
writeln('ファイルを作成できません '+s);
フリーメモリ;
停止します。
終わり;
getmem(buf,bufsize);
setpassword(paramstr(3));
繰り返す
num:=decodeget(buf^,bufsize);
num<65535 の場合、 blockwrite(f1,buf^,num,num);
(num=0) または (num=65535) まで;
if num=65535 then writeln('エラー! データが破損しています。ファイルを解凍できません。');
閉じる(f);
閉じる(f1);
フリーメモリ;
終わり。