Entwickler-Ecke
Dateizugriff - Datei sich selbst kopieren lassen
derDoc - Mo 17.02.03 22:43
Titel: Datei sich selbst kopieren lassen
Kann ich ein Programm, oder genauer seine *.exe Datei, während der Laufzeit in einen anderen Ordner kopieren? Ich habe das mit CopyToFile(Application.ExeName, 'C:\Programme\Bla\Programm.exe'); versucht, hatte aber keinen Erfolg.
Delete - Mo 17.02.03 22:51
CopyToFile kenne ich nicht. Aber wie wäre es mit CopyFile?
DaFox - Mo 17.02.03 22:54
Hi.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm1.Button1Click(Sender: TObject); var Source, Target: TFileStream; begin Source := TFilestream.Create(Application.Exename, fmOpenRead or fmShareDenyNone); try Target := TFileStream.Create('C:\copy.exe', fmCreate); try Target.CopyFrom(source, 0); finally Target.Free end; finally Source.Free end; end; |
Gruß,
Markus
Delete - Mo 17.02.03 22:56
Stimmt. Warum einfach, wenn es kompliziert geht. :roll:
Quelltext
1: 2: 3: 4:
| procedure TForm1.Button2Click(Sender: TObject); begin CopyFile(PChar(ParamStr(0)), 'c:\test.exe', TRUE); end; |
Anonymous - Mo 17.02.03 23:05
Ich leg noch einen drauf:
Quelltext
1: 2: 3: 4:
| procedure CopyToFile(ExistingFileName, NewFileName: String); begin CopyFile(PChar(ExistingFileName), PChar(NewFileName), TRUE); end; |
Und schon kann derDoc sein CopyToFile benutzen ;)
Quelltext
1:
| CopyToFile(Application.ExeName, 'C:\Programme\Bla\Programm.exe'); |
Delete - Mo 17.02.03 23:07
Also den Schritt, das jetzt in eine Prozedur zu verpacken, hätte ich ihm jetzt aber zugetraut. :roll:
DaRkFiRe - Mo 17.02.03 23:42
Also - das kann er doch nicht machen!!! *schreck*
Das kann er doch nicht... argh!
derDoc - Di 18.02.03 15:51
Also erstmal danke an all die, die mir hier konstruktiv halfen.
Besonderen Dank an Popov, der mir endlich beibrachte, wie man Proceduren selbstschreibt. :wink:
Anonymous - Di 18.02.03 20:40
Hab ich gerne getan.
ShadowCaster - Fr 21.03.03 10:46
naja, der copyfile-befehl dürfte nicht sehr schnell sein. Ich hab es mit einem BlockRead und einem 2MB PChar-Buffer gemacht. Damit hab ich Dateien auf der Platte doppelt so schnell hin und her kopiert wie der Windows-Explorer (der die Windows-Api benutzt wie auch der copyfile-befehl vermutlich).
Wenn ich was falsches sage, korrigiert mich. Aber eine Exe ist ja nicht so groß und da kommt es ja sicher nicht auf Speed an, es sei denn man will einen Exe-Worm schreiben, der 2000 Kopien von sich auf der Platte in 2-3 Minuten erstellt. :twisted:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!