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