Entwickler-Ecke
Sonstiges (Delphi) - Ordner mit Inhalt kopieren.
Xadron - Fr 13.04.07 08:24
Titel: Ordner mit Inhalt kopieren.
Wie kann ich ganze Ordner mit inhalt kopieren?
Quelltext
1:
| xcopy(.\hier-mein-ganzer-ordner\, C:\test\); |
?
Xadron - Fr 13.04.07 10:18
Ich benutze dazu jetzt das:
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:
| function DoFileWork(aOperation: FILEOP_FLAGS; aFrom, aTo: AnsiString; Flags: FILEOP_FLAGS): Integer; var FromPath, ToPath: AnsiString; SHFileOpStruct: TSHFileOpStruct; begin FromPath := aFrom + #0#0; ToPath := aTo + #0#0; with SHFileOpStruct do begin Wnd := 0; wFunc := aOperation; pFrom := PAnsiChar('.\inhalt\'); if ToPath <> '' then begin pTo := PAnsiChar('D:\---\test\') end else begin pTo := nil; end; fFlags := Flags; end; Result := SHFileOperationA(SHFileOpStruct); end; |
Und zum Aufrufen:
Delphi-Quelltext
1:
| DoFileWork(Self.Handle, FO_COPY, strlFiles, nil, FOF_NOCONFIRMATION); |
Doch er meint:
[highlight][Fehler] Unit1.pas(55): Inkompatible Typen: 'String' und 'Integer'
[Fehler] Unit1.pas(55): Inkompatible Typen: 'Word' und 'Pointer'[/highlight]
Moderiert von
Christian S.: Code- durch Delphi-Tags ersetzt
Blackheart666 - Fr 13.04.07 11:46
Ganz schön schwer Text zu kopieren :wink:
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:
| function DoFileWork(aOperation: FILEOP_FLAGS; aFrom, aTo: AnsiString; Flags: FILEOP_FLAGS): Integer; var FromPath, ToPath: AnsiString; SHFileOpStruct: TSHFileOpStruct; begin FromPath := aFrom + #0#0; ToPath := aTo + #0#0; with SHFileOpStruct do begin Wnd := 0; wFunc := aOperation; pFrom := PAnsiChar(FromPath); if ToPath <> '' then begin pTo := PAnsiChar(ToPath) end else begin pTo := nil; end; fFlags := Flags; end; Result := SHFileOperationA(SHFileOpStruct); end;
procedure TForm1.Button1Click(Sender: TObject); begin DoFileWork(FO_COPY, 'C:\Von', 'C:\Nach', 0); end; |
Xadron - Fr 13.04.07 14:25
Ja ok geht auch eigendlich, aber ich möchte Ordner mit inhalt kopieren, was er nicht tut.
C:\test\ kopiert er also nicht und außerdem müss der "kopier hin ordner" existieren, da er
ihn nicht automatisch erstellt.
jakobwenzel - Fr 13.04.07 14:41
Dann such doch einfach, wie man einen Ordner erstellt und schreib das auch noch in die Prozedur. :wink:
Blackheart666 - Fr 13.04.07 15:05
aFrom ist der exestierende Ordner aTo wird erstellt.
Was soll daran nicht funktionieren, dann liegt es bestimmt wieder an deinen Pfaden.
Xadron - Fr 13.04.07 15:07
Für alle 30 Ordner einzeln?
Kann man nicht einfach einen Ordner wählen und alles was da drinn ist in einen Ordner machen und wenn halt 20 Unterordner noch nicht existieren, werden die automatisch erstellt?
Kann man nicht irgendwie C++ Funktionen wie:
Quelltext
1:
| xcopy (.\\dateien\\mozilla c:\\Progra~1\\ /c/e"); |
in delphi einbinden?
Blackheart666 - Fr 13.04.07 15:14
Was Denkst Du was der Code macht !
Wenns Bei Dir nicht hinhaut dann liegt es an Dir, bei Mir klappt das einwandfrei.
jaenicke - Fr 13.04.07 15:16
Du benutzt relative Pfade... ;-) Das geht halt schief, wen wunderts.
Du musst schon, wenn du das Exe-Verzeichnis meinst, dieses mit ExtractFilePath(ParamStr(0)) in demn Pfad dazuschreiben statt es mit .\ zu versuchen ;-).
Xadron - Fr 13.04.07 17:16
Danke erstmal.
Kannst du mir vieleicht noch ein Tipp geben, wo ich das hin bzw mit was ersetzen muss ?
nochmal der code von black~ :
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:
| function DoFileWork(aOperation: FILEOP_FLAGS; aFrom, aTo: AnsiString; Flags: FILEOP_FLAGS): Integer; var FromPath, ToPath: AnsiString; SHFileOpStruct: TSHFileOpStruct; begin FromPath := aFrom + #0#0; ToPath := aTo + #0#0; with SHFileOpStruct do begin Wnd := 0; wFunc := aOperation; pFrom := PAnsiChar(FromPath); if ToPath <> '' then begin pTo := PAnsiChar(ToPath) end else begin pTo := nil; end; fFlags := Flags; end; Result := SHFileOperationA(SHFileOpStruct); end;
procedure TForm1.Button1Click(Sender: TObject); begin DoFileWork(FO_COPY, 'C:\Von', 'C:\Nach', 0); end; |
Moderiert von
raziel: Code- durch Delphi-Tags ersetzt
jaenicke - Fr 13.04.07 17:47
Ähh,
das geht bei mir anstandslos... Auch mit x Unterordnern und Dateien drin.
Was ich meinte war, dass du sowas hattest:
Xadron hat folgendes geschrieben: |
Quelltext 1:
| xcopy (.\\dateien\\mozilla c:\\Progra~1\\ /c/e"); | |
Und ein Pfad .\dateien\mozilla geht nicht (bzw. eben manchmal schief), weil das kein absoluter Pfad ist.
Da musst du dann sowas machen:
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.Button1Click(Sender: TObject); begin DoFileWork(FO_COPY, ExtractFilePath(ParamStr(0)) + '\Von', 'C:\Nach', 0); end; |
Xadron - Fr 13.04.07 18:15
Danke Danke
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!