[Back to WIN-OS2 SWAG index] [Back to Main SWAG index] [Original]

    {
    WINDOWS File Copy
    Michael Vincze
    mav@asd470.dseg.ti.com
    }

    uses
      WinTypes,
      WinProcs,
      Objects;

    const
      BufStreamSize = $400;

    var
      InBufStream : TBufStream;
      OutBufStream: TBufStream;
      C           : Byte;

    procedure Gasp;
    var
      Msg: TMsg;
    begin
    while PeekMessage (Msg, 0, 0, 0, pm_Remove) do
      with Msg do
        if (Message < wm_KeyFirst) or (Message > wm_MouseLast) or
           ((Message > wm_KeyLast) and (Message < wm_MouseFirst)) then
          begin
          TranslateMessage (Msg);
          DispatchMessage (Msg);
          end;
    end;

    { function copies one file to the other.  The return code
      is the same as the TBufStream return codes.  The Gasp
      procedure is inserted to yield for other applications
      during a copy.
    }
    function MyCopy (InFileName, OutFileName: PChar): Word;
    begin
    InBufStream.Init (InFileName, stOpenRead, BufStreamSize);
    if InBufStream.Status <> stOk then
      begin
      MyCopy := InBufStream.Status;
      end
    else
      begin
      OutBufStream.Init (OutFileName, stCreate, BufStreamSize);
      if OutBufStream.Status <> stOk then
        begin
        MyCopy := OutBufStream.Status;
        end
      else
        begin
        InBufStream.Read (C, 1);
        while InBufStream.Status = stOk do
          begin
          Gasp;
          OutBufStream.Write (C, 1);
          InBufStream.Read (C, 1);
          end;
        end;
      end;
    InBufStream.Done;
    OutBufStream.Done;
    end;

[Back to WIN-OS2 SWAG index] [Back to Main SWAG index] [Original]