procedure TForm1.CopyEx(
const FileName, NewFile:
string);
var
iFileHandleIn,iFileLength,iBytesRead,iBytesWritten:integer;
buffer:pointer;
iFileHandleOut,sizeofbuffer:integer;
begin
//holt sich das handle zum file
iFileHandleIn := FileOpen(filename, fmShareDenyNone);
if iFileHandleIn > -1
then
begin
//holt sich den pointer auf das ende des files
iFileLength := FileSeek(iFileHandleIn,0,2);
if iFileLength > -1
then
begin
//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));
sizeofbuffer:=iFileLength;
//<<<--- die Bufferlänge gesetzt, fehlte noch
if Assigned(Buffer)
then
begin
//schreibt den inhalt der datei vom anfang bis zum pointer auf das ende in den buffer
iBytesRead := FileRead(iFileHandleIn, Buffer^, iFileLength);
//erstellt ein neues file
iFileHandleOut := FileCreate(NewFile);
if iFileHandleOut > -1
then
begin
//schreibt den inhalt des buffers in das neue file
iBytesWritten := FileWrite(iFileHandleOut,Buffer^,SizeOfBuffer);
//<<<---- das ^ bei Buffer eingefügt
// ----------
if iBytesWritten = -1
then
ShowMessage('
Fehler bei FileWrite');
//schliesst das neue file
FileClose(iFileHandleOut);
end
else
ShowMessage('
Fehler bei CreateFile');
end
else
ShowMessage('
Buffer nicht zugewiesen');
end
else
ShowMessage('
Fehler bei FileSeek');
//schliesst das file
FileClose(iFileHandleIn);
end
else
ShowMessage('
Fehler bei Fileopen');
end;