CopyFile subroutine for your file-duplicating pleasure


#1

Hey OptoFans,

I recently needed to copy a file from one name to another. We don’t currently have anything built-in to rename or copy a file, so I wrote my own little subroutine, and thought I’d share.

The code in the sub looks like this, in case you’re curious how I did it but don’t need it just this second. Note I used TransferNChars which works like a charm for files. If you’re using it for TCP stuff, you could run into buffer limitations in the tcp/ip stack if the N (number of bytes you’re transferring) gets too big, like over 1000.

sSourceHandle = "file:r," + sSourceFilename;
sDestHandle = "file:w," + sDestinationFilename;

SetCommunicationHandleValue(sDestHandle, chFileDest);
SetCommunicationHandleValue(sSourceHandle, chFileSource);

// Open the source file
nCHResult = OpenOutgoingCommunication(chFileSource);

if (nCHResult == 0) then // open source should be okay
  nCHResult = OpenOutgoingCommunication(chFileDest);

  nBytesCopied = GetNumCharsWaiting(chFileSource);

  if (nCHResult == 0) then // open dest should be okay

    nCHResult = TransferNChars(chFileDest, chFileSource, nBytesCopied);

    CloseCommunication(chFileDest);
  endif

  CloseCommunication(chFileSource);
endif

if (nCHResult < 0) then // something went wrong, we'll return than instead of the nBytesCopied
  nBytesCopied = nCHResult;
endif

Hope that’s handy!

-OptoMary

CopyFileSub9_2Basic.zip (1.54 KB)