Thema: Delphi Dateien kopieren

Einzelnen Beitrag anzeigen

Masteric

Registriert seit: 1. Aug 2007
Ort: Melsungen
155 Beiträge
 
Delphi 7 Professional
 
#1

Dateien kopieren

  Alt 8. Jan 2008, 00:20
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.
  Mit Zitat antworten Zitat