![]() |
Delphi-Version: 2010
Dateien kopieren und umbenennen
Guten Tag Com,
hab hier z.Z. wieder Wissensmangel :P Ich schidlere mal: Ich habe eine Textdatei mit z.B. 10 Namen:
Code:
Okay, nun kann der Benutzer eine Datei per opendialog auswählen.
hallo
okay datei3 delphi . . . . Auf Buttonclick soll die Datei, die der Benutzer ausgewählt hat in diesem Fall 10 mal Kopiert und in einen Ordner namens (z.B. 'output') verschoben werden. Die 10 .EXE-Dateien sollen nun jeweils einen Namen der Textdatei haben -> folglich:
Code:
Ich weiß nicht so ganz wie ich das am einfachsten lösen soll. Eine Stub dafür zu machen wäre ja unnötig oder? Wenn ichs richtig verstanden habe überschreibt man mit ner Stub ja nur die ressourcen... naja wie auch immer.
okay.EXE
datei3.EXE delphi.EXE Ich lasse meine Ideen zu dem Problem mal außenvor, da diese glaub nur zu verwirrung führen ;) ... Vielen Dank |
AW: Dateien kopieren und umbenennen
Nen "bisschen verwirrend" ist nur dein Vorhaben.
Kann irgendwie nicht den Sinn erkennen -.- Vllt solltest du es nochmal genau beschreiben, was du machen möchtest... |
AW: Dateien kopieren und umbenennen
Wie wäre es, dies mit COPY zu erledigen?
Delphi-Quellcode:
COPY Datei1. output\Datei1.EXE
COPY Datei2. output\Datei2.EXE ... COPY Datei10. output\Datei10.EXE Gruß K-H |
AW: Dateien kopieren und umbenennen
Oder in Delphi:
Delphi-Quellcode:
sourcefile := 'C:\quelle\datei.exe';
outputdir := ExtractFilePath(ParamStr(0)) + 'output\'; // namen ist eine TStringList mit den Namen aus der Datei for i := 0 to namen.count -1 do CopyFile(sourcefile, outputdir + namen[i] + '.exe'); |
AW: Dateien kopieren und umbenennen
Oder auch mit der Unit aus dem Thread
![]()
Delphi-Quellcode:
var
Source, Target : _FileName; lName : string; begin Source := 'C:\quelle\Datei.exe'; Target := Source; Target.cd( 'output' ); // wechselt den Pfad => "C:\quelle\output\Datei.exe" if Target.ForcePath then // legt den Pfad "C:\quelle\output\" an for lName in namen do begin Target.FileNameWoExt := lName; // ersetzt nur den Namen nicht die Extension CopyFile( Source, Target ); end; end; |
AW: Dateien kopieren und umbenennen
Habe mich an Andreas L. seine Variante gehalten, die auch soweit funktioniert bis auf paar kleinigkeiten.
Code:
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...
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; 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:
usw.
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; aber vlt. hat jem. ja ne wesentlich schönere variante! Danke im voraus |
AW: Dateien kopieren und umbenennen
Wie wäre es denn mit einer Boolean-Variablen?
Delphi-Quellcode:
Ungetestet.
//Erstmal nur neue Dateien
OnlyNew := true; for i := 0 to Dateien.Count - 1 do //CopyFile schlug fehl if not CopyFile(PChar(sourcefile), PChar(destfile), OnlyNew) then //Datei bereits vorhanden if GetLastError = ERROR_ALREADY_EXISTS then //Dialog bestätigt if MessageDlg(...) = mrYes then //weitere werden überschrieben OnlyNew := false; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz