procedure TForm1.CopyEx(
const FileName, NewFile:
string);
var
iFileHandleIn,iFileLength,iBytesRead:integer;
buffer:pointer;
iFileHandleOut,sizeofbuffer:integer;
begin
//holt sich das handle zum file
iFileHandleIn := FileOpen(filename, fmShareDenyNone);
//holt sich den pointer auf das ende des files
iFileLength := FileSeek(iFileHandleIn,0,2);
//setzt den pointer wieder auf den anfang des files
FileSeek(iFileHandleIn,0,0);
//reserviert speicher mit der größe des files
Buffer := PChar(AllocMem(iFileLength + 1));
//schreibt den inhalt der datei vom anfang bis zum pointer auf das ende in den buffer
iBytesRead := FileRead(iFileHandleIn, Buffer^, iFileLength);
//schliesst das file
FileClose(iFileHandleIn);
//erstellt ein neues file
iFileHandleOut := FileCreate(NewFile);
//schreibt den inhalt des buffers in das neue file
FileWrite(iFileHandleOut,Buffer,SizeOfBuffer);
//schliesst das neue file
FileClose(iFileHandleOut);
end;