{ 이것은 C++ 코드의 인터페이스입니다.
C++ 소스 코드는 이 아카이브에 포함되지 않습니다.
자세한 내용은 readme.txt 파일을 참조하세요. }
#ifndef __coding_h__
#define __coding_h__
#ifndefcoding_impex
#definecoding_impex __declspec(dllimport)
#endif
클래스 코딩_impex avldecode
{
공공의:
~avldecode();
avldecode();
가상 정수 readbuf
( void*buf,
서명되지 않은 최대 렌,
서명되지 않은 &rdlen
) = 0;
intget(void *buf, unsignedmaxlen);
intget(void *buf, unsignedmaxlen, unsigned &rdlen)
{return ((int)(rdlen = get(buf, maxlen)) < 0)? rdlen :0 ;
}
무효 재설정();
사적인:
????????? 개인 부분은 포함되지 않습니다 ????????????????????
};
클래스 코딩_impex avlencode
{
공공의:
~avlencode();
에이블렌코드();
가상 정수 writebuf
( void*buf,
부호 없는
) = 0;
intput(void *buf, unsignedn);
무효 재설정();
사적인:
???????????? 비공개 부분은 포함되지 않음 ????????????
};
#endif //__coding_h__
///encode.pas
{$m 8192,120000,120000}
avlcode를 사용합니다.
const bufsize=60000;
var p: 포인터;
f,f1: 파일;
s: 문자열;
buf: 포인터;
숫자: 단어;
{$f+}
function writetofile(var buf; n: 정수): 정수;
var num: 단어;
시작하다
blockwrite(f1,buf,n,num);
끝;
{$f-}
시작하다
메모리가 없다면
시작하다
writeln('파일을 압축하기에는 힙에 메모리가 부족합니다.');
정지;
끝;
s:=paramstr(1);
setencodeoutbuffer(@writetofile);
할당(f,s);
{$i-}
s<>''이면 재설정(f,1);
{$i+}
if (ioresult<>0) 또는 (s='') then
시작하다
쓰다;
writeln('이 터보 파스칼 프로그램과 원본 C++ 코드의 작성자는 다음과 같습니다.');
writeln('alexander larkin(1999년 9월 27일 C++에서 터보 파스칼로 변환됨)');
쓰다;
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);
자유 기억;
정지;
끝;
setpassword(paramstr(3));
getmem(buf,bufsize);
반복하다
blockread(f,buf^,bufsize,num);
encodeput(buf^,num);
num<=0;까지
num<0이면 writeln('파일을 압축할 수 없습니다. 뭔가 잘못되었습니다.');
인코더 세트;
닫기(f);
닫기(f1);
자유 기억;
끝.
///decode.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-}
시작하다
메모리가 없다면
시작하다
writeln('파일 압축을 풀기 위한 힙 메모리가 부족합니다.');
정지;
끝;
s:=paramstr(1);
setdecodeinbuffer(@readfromfile);
할당(f,s);
{$i-}
s<>''이면 재설정(f,1);
{$i+}
if (ioresult<>0) 또는 (s='') then
시작하다
쓰다;
writeln('이 터보 파스칼 프로그램과 원본 C++ 코드의 작성자는 다음과 같습니다.');
writeln('alexander larkin(1999년 9월 27일 C++에서 터보 파스칼로 변환됨)');
쓰다;
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);
setpassword(paramstr(3));
반복하다
num:=decodeget(buf^,bufsize);
num<65535이면 blockwrite(f1,buf^,num,num);
(num=0) 또는 (num=65535)까지;
num=65535이면 writeln('오류! 데이터가 손상되었습니다. 파일의 압축을 풀 수 없습니다.');
닫기(f);
닫기(f1);
자유 기억;
끝.