Contributor: IAN LIN { From: IAN LIN To just copy files, use buffers on the heap. Just make an array type that's almost 64k in size. Use as many of these as needed that can fit in RAM and blockread the data in. After you blockread all you can, close the file if it's been fully read in. If it hasn't then don't close the input file yet. Next you open the output file and dump everything in each buffer with blockwrite. If you're done now, close both files, otherwise keep reading all you can at once from the input file and blockwriting it to the output file. } type pbuf=^buf; buf=record n:pbuf; b:array [1..65530] of byte; end; var buffer,bufp:pbuf; bufc:byte; outf,f:file; begin bufp:=new(buffer); assign(f,'IT'); reset(f,1); blockread(f,bufp^,sizeof(bufp^); assign(outf,'OTHER'); rewrite(outf,1); blockwrite(outf,bufp^,sizeof(bufp^); close(f); close(outf); end. This is just an example so don't expect it to be very useful. :) For text files, if you want to modify them, you may want to use linked lists which point to a line at a time. Remove unwanted lines from the list, and then write it to the output file.