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'); WriteLn('Alexander Larkin ( translated to Turbo Pascal from C++ on 27/09/1999 )'); WriteLn; WriteLn('E-mail: avlarkin@writeme.com'); WriteLn('Internet: http://www.geocities.com/SiliconValley/6235/tpdl.htm'); WriteLn; WriteLn('Usage: encode.exe InFile OutFile [password]'); WriteLn; FreeMemory; halt; End; s:=paramstr(2); Assign(f1,s); {$I-} if s<>'' then ReWrite(f1,1); {$I+} if (IoResult<>0) or (s='') then Begin Close(f); WriteLn('Cannot create find file '+s); FreeMemory; halt; End; SetPassword(ParamStr(3)); GetMem(buf,BUFSIZE); repeat BlockRead(f,buf^,BUFSIZE,num); EncodePut(buf^,num); until num<=0; if num<0 then WriteLn('Cannot compress file. You do something wrong.'); EncodeReset; Close(f); Close(f1); FreeMemory; End.
Function ReadFromFile(var buf; n: integer; var rdlen: integer): integer; Begin BlockRead(f,buf,n,rdlen); ReadFromFile:=0; End;
{$F-}
Begin if not GetMemory then Begin WriteLn('Not enough memory in HEAP to decompress file.'); halt; End; s:=paramstr(1); SetDecodeInBuffer(@ReadFromFile); 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'); WriteLn('Alexander Larkin ( translated to Turbo Pascal from C++ on 27/09/1999 )'); WriteLn; WriteLn('E-mail: avlarkin@writeme.com'); WriteLn('Internet: http://www.geocities.com/SiliconValley/6235/tpdl.htm'); WriteLn; WriteLn('Usage: decode.exe InFile OutFile [password]'); WriteLn; FreeMemory; halt; End; s:=paramstr(2); Assign(f1,s); {$I-} if s<>'' then ReWrite(f1,1); {$I+} if (IoResult<>0) or (s='') then Begin Close(f); WriteLn('Cannot create file '+s); FreeMemory; halt; End; GetMem(buf,BUFSIZE); SetPassword(ParamStr(3)); repeat num:=DecodeGet(buf^,BUFSIZE); if num<65535 then BlockWrite(f1,buf^,num,num); until (num=0) or (num=65535); if num=65535 then WriteLn('Error! Data corrupted. Cannot decompress file.'); Close(f); Close(f1); FreeMemory; End.