![]() |
CopyFile... Kopieren mit Delphi
Hallo...
möchte ein komplettes Verzeichnis von Festplatte A nach Festplatte B kopieren, welches aber so nicht klappt:
Delphi-Quellcode:
Delphi kopiert nur wenn ich Dateinamen mit angebe, also so:
CopyFile(pchar('F:\Test\*.*'),pchar('C:\Test\*.*'),False);
Delphi-Quellcode:
Was mache ich falsch, oder geht das mit den '*' zeichen so nicht?
CopyFile(pchar('F:\Test\Test1.tst'),pchar('C:\Test\Test1.tst'),False);
Danke & Gruß Mitchl |
CopyFile ist zum Kopieren einer einzelnen Datei - geht also nicht. In Der Code-Library gibt es aber eine Lösung, welche Dir helfen sollte ;-)
![]() ...:cat:... |
Hab es mal so versucht... alle Dateien aus dem Verzeichnis X Festplatte A in das nicht existierende Verzeichnis Y Festplatte B zu kopieren ...den anderen Vorschlag verstehe ich nicht so!
Delphi-Quellcode:
Irgendwie ist da aber noch ein Fehler im Source und erstellt Delphi nicht vorhandene Verzeichnisse automatisch?
if FindFirst(ListBox2.Items[0]+'*.*', faAnyFile, SearchRec) = 0 then begin
while FindNext(SearchRec) = 0 do begin CopyFile(pchar(ListBox1.Items[X] + SearchRec.Name),pchar(ListBox2.Items[Y] + SearchRec.Name),False); end; FindClose(SearchRec); end; Gruß Michl |
verzeichnisse musst du selber erstellen
versuchs mal mit: ForceDirectory oder so |
Moin Michl,
bei Deinem Aufbau geht Dir immer der erste gefundenen Eintrag verloren, da Du nach erfolgreichen FindFirst (das den ersten Eintrag liefert) gleich den nächsten abforderst (FindNext), ohne den ersten zu verarbeiten. Ausserdem willst Du, ohne Prüfung, alles kopieren, was FindFirst findet. Dies können ausser Dateien aber auch Verzeichnisse sein, ebenso wie die Standardeinträge in Verzeichnissen, nämlich . und .. Such' doch mal hier im Forum nach FindFirst. Du müsstest einige Fundstellen bekommen, die Dir noch mehr Einzelheiten verraten. Zitat:
Dazu gibt es auch schon einen Eintrag hier in der Code Library, die den Umgang mit SHFileOperation erleichtert. Um selber Pfade (und nicht nur einzelne Verzeichnisse zu erstellen) stellt Delphi die Funktion ForceDirectories zur Verfügung. |
Hallo Mitchl55,
ich weiß nicht warum den Lösungsungsweg von Sakura nicht magst. Ist aber der saubere Weg ganze Verzeichnise zu kopieren. Hier ist noch einmal eine Funktion die auf das ShellAPI aufsetzt.
Delphi-Quellcode:
Nicht vergessen die Unit ShellAPI einzubinden!
function SHCopyFile(Handle: THandle; szSource, szDestination: TFileName): Boolean;
var ShellFileOperation: TSHFileOpStruct; begin Result := True; try with ShellFileOperation do begin Wnd := Handle; wFunc := FO_COPY; pFrom := PChar(szSource); pTo := PChar(szDestination); // fFlags := FOF_FILESONLY OR FOF_NOCONFIRMMKDIR FOF_SIMPLEPROGRESS; fFlags := FOF_NOCONFIRMMKDIR; lpszProgressTitle := 'Dateien kopieren ...'; end; SHFileOperation(ShellFileOperation); except Result := False; end; end; bye |
Ich bin einfach zu blöde! Die Funktion bekomme ich so nicht eingebunden!
und so klappt es auch nicht! Verzeichnis falsch angegeben? Muss da ein *.* hinter? Will doch nur alle Dateien von 'e:\k-test' nach 'f:\test' kopieren!
Delphi-Quellcode:
Gruß
begin
try with ShellFileOperation do begin Wnd := Handle; wFunc := FO_COPY; pFrom := PChar('e:\k-test'); pTo := PChar('F:\Test'); fFlags := FOF_FILESONLY; //OR FOF_NOCONFIRMMKDIR FOF_SIMPLEPROGRESS; //fFlags := FOF_NOCONFIRMMKDIR; lpszProgressTitle := 'Dateien kopieren ...'; end; SHFileOperation(ShellFileOperation); except end; Mitchl |
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
warum denn gleich verzweifeln .. es geht auch anders. Ich hoffe das Muster reicht Dir. bye |
Besten Dank! Hab es ausprobiert und es läuft! Weis auch nicht in welcher Ecke ich wieder gegraben habe... :roll:
Gruß Mitchl |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:55 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