![]() |
Dateien mit Pfad kopieren
Hallo Leute,
ich bin mit dem Umbenennen der Dateien fertig, um die Bilder auf dem Bilderrahmen in der gewünschten Reihenfolge zu zeigen. Jetzt will ich diese Struktur auf die SD-Karte kopieren unter Beibehalt der Ordner. Beispiel: Bild.Rahmen\Aachen1\Bilddateien Bild.Rahmen\HochzeitOllie\... usw. Das habe ich noch nie gemacht. Ich benutze SHFileOperation. Als pFrom gebe ich die Dateien mit vollem Pfad, als pTo die (Ziel-)Pfade an. Das gibt zwar keine Fehlermeldung aber es wird nur eine Datei Aachen1 angelegt. Was mache ich falsch, geht das überhaupt mit SHFileOperation ? Gruß Willie. |
AW: Dateien mit Pfad kopieren
Versuche es doch mal so. Ich hoffe, dass es diese Funktionen schon in deiner Delphi Version gibt.
Delphi-Quellcode:
uses System.IOUtils; procedure TForm29.Button1Click(Sender: TObject); begin TDirectory.copy(Src, Dst); end; |
AW: Dateien mit Pfad kopieren
Hallo,
Delphi-Quellcode:
TDirectory.Copy();
sollte nicht funktionieren. lt. Online-Hilfe "Copy löst eine Exception aus, wenn die angegebenen Pfade ungültig oder nicht vorhanden sind, oder wenn kein Zugriff auf sie möglich ist. " Im Prinzip sollte es mit SHFileOperation aber funktionieren. aber ohne SRC kann man das natuerlich schwer sagen. Gruß |
AW: Dateien mit Pfad kopieren
Hab' jetzt zwar kein Delphi zur Hand, aber in 10.1 gibt's TDirectory.
Damit sollte Copy gehen. Um eine Exception zu vermeiden, falls dst nicht existiert, vorher Pfad extrahieren und mit ForceDirectory drauf los. Gruß aus dem hohen Norden, Edmund |
AW: Dateien mit Pfad kopieren
![]() wenn's auch ohne Delphi sein darf :wink: Ein gutes Neues wünsche ich! |
AW: Dateien mit Pfad kopieren
Hallo, zunächst vielen Dank für eure schnellen Antworten.
Mit TDirectory.Copy(src, dest) geht es, wenn man bei dest den Ordner anhängt. Es gibt keine Exception, auch wenn der Zielordner nicht existiert. Aber dann müsste es doch auch mit SHFileOperation klappen. Da gibt es Fortschrittsbalken, ich will sehr viele Bilder auf ein langsames Medium (SD) kopieren.
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var dir, pa, fi, s: string; i: Integer; begin if SelectDirectory('Zielordner auswhlen','Computer',Dir,[sdNewUI,sdNewFolder]) then begin Dir := IncludeTrailingPathDelimiter(Dir); for i:=0 to NewList.Count - 1 do begin s := ExcludeTrailingPathDelimiter(NewList.GetPath(i)); s := Copy(s, LastDelimiter('\', s)+1, MAXINT); pa := Dir + s + '\'; fi := NewList.GetPathName(i); CopyFiles(pa, fi ,false); end; end; end;
Delphi-Quellcode:
Willie.
function CopyFiles(DestFolder: string; const Files: array of string; WithConfirm: Boolean;
Move: Boolean=false): Boolean; var SHFOS: TSHFileOpStruct; i: Integer; s: string; begin s:=''; for i:=Low(Files) to High(Files) do s:=s + Files[i] + #0; s:=s + #0; with SHFOS do begin Wnd:=0; if Move then wFunc:=FO_MOVE else wFunc:=FO_COPY; pFrom:=PChar(s); pTo:=PChar(DestFolder); fFlags:=FOF_NOCONFIRMATION; //ohne Rückfrage if WithConfirm then fFlags:=0; fAnyOperationsAborted:=false; hNameMappings:=nil; end; Result:=(ShFileOperation(SHFOS) = 0) and (SHFOS.fAnyOperationsAborted = LongBool(false)); end; {CopyFiles} Nachtrag: Wenn ich das Kopieren des Ordner mit dem Explorer ausführe, geht es doch auch! |
AW: Dateien mit Pfad kopieren
hallo,
Delphi-Quellcode:
wäre es nicht besser so -
for i:=Low(Files) to High(Files) do s:=s + Files[i] + #0;
s:=s + #0;
Delphi-Quellcode:
wäre einfacher der Funktion nur die Datei zu übergeben die kopiert werden soll.
for i:=Low(Files) to High(Files) do begin
s:='' s:=s + Files[i] + #0#0 CopyFiles(...) end; gruß |
AW: Dateien mit Pfad kopieren
Hallo Leute,
ich habe im Explorer schon oft einen Ordner (mit Unterordnern) in ein Verzeichnis eines anderen Laufwerks kopiert, z.B. Delphi-Projekte. Das muss doch auch programmgesteuert gehen! Mit TDirectory.Copy läuft es nicht. Ich kann zwar einen Unterordner benennen, er wird auch angelegt, aber nicht die gesamte Ordnerstruktur. Meine Funktion CopyFiles benutze ich seit 15 Jahren. Ich bin sicher, einer oder mehr von euch wissen, wie es geht. Übrigens, wünsche ich euch noch ein gutes, neues Jahr. Willie. |
AW: Dateien mit Pfad kopieren
Zitat:
Von selbst passiert da nix. ![]() Zitat:
Ach ja, auch wenn es beim "False" gehen wird, aber beim True knallt es gern schnell. PS: Es ist schon ein "Bool".
Delphi-Quellcode:
not SHFOS.fAnyOperationsAborted
Ach ja, ist denn bei einem Fehler überhaupt fAnyOperationsAborted "gültig"? |
AW: Dateien mit Pfad kopieren
hallo,
laut Online -Hilfe (MS) Note This string must be double-null terminated. das gilt für quelle und ziel das scheint bei pa nicht der Fall zu sein. ich habs mal so umgesetzt. (auszug)
Delphi-Quellcode:
vielleicht hilft's
source_file:= src_file+#0#0;
destination_file:= dest_file+#0#0; with SHFOS do begin Wnd:=0; pFrom:=PChar(source_file); pTo:=PChar(destination_file); gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz