Hi Experten,
ich habe ein Frage zu folgender Function:
Delphi-Quellcode:
function CopyFileEx(const ASource, ADest: String; rooten:string;
ARenameCheck: boolean = true): boolean;
var
sh: TSHFileOpStruct;
begin
ForceDirectories(rooten);
sh.Wnd := Application.Handle;
sh.wFunc := FO_COPY;
// String muss mit #0#0 Terminiert werden, um das Listenende zu setzen
sh.pFrom := PChar(ASource + #0);
sh.pTo := PChar(ADest + #0);
sh.fFlags := fof_Silent or fof_MultiDestFiles;
if ARenameCheck then
sh.fFlags := sh.fFlags or fof_RenameOnCollision;
Result:=ShFileOperation(sh)=0;
end;
Diese Function kopiert Datein eigentlich sehr gut, da die einfachere Version
Function Copyfile(src,dest,overwrite); bei mir irgendwie nicht funktioniert.
Jetzt ist es aber so, dass die Function oben, eine Kopie einer Datei anlegt,
wenn diese schon existiert. Ich will aber, dass es die Datei überschreibt, ohne
irgendeinen Eingriff, da es um ein Synchronisationsprogramm geht und es da dumm ist,
wenn der Nutzer jede Datei bestätigen muss, die sich geändert hat.
Kann mir jemand bitte sagen, was ich ändern muss, damit die Function keine Kopie anlegt
und auch nicht auf ein "Wollen Sie die Datei wirklich überschreiben?" Fenster öffnent?
Denke mal, dass man hier
Delphi-Quellcode:
if ARenameCheck then
sh.fFlags := sh.fFlags or fof_RenameOnCollision;
Result:=ShFileOperation(sh)=0;
was ändern muss, habe aber leider nicht so viel Ahnung von der Windows
API.
Hoffe Ihr wisst Rat.
Gruß Masteric
PS: Die Variable Rooten die ich mir noch nachträglich eingebaut hab, sorgt dafür, dass das Unterverzeichniss
der zu Kopierenden Datei erstellt wird, wenn es noch nicht vorhanden ist.
PS: Er kopiert oftmals auch verschiedene Datein nicht, die aber manuell einfach kopiert werden können, wer also
eine gut funktionierende Methode hat, kann sie gerne auch Posten
.
[edit=Matze]Es heißt "Dateien", nicht "Datein". Damit man das Thema über die Suchfunktion findet, habe ich den Tittel korrigiert. MfG, Matze[/edit]
"Programmieren ist eine der universellsten, allübergreifendsten und höchsten von Menschen erreichten Formen der Kreativität."
Nur weil Gott die Welt in 6 Tagen erschaffen hat, heisst das nicht, dass Informatiker alles in 6 Tagen programmieren können.