AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dateien kopieren

Ein Thema von Masteric · begonnen am 8. Jan 2008 · letzter Beitrag vom 8. Jan 2008
Antwort Antwort
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
Tommy82

Registriert seit: 12. Dez 2005
61 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Datein kopieren

  Alt 8. Jan 2008, 07:23
Hallo,

probier mal das:

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 or FOF_NOCONFIRMATION; // Wichtig ist das "or FOF_NOCONFIRMATION;"
  if ARenameCheck then
    sh.fFlags := sh.fFlags or fof_RenameOnCollision;
  Result:=ShFileOperation(sh)=0;
end;
mfg

Tommy82
  Mit Zitat antworten Zitat
Masteric

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

Re: Dateien kopieren

  Alt 8. Jan 2008, 10:35
danke das funktioniert super!

Darauf wäre ich auch echt nicht gekommen, ich hatte ja in der Zeile darunter probiert etwas zu ändern



Gruß Masteric
"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
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Dateien kopieren

  Alt 8. Jan 2008, 11:16
Moin Masteric,

Du solltest Dir einfach mal die Dokumentation der möglichen Flags im PSDK anschauen (MSDN-Library durchsuchenSHFILEOPSTRUCT).
Ausserdem wäre es ganz gut, die Struktur zu Beginn einmal zu initialisieren:

FillChar(sh,SizeOf(sh),0); Das ForceDirectories müsstest Du Dir eigentlich auch sparen können, wobei Du evtl. noch FOF_NOCONFIRMMKDIR bei den Flags hinzufügen müsstest.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz