[Back to COPYMOVE SWAG index] [Back to Main SWAG index] [Original]

    {
    > Or can someone put up some Procedure that will copy Files.
    }

    {$O+}

    Uses
      Dos;

    Function CopyFile(SourceFile, TargetFile : String): Byte;
    { Return codes:  0 successful
                     1 source and target the same
                     2 cannot open source
                     3 unable to create target
                     4 error during copy
    }
    Var
      Source,
      Target  : File;
      BRead,
      BWrite  : Word;
      FileBuf : Array[1..2048] of Char;
    begin
      If SourceFile = TargetFile then
      begin
        CopyFile := 1;
        Exit;
      end;
      Assign(Source,SourceFile);
      {$I-}
      Reset(Source,1);
      {$I+}
      If IOResult <> 0 then
      begin
        CopyFile := 2;
        Exit;
      end;
      Assign(Target,TargetFile);
      {$I-}
      ReWrite(Target,1);
      {$I+}
      If IOResult <> 0 then
      begin
        CopyFile := 3;
        Exit;
      end;
      Repeat
        BlockRead(Source,FileBuf,SizeOf(FileBuf),BRead);
        BlockWrite(Target,FileBuf,Bread,BWrite);
      Until (Bread = 0) or (Bread <> BWrite);
      Close(Source);
      Close(Target);
      If Bread <> BWrite then
        CopyFile := 4
      else
        CopyFile := 0;
    end; {of func CopyFile}

[Back to COPYMOVE SWAG index] [Back to Main SWAG index] [Original]