Entwickler-Ecke

Dateizugriff - Dateien und Ordner verschieben?


Anonymous - Mo 02.06.03 17:24
Titel: Dateien und Ordner verschieben?
Hi!
Mein Programm muss Dateien aus einem Unterverzeichnis des Hauptverzeichnisses (= wo Prog ist) verschieben. Dazu kommt noch, dass neben den Dateien auch ein Ordner verschoben werden muss (auch im Unterverzeichnis).
Gibts da eine nichtumständliche Möglichkeit? Kann man das auch mit DOS-Befehlen machen (nicht über Batch-Datei!)?

PAX :)


O'rallY - Mo 02.06.03 17:37

In den FAQs findest du, wie man einen Ordner mit seinen Unterordnern in einer rekursiven (sich selbstaufrufenden) Prozedur durchsucht. Diese Implementation durch einen Kopierbefehl zu erweitern, dürfte nicht schwer sein.
Zu den DOS-Befehlen: Das ist nicht gerade schönes programmieren.


Delete - Mo 02.06.03 18:09

Auch schön ist SHFileOperation, was der Kopier-, Verschiebe- und Löschanimation des Explorers entspricht. Damit reduziert sich die ganze Arbeit auf ein paar Einstellungen und einen Befehl, und man erhält dafür einen fertigen Dialog samt Progressbar und Dateinamen-Anzeige.

Und was muss man dafür tun? O.g. Zauberwort mal in die Suche [http://www.delphi-forum.de/search.php] eintippen.


Anonymous - Di 03.06.03 10:52

Ich hab mal im Demo-Verzeichnis nachgeguckt, doch da war nur ein Ordner namens "ShellControls"! Is schon installiert! Ist das nun das richtige? Wo bekomm ich ShFileOperation her? Ist das Freeware?
Danke

PAX


Tino - Di 03.06.03 11:38

\ \\PAX// / hat folgendes geschrieben:
Wo bekomm ich ShFileOperation her? Ist das Freeware?

Hast Du mal die Suchfunktion mit dem Begriff SHFileOperation benutzt? SHFileOperation ist eine API Funktion. Siehe dir mal dieses [http://www.delphi-forum.de/viewtopic.php?p=36313#36313] Topic an.

Gruß
Tino


knuffel - So 10.08.03 13:47

:!: hallo!

mit dem folgenden code kann man relativ einfach ordner und dateien verschieben. dabei wird der ORDNER in den ZIELPFAD verschoben.

hier den sourcecode:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, shellapi;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

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


procedure TForm1.Button1Click(Sender: TObject);
begin
  if (MoveDir('ORDNER', 'ZIELPFAD': string)=true) then
     ShowMessage('Verschiebevorgang erfolgreich !')
end;

end.


knuffel


Keldorn - So 10.08.03 13:57

@knuffel

die anderen poss hast du gelesen? da steht das gleiche :roll:
außerdem hat sich der Frage abgemeldet und das Topic ist steinalt :roll:


knuffel - Mo 11.08.03 10:27

:oops: muss ich wohl übersehen haben