Entwickler-Ecke

Dateizugriff - EXE Datei Verschieben


Michi - Di 22.10.02 17:26
Titel: EXE Datei Verschieben
Hi,
wie lasse ich mein Programm eine bestimmte Exe Datei in irgend einen beliebigen Orden verschieben? :?: :nixweiss:


Delete - Di 22.10.02 17:32

Mit CopyFile kopieren und mit DeleteFile die Datei am Ursprungsort löschen.
Oder SHFileOperation [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shfileoperation.asp] nutzen.


Snippy - Mi 23.10.02 12:33

Und so sieht das in der Praxis aus:


Quelltext
1:
2:
3:
CopyFile('C:/test.exe','c:/test_copy.exe',True); 
MoveFile('C:/test.exe','d:/test.exe'); 
DeleteFile('C:/test.exe');


Schattengeist - Sa 26.10.02 11:44

Moin!
oder Movefile:

Quelltext
1:
2:
if MoveFile( PChar('C:/test.exe') , PChar('c:/test_copy.exe') ) then
   showmessage('OK');

MFG,cu,LLAP Schattengeist


Delete - Sa 26.10.02 11:47

@Schattengeist: :? Mach mal ´n Licht an, dann schau mal auf das Posting deines Vorgängers - mittlere Codezeile. :wink:


Schattengeist - Sa 26.10.02 12:20

Moin!
MathiasSimmack hat folgendes geschrieben:
@Schattengeist: :? Mach mal ´n Licht an, dann schau mal auf das Posting deines Vorgängers - mittlere Codezeile. :wink:

Hmmm. OK.... ja.... Wenn man denkt, das man denkt,.... :oops:
Ehrlich gesagt: bringt mich das jetzt durcheinander:
a) PChar vergessen,
b) 'doppelt gemoppelt hält länger', oder 'wie verwirre ich die verfolger' :roll:
IMHO sollte die mittlere Zeile alternativ darstehen. So macht das keinen Sinn - oder?
MFG,cu,LLAP Schattengeist


Delete - Sa 26.10.02 12:54

*hi hi*

Ich habe nicht gesagt, dass das Posting von Snippy besonders logisch ist. Natürlich wäre eine andere Aufteilung nützlicher gewesen, so dass man auf den ersten Blick sieht:
Aha! "CopyFile" + "DeleteFile" = "MoveFile"

Das mit dem
Zitat:
PChar vergessen

würde ich nicht unbedingt als Fehler ansehen. Als Ergänzung vielleicht noch die, von Luckie schon erwähnte "SHFileOperation". Ist vielleicht ganz nützlich bei sehr großen Dateien oder auch generell, weil man damit auch die Kopieranimation des Explorers nutzen kann und nicht selbst programmieren muss:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
uses
  ShellAPI;
var
  fileop : TSHFileOpStruct;

{ ... }

fillchar(fileop,sizeof(TSHFileOpStruct),0);
fileop.Wnd    := WINDOW-HANDLE
fileop.wFunc  := FO_MOVE;
fileop.pFrom  := pchar('c:\test.exe' + #0#0);
fileop.pTo    := pchar('d:\' + #0#0);
// evtl. weitere Flags

if(SHFileOperation(fileop) = 0) then { do something };

Ein Blick in die Hilfe, bzw. ins MSDN/PSDK (s. Luckies Beitrag) ist immer gut, weil diese Funktion "nebenbei" auch kopieren, umbenennen und löschen kann ... :)