AGB  ·  Datenschutz  ·  Impressum  







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

Dateien mit Pfad kopieren

Ein Thema von Willie1 · begonnen am 2. Jan 2021 · letzter Beitrag vom 13. Jan 2021
Antwort Antwort
Willie1

Registriert seit: 28. Mai 2008
691 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

Dateien mit Pfad kopieren

  Alt 2. Jan 2021, 17:08
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.
Gut hören kann ich schlecht, schlecht sehen kann ich gut - Ersteres stimmt nicht, das zweite schon.
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.651 Beiträge
 
Delphi 12 Athens
 
#2

AW: Dateien mit Pfad kopieren

  Alt 2. Jan 2021, 18:43
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;
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
mmw
(Gast)

n/a Beiträge
 
#3

AW: Dateien mit Pfad kopieren

  Alt 2. Jan 2021, 18:54
Hallo,

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ß

Geändert von mmw ( 2. Jan 2021 um 19:10 Uhr)
  Mit Zitat antworten Zitat
Poelser

Registriert seit: 21. Apr 2008
Ort: Europa
145 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Dateien mit Pfad kopieren

  Alt 2. Jan 2021, 19:12
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
  Mit Zitat antworten Zitat
gast2019
(Gast)

n/a Beiträge
 
#5

AW: Dateien mit Pfad kopieren

  Alt 2. Jan 2021, 20:42
https://www.wintotal.de/tipp/xcopy-parameter/

wenn's auch ohne Delphi sein darf

Ein gutes Neues wünsche ich!
  Mit Zitat antworten Zitat
Willie1

Registriert seit: 28. Mai 2008
691 Beiträge
 
Delphi 10.1 Berlin Starter
 
#6

AW: Dateien mit Pfad kopieren

  Alt 3. Jan 2021, 18:09
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:
 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}
Willie.
Nachtrag: Wenn ich das Kopieren des Ordner mit dem Explorer ausführe, geht es doch auch!
Gut hören kann ich schlecht, schlecht sehen kann ich gut - Ersteres stimmt nicht, das zweite schon.

Geändert von Willie1 ( 3. Jan 2021 um 18:37 Uhr) Grund: Nachtrag
  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 02:05 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