Einzelnen Beitrag anzeigen

Lyan

Registriert seit: 5. Aug 2011
188 Beiträge
 
#6

AW: Dateien kopieren und umbenennen

  Alt 30. Nov 2011, 12:07
Habe mich an Andreas L. seine Variante gehalten, die auch soweit funktioniert bis auf paar kleinigkeiten.

Code:
procedure TFormSpreader.Button2Click(Sender: TObject);
var i: Integer;
    sourcefile, outputdir : String;
begin
  sourcefile := OpenDialog1.filename;
  CreateDir(ExtractFilePath(OpenDialog1.FileName) + 'output\');
  outputdir := ExtractFilePath(OpenDialog1.filename) + 'output\';
  // namen ist eine TStringList mit den Namen aus der Datei
  for i := 0 to memo1.Lines.count -1 do
  begin
    if (FileExists(outputdir + Memo1.Lines[i] + '.exe') OR FileExists(outputdir + Memo1.Lines[i])) then
    begin
      if MessageDlg('Eine oder mehrere Dateien wurden gefunden die bereits existieren! Möchten Sie diese überschreiben?', mtWarning,[mbYes,mbNo],0) = mrYes then
      CopyFile(PChar(sourcefile), PChar(outputdir + memo1.lines[i] + '.exe'), True);
    end
    else
      CopyFile(PChar(sourcefile), PChar(outputdir + memo1.lines[i] + '.exe'), false);
  end;
end;
So next Problem: ich möchte ja fragen ob die Dateien überschrieben werden sollen, wie könnte ich denn eine Abfrage machen, dass diese Aktion für alle Dateien angewendet wird. Also z.B. im Messagdlg noch YestoALL...

Aber wie spring ich dann aus den Abfragen weg?

Muss ich dann intern, also extra für das "YesTOALL" eine neue Schleife machen, die dann alles überschreibt, bzw. die Dateien die schon existieren nicht überschreibt?

Meine Idee wäre dann eben so:

Code:
case messagedlg('möchten sie ersetzen?', mtWarning, [mbYes,mbNo,mbYestoall,mbNotoall], 0) of

mbYes: ....

mbNo : ....

mbYesToAll : for i 0 to memo1.lines.count -1 do
             begin
               copyfile(pchar(source), pchar(output), TRUE)
             end;
usw.

aber vlt. hat jem. ja ne wesentlich schönere variante!

Danke im voraus
  Mit Zitat antworten Zitat