Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ordner Kopieren (https://www.delphipraxis.net/40882-ordner-kopieren.html)

ferby 22. Feb 2005 17:10


Ordner Kopieren
 
Hallo,

Im Ornder A ist der Ordner B.
Ordner B hat viele unterordner und Dateien, ich möchte jetzt das ordner B (mit allen was drin ist + unterordner) beim klick auf einen Button kopiert wird und zwar in den Ordner A mit der bezeichnung B1, wenn ich nochmal diesen Button drücke dann B2 usw....

Ich weiß nicht wie die Befehle gehen um einen Ordner zu kopieren.
Wie Frage ich ab wiviele Bx Ordner es schon gibt?


Ist meine Frage versändlich?????




Ferby

Sprint 22. Feb 2005 17:15

Re: Ordner Kopieren
 
Suche in diesem Forum nach SHFileOperation, CopyFile & MoveFile.

Matze 22. Feb 2005 17:15

Re: Ordner Kopieren
 
Einfach suchen Hier im Forum suchenverzeichnis kopieren. Oder in der Code-Library gucken.

ferby 22. Feb 2005 17:44

Re: Ordner Kopieren
 
Hallo,

Ich habe jetzt selbst gesucht, nur nicht wirklich eine lösung gefunden, immer nur code den ich überhaupt nicht verstehe.
Wäre es möglich einfach mir den code zu schreiben wie ich einen ordner von a nach b kopiere und mir diesen quellcode zu erklären den rest versuche ich dann selbst zu machen.................

Ich habe nur gefunden

Delphi-Quellcode:
fos: TSHFileOpStruct;
begin

  with fos do
  begin
    wFunc := FO_COPY;
    fFlags := FOF_FILESONLY;
    pFrom := PChar('C:/test/a');
    pTo   := PChar('C:/test/b')
  end;

aber da tut sich überhaupt nichts....

Matze 22. Feb 2005 17:46

Re: Ordner Kopieren
 
Dann benutze das hier.

Nachtrag: Wie rufst du denn obigen Code auf? :gruebel:

jfheins 22. Feb 2005 17:51

Re: Ordner Kopieren
 
Falls du Fragen zu dem Konstrukt da hast:
http://msdn.microsoft.com/library/de...leopstruct.asp

ferby 22. Feb 2005 18:03

Re: Ordner Kopieren
 
Hallo,

danke, jetzt bin ich ein wenig weiter, ich schreibe wenn ich wieder ein problem habe.



ferby

ferby 22. Feb 2005 18:28

Re: Ordner Kopieren
 
Hallo,

Also jetzt habe ich ein Problemm...
irgendwo muss ein Denkfehler sein

if ferwende die funktion

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;

Und so ruf ich die funktion auf

Delphi-Quellcode:
  i:=0;
  while fileexists('C:\Programme\ferby\datenbank\kopie\data' + inttostr(i)) do inc(i);
  inc(i);
  copydir('C:\Programme\ferby\datenbank\data','C:\Programme\ferby\datenbank\kopie\data' + inttostr(i))

das erste mal macht er die kopie wenn ich dann aber noch eine koopie machen will dann mancht er keinen neuen ordner data2 usw....

DelphiFreund 22. Feb 2005 18:36

Re: Ordner Kopieren
 
Das hatte ich auch mal vor, ich hab mir ne Funktion geschrieben, die die Ordner mit allen Unterordnern erzeugt:
Delphi-Quellcode:
function CutPath(S: String): String;
var
  i, L: Integer;
begin
  Result:= '';
  L:= Length(S);
  if L = 0 then Exit;
  for i:= L - 1 downto 1 do begin
    if S[i] = '\' then begin
      Result:= Copy(S, 1, i - 1);
      Exit;
    end;
  end;
end;

function CreateFolders(S: String): Boolean;
var
  TempString: String;
  TempFolder: array of String;
  i: Integer;
begin
  i:= 0;
  TempString:= S;
  Result:= True;
  if DirectoryExists(S) then Exit;
  while not DirectoryExists(TempString) do begin
    if TempString = '' then begin
      TempFolder:= nil;
      Result:= False;
      Exit;
    end;
    Inc(i);
    SetLength(TempFolder, i);
    TempFolder[i - 1]:= TempString;
    TempString:= CutPath(TempString);
  end;
  while i > 0 do begin
    CreateDir(TempFolder[i - 1]);
    Dec(i);
  end;
  TempFolder:= nil;
end;
Du musst einfach den Pfad angeben, dann werden die Ordner erzeugt. Das eigentlich kopieren von Dateien, ist dann das kleinere Problem.

Gruß DelphiFreund

Matze 22. Feb 2005 18:40

Re: Ordner Kopieren
 
@ferby: ich denke eine while-Schleife ist da nicht angebracht und 2 x inc(i); wohl auch nicht.

Nachtrag: Und bitte immer die [delphi]-Tags verwenden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:27 Uhr.
Seite 1 von 2  1 2      

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