home *** CD-ROM | disk | FTP | other *** search
/ ProfitPress Mega CDROM2 …eeware (MSDOS)(1992)(Eng) / ProfitPress-MegaCDROM2.B6I / MAGAZINE / MISC / ITPMAR90.ZIP / FILECOPY.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1990-02-22  |  1.5 KB  |  75 lines

  1. PROGRAM FileCopyDemo;     { FILECOPY.PAS }
  2.  
  3. USES Crt;
  4.  
  5. TYPE
  6.    Action  = (Input, Output);
  7.    DataBlk = array[1..512] of byte;
  8.    FileObj = OBJECT
  9.      fp : FILE;
  10.      CONSTRUCTOR OpenFile(FileName: string;
  11.                FileAction: Action);
  12.      PROCEDURE ReadBlock(VAR fb: DataBlk;
  13.                 VAR Size: integer);
  14.      PROCEDURE WriteBlock(fb: DataBlk;
  15.                 size: integer);
  16.      DESTRUCTOR CloseFile;
  17.    END;
  18.  
  19. CONSTRUCTOR FileObj.OpenFile;
  20. BEGIN
  21.   Assign(fp, FileName);
  22.   CASE FileAction of
  23.     Input: BEGIN
  24.       Reset(fp, 1);
  25.       IF IOResult <> 0 THEN
  26.     BEGIN
  27.       WriteLn(FileName, ' not found!');
  28.       Halt(1);
  29.     END;
  30.     WriteLn(FileName,' opened for read ... ');
  31.       END;
  32.     Output: BEGIN
  33.       Rewrite(fp, 1);
  34.       WriteLn(FileName,' opened for write ... ');
  35.       END;
  36.    END; {CASE}
  37. END;
  38.  
  39. DESTRUCTOR FileObj.CloseFile;
  40. BEGIN
  41.    Close(fp);
  42.    WriteLn('File closed ...');
  43. END;
  44.  
  45. PROCEDURE FileObj.ReadBlock;
  46. BEGIN
  47.    BlockRead(fp, fb, SizeOf(fb), Size);
  48.    WriteLn('Reading ', Size, ' bytes ... ');
  49. END;
  50.  
  51. PROCEDURE FileObj.WriteBlock;
  52. BEGIN
  53.    BlockWrite(fp, fb, Size);
  54.    WriteLn('Writing ', Size, ' bytes ... ');
  55. END;
  56.  
  57. VAR
  58.    InFile, OutFile : FileObj;
  59.    Data: DataBlk;
  60.    Size: integer;
  61.  
  62. BEGIN
  63.    ClrScr;
  64.    InFile.OpenFile('FILECOPY.PAS', Input);
  65.    OutFile.OpenFile('FILECOPY.CPY', Output);
  66.    REPEAT
  67.       InFile.ReadBlock(Data, Size);
  68.       OutFile.WriteBlock(Data, Size);
  69.    UNTIL Size <> SizeOf(DataBlk);
  70.    InFile.CloseFile;
  71.    OutFile.CloseFile;
  72.    Write('Press Enter to quit ... ');
  73.    ReadLn;
  74. END.
  75.