Einzelnen Beitrag anzeigen

Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#1

.exe soll Kopie von sich selbst erstellen

  Alt 23. Mär 2011, 14:26
Delphi-Version: XE
Moin.

Wie der Titel schon sagt, soll eine .exe eine Kopie von sich selbst erstellen. Das ist mein Lösungsansatz:
Delphi-Quellcode:
  //--- Datei öffnen und einlesen
  FileHandle := FileOpen(Application.ExeName, fmShareDenyNone);
  FileLength := FileSeek(FileHandle,0,2);
  FileSeek(FileHandle,0,0);
  Buffer := PChar(AllocMem(FileLength + 1));
  BytesRead := FileRead(FileHandle, Buffer^, FileLength);
  FileClose(FileHandle);

  //--- Neue Datei schreiben
  FileHandle := FileCreate(ExtractFilePath(Application.ExeName) + '\Copy.exe', fmCreate);
  BytesWritten := FileWrite(FileHandle, Buffer, FileLength);
  FileClose(FileHandle);
Es wird zwar eine Datei erstellt, aber diese ist 0 Byte groß.

Wenn ich mir den Inhalt meiner lokalen Variablen anschauen, sehe ich, dass FileWrite schief geht:
Code:
Name des Ausdrucks   Wert
BytesRead   5762995
FileLength   5762995
BytesWritten   -1
Die Frage ist nur warum?
  Mit Zitat antworten Zitat