AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Dateien und Unterordner von einem Ordner in anderen Ordner K

Dateien und Unterordner von einem Ordner in anderen Ordner K

Ein Thema von renekr · begonnen am 1. Okt 2007 · letzter Beitrag vom 1. Okt 2007
Antwort Antwort
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#1

Dateien und Unterordner von einem Ordner in anderen Ordner K

  Alt 1. Okt 2007, 09:40
Hallo,

Ich habe folgendes vor:

Ich will die Unterordner und Files und alles darunter liegende von einem Ordner in einen anderen Ordner kopieren.

Leider habe ich es nur geschafft einen Root Folder in einen anderen Ordner zu Kopieren,allerdings habe ich dann den Root Folder noch unter dem Ordner,das will ich aber so nicht.


Die funktion nehme ich dazu:
Delphi-Quellcode:
function CopyDir(const fromDir, toDir: string): Boolean;
var
  fos: TSHFileOpStruct;
begin
  ZeroMemory(@fos, SizeOf(fos));
  with fos do
  begin
    wFunc := FO_COPY;
    fFlags := FOF_FILESONLY;
    pFrom := PChar(fromDir + #0);
    pTo := PChar(toDir)
  end;
  Result := (0 = ShFileOperation(fos));
end;
Hat jemand etwas besseres auf Lager?

Vielen Dank.
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Dateien und Unterordner von einem Ordner in anderen Ordn

  Alt 1. Okt 2007, 10:09
Hi!

Ist jetzt mal ins unreine geschrieben, sollte aber mit evtl. kleinen Änderungen funktionieren. Der Trick besteht daran, dass man die CopyDirectory procedure rekursiv aufruft, wenn FindFirst einen Ordner findet.

Delphi-Quellcode:
procedure CopyDirectory(aDirectory,aDestinationDirectory:String);
var
LStrList: TStringlist;
LSearchRec: TSearchRec;
begin

if FindFirst(aDirectory + '*.*', faAnyFile, LSearchRec) = 0 then
  begin
   
  repeat

    //Ordner auflisten

    if LSearchRec.Attr and faDirectory = faDirectory then
      if (LSearchRec.Name <> '.') and (LSearchRec.Name <> '..') then
           begin
              CopyDirectory(aDirectory+LSearchRec.Name+'\',aDestinationDirectory+LSearchRec.Name+'\');
           end;

    //Dateien auflisten

    if LSearchRec.Attr and faDirectory = 0 then
     begin
       Copyfile(PChar(aDirectory+LSearchRec.Name),PChar(aDestinationDirectory+LSearchRec.Name),true);
     end;

   until FindNext(LSearchRec) <> 0;
   
   FindClose(LSearchRec);
  end;
end;
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
Benutzerbild von peschai
peschai

Registriert seit: 15. Feb 2004
Ort: Göppingen
270 Beiträge
 
Delphi XE5 Professional
 
#3

Re: Dateien und Unterordner von einem Ordner in anderen Ordn

  Alt 1. Okt 2007, 10:16
Hallo,
Kleiner Hinweis: Bitte bei den Verzeichnis-verkettungen fehlt der '\' dazwischen ... z.B.
...aDirectory+LSearchRec.Name+'\'... ...aDirectory+'\'+LSearchRec.Name+'\'...
Peter Schaible
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#4

Re: Dateien und Unterordner von einem Ordner in anderen Ordn

  Alt 1. Okt 2007, 10:28
versuch das mal:
Delphi-Quellcode:
var
  shellinfo: TSHFILEOPSTRUCT;

procedure CopyVerzeichnis(Source, Dest);
var files : string;
     Abbruch: Boolean;
begin
  files :=Source + #0;
  files := files + #0;
  with shellinfo do begin
     wnd := Application.handle;
     wfunc := FO_COPY;
     pFrom := PChar(files);
     pTo := PChar(Dest);
  end;
  if SHFileOperation(shellinfo)=S_Ok then
   ShowMessage('Alle Dateien wurden kopiert!')
  else
   ShowMessage('Die Dateien wurden nicht oder nicht vollständig kopiert!');
end;
Anstelle von Application.Handle solltest du besser das Handle deines Forms nehmen, so hatte ich das jedenfalls gemacht.
Karl-Heinz
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

Re: Dateien und Unterordner von einem Ordner in anderen Ordn

  Alt 1. Okt 2007, 10:42
Warum nicht einfach mit ShellExecute und xcopy ? Oder soll ein bereits vorhandener Windows-Befehl mit Delphi nachprogrammiert werden ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Dateien und Unterordner von einem Ordner in anderen Ordn

  Alt 1. Okt 2007, 10:42
Hallo Rene,

versuche es einmal so:

Delphi-Quellcode:

function CopyFiles (const fromDir, toDir: string): Boolean;
var
  fos: TSHFileOpStruct;
begin
  ZeroMemory(@fos, SizeOf(fos));
  with fos do
  begin
    wFunc := FO_COPY;
// fFlags := FOF_FILESONLY;
    fFlags := 0;
    pFrom := PChar(fromDir + #0);
    pTo := PChar(toDir)
  end;
  Result := (0 = ShFileOperation(fos));
end;

procedure TForm1.Button1Click (Sender: TObject);
begin
  CopyFiles ('C:\Source\*.*', 'C:\Target');
end;
Beachte die Wildcards bei der Angabe der Quelldaten.

Gruß Hawkeye
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Dateien und Unterordner von einem Ordner in anderen Ordn

  Alt 1. Okt 2007, 10:47
Hi @,
WOW so viel Resonanz.
Vielen 'Dank.

Ich habe derzeit ein bisschen experimentiert und folgendes programmeirt.

Delphi-Quellcode:
function CopyDir_without_Root(const fromDir, toDir: string): Boolean;
var
fo: TSHFileOpStruct;
buffer : array[0..4096] of char;
p : pchar;
begin
FillChar(Buffer, sizeof(Buffer), #0);
p := @buffer;
StrECopy(p,Pchar( fromDir+'\*.*')); //this is folder that you want to copy
FillChar(Fo, sizeof(Fo), #0);
Fo.Wnd := form1.Handle;
Fo.wFunc := FO_COPY;
Fo.pFrom := @Buffer;
Fo.pTo := PChar(toDir); //this is where the folder will go Fo.fFlags := 0;

Result := (0 = ShFileOperation(fo));
end;
Das ist fast ähnlich wie das letzte Posting.

Vielen Lieben Dank.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:30 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