AGB  ·  Datenschutz  ·  Impressum  







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

CopyFile... Kopieren mit Delphi

Ein Thema von Mitchl55 · begonnen am 2. Mai 2003 · letzter Beitrag vom 4. Mai 2003
Antwort Antwort
Mitchl55

Registriert seit: 20. Feb 2003
Ort: Meppen
159 Beiträge
 
Delphi 7 Enterprise
 
#1

CopyFile... Kopieren mit Delphi

  Alt 2. Mai 2003, 12:07
Hallo...

möchte ein komplettes Verzeichnis von Festplatte A nach Festplatte B kopieren, welches aber so nicht klappt:

CopyFile(pchar('F:\Test\*.*'),pchar('C:\Test\*.*'),False); Delphi kopiert nur wenn ich Dateinamen mit angebe, also so:

CopyFile(pchar('F:\Test\Test1.tst'),pchar('C:\Test\Test1.tst'),False); Was mache ich falsch, oder geht das mit den '*' zeichen so nicht?

Danke & Gruß

Mitchl
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#2
  Alt 2. Mai 2003, 12:18
CopyFile ist zum Kopieren einer einzelnen Datei - geht also nicht. In Der Code-Library gibt es aber eine Lösung, welche Dir helfen sollte

http://www.delphipraxis.net/viewtopic.php?t=1451

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Mitchl55

Registriert seit: 20. Feb 2003
Ort: Meppen
159 Beiträge
 
Delphi 7 Enterprise
 
#3
  Alt 3. Mai 2003, 16:43
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:
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;
Irgendwie ist da aber noch ein Fehler im Source und erstellt Delphi nicht vorhandene Verzeichnisse automatisch?

Gruß

Michl
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#4
  Alt 3. Mai 2003, 16:50
verzeichnisse musst du selber erstellen
versuchs mal mit: ForceDirectory oder so
David F.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 3. Mai 2003, 16:59
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 von Mitchl55:
... und erstellt Delphi nicht vorhandene Verzeichnisse automatisch?
In diesem Falle, Aufruf der API Funktion CopyFile, werden Verzeichnisse nicht automatisch erstellt. Du könntest SHFileOperation verwenden. Diese Funktion versucht nicht existierende Verzeichnisse zu erstellen.
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.
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
Benutzerbild von Duffy
Duffy

Registriert seit: 19. Mär 2003
Ort: Wuppertal
835 Beiträge
 
Delphi 3 Standard
 
#6
  Alt 3. Mai 2003, 17:02
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:
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;
Nicht vergessen die Unit ShellAPI einzubinden!

bye
  Mit Zitat antworten Zitat
Mitchl55

Registriert seit: 20. Feb 2003
Ort: Meppen
159 Beiträge
 
Delphi 7 Enterprise
 
#7
  Alt 3. Mai 2003, 18:00
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:
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;
Gruß

Mitchl
  Mit Zitat antworten Zitat
Benutzerbild von Duffy
Duffy

Registriert seit: 19. Mär 2003
Ort: Wuppertal
835 Beiträge
 
Delphi 3 Standard
 
#8
  Alt 3. Mai 2003, 18:59
Hallo,
warum denn gleich verzweifeln .. es geht auch anders. Ich hoffe das Muster reicht Dir.
bye
Angehängte Dateien
Dateityp: zip copy_und_so_weiter.zip (214,8 KB, 315x aufgerufen)
  Mit Zitat antworten Zitat
Mitchl55

Registriert seit: 20. Feb 2003
Ort: Meppen
159 Beiträge
 
Delphi 7 Enterprise
 
#9
  Alt 4. Mai 2003, 02:14
Besten Dank! Hab es ausprobiert und es läuft! Weis auch nicht in welcher Ecke ich wieder gegraben habe...

Gruß

Mitchl
  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 06:08 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