Verzeichnisse kopieren

Für Fragen von Einsteigern und Programmieranfängern...
Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

Re: Verzeichnisse kopieren

Beitrag von six1 »

du solltest auch den richtigen Button für Code anklicken...
Image2.jpg
Image2.jpg (4.53 KiB) 740 mal betrachtet
Gruß, Michael

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1432
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Verzeichnisse kopieren

Beitrag von fliegermichl »

Aliobaba hat geschrieben:
Sa 13. Mär 2021, 14:06
(Schade, dass die Leerzeichen zum Zeilenbeginn nicht angezeigt werden; das macht es etwas unübersichtlicher)
Wenn du statt <quote> <code=laz> schreibst, dann werden die Leerzeichen angezeigt und der Quelltext auch farblich hervorgehoben
Zuletzt geändert von fliegermichl am Sa 13. Mär 2021, 14:42, insgesamt 1-mal geändert.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1432
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Verzeichnisse kopieren

Beitrag von fliegermichl »

six1 war schneller :-)

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: Verzeichnisse kopieren

Beitrag von Aliobaba »

... und mit externen Programmaufrufen habe ich es auch schon mal versucht (gelöst?)

Code: Alles auswählen

Function Verzeichnis_kopieren ( A_Verzeichnis , A_Zielverzeichnis , A_Meldung_1 , A_Meldung_2 : string ) : Integer;
var
    BoxStyle ,  Reply : integer;
    AProcess: TProcess;
begin
  {$IFDEF WINDOWS}
    if not DirectoryExists (A_Verzeichnis) then
    begin
       Showmessage('Dieses Quellverzeichnis gibt es nicht!');
       exit;
    end;
  {$ENDIF}
  
  if Fileexists (A_Zielverzeichnis) then
  begin
    with Application do
    begin
     BoxStyle := MB_ICONQUESTION + MB_YESNO;
     Reply := MessageBox(PChar('Dieses Zielverzeichnis gibt es bereits!'+LineEnding+'Vorhandene Daten werden ersetzt!'+ LineEnding + LineEnding +'OK?'   ), 'Sicherheitsabfrage', BoxStyle);
     if Reply = IDYES then
           begin
           end
           else
           begin
               exit;
           end;
     end;
  end;
  if A_Meldung_1 <> '' then Showmessage( A_Meldung_1 );

  Screen.Cursor := crHourGlass;
  AProcess := TProcess.Create(nil);
  {$IFDEF WINDOWS}
    AProcess.CommandLine := 'robocopy "' + A_Verzeichnis + '" "' + A_Zielverzeichnis + '"';
  {$ENDIF}
  {$IFDEF LINUX}
    AProcess.CommandLine := 'cp -rf "'  + A_Verzeichnis + '" "' + A_Zielverzeichnis + '"'; // nicht mit RoboCopy, also kein /MIR anfügen
  {$ENDIF}

  AProcess.CommandLine := StringReplace ( AProcess.CommandLine , '/' , A_Slash , [rfReplaceAll] );
  AProcess.CommandLine := StringReplace ( AProcess.CommandLine , '\' , A_Slash , [rfReplaceAll] );

  {$IFDEF WINDOWS}
      AProcess.CommandLine := AProcess.CommandLine + ' /MIR'; // jetzt erst!! sonst wird der Slash geändert: muss immer so sein "/MIR"
  {$ENDIF}

   AProcess.Options := AProcess.Options + [poWaitOnExit];  //, poUsePipes]; //+ [poWaitOnExit];  //, poUsePipes];
   AProcess.Execute;
   AProcess.Free;
   Screen.Cursor := crDefault;
   if A_Meldung_2 <> '' then Showmessage( A_Meldung_2 );
end;                    
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6199
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Verzeichnisse kopieren

Beitrag von af0815 »

Als Code formatieren hilft. Du hast es als Quote formatiert.

Edit ich war viel zu langsam
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten