日期:2011-02-19  浏览次数:20424 次

{ This is interface of C++ code.
  C++ source code not included to this archive.
  Look README.TXT file for more information. }

#ifndef __CODING_H__
#define __CODING_H__

#ifndef coding_impex
#define coding_impex __declspec(dllimport)
#endif

class coding_impex avlDecode
{
   public:
     ~avlDecode();
      avlDecode();

      virtual int ReadBuf            
                  ( void     *buf,   
                    unsigned  maxLen,
                    unsigned &rdlen  
                  ) = 0;             

      int  Get(void *buf, unsigned  maxLen);
      int  Get(void *buf, unsigned  maxLen, unsigned &rdLen)
      {  return ((int)(rdLen = Get(buf, maxLen)) < 0)? rdLen :0 ;
      }

      void Reset();

   private:

   ????????? private part not included ???????????????????

};


class coding_impex avlEncode
{
   public:
     ~avlEncode();
      avlEncode();

      virtual int WriteBuf           
                  ( void     *buf,   
                    unsigned  len    
                  ) = 0;             


      int  Put(void *buf, unsigned  n);
      void Reset();

   private:
  ?????????? Private part not icluded ?????????????

};

#endif //__CODING_H__


///encode.pas
{$M 8192,120000,120000}
uses avlcodes;

const BUFSIZE=60000;

var p: pointer;
    f,f1: file;
    s: string;
    buf: pointer;
    num: word;

{$F+}

Function WriteToFile(var buf; n: integer): integer;
var num: word;
Begin
BlockWrite(f1,buf,n,num);
End;

{$F-}

Begin
if not GetMemory then
  Begin
   WriteLn('Not enough memory in HEAP to compress file.');
   halt;
  End;
s:=paramstr(1);
SetEncodeOutBuffer(@WriteToFile);
assign(f,s);
{$I-}
  if s<>'' then Reset(f,1);
{$I+}
if (IoResult<>0) or (s='') then
  Begin
   WriteLn;
   WriteLn('The author of this Turbo Pascal program and original C++ code is');