AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dateien kopieren und umbenennen

Ein Thema von Lyan · begonnen am 30. Nov 2011 · letzter Beitrag vom 30. Nov 2011
Antwort Antwort
Lyan

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

Dateien kopieren und umbenennen

  Alt 30. Nov 2011, 00:08
Delphi-Version: 2010
Guten Tag Com,

hab hier z.Z. wieder Wissensmangel

Ich schidlere mal:

Ich habe eine Textdatei mit z.B. 10 Namen:

Code:
hallo
okay
datei3
delphi
.
.
.
.
Okay, nun kann der Benutzer eine Datei per opendialog auswählen.

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:
okay.EXE
datei3.EXE
delphi.EXE
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.
Ich lasse meine Ideen zu dem Problem mal außenvor, da diese glaub nur zu verwirrung führen ...


Vielen Dank
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Dateien kopieren und umbenennen

  Alt 30. Nov 2011, 00:41
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...
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Dateien kopieren und umbenennen

  Alt 30. Nov 2011, 06:28
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Dateien kopieren und umbenennen

  Alt 30. Nov 2011, 08:13
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');
Andreas Lauß
Blog
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Dateien kopieren und umbenennen

  Alt 30. Nov 2011, 09:09
Oder auch mit der Unit aus dem Thread http://www.delphipraxis.net/158152-d...-datentyp.html
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;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Lyan

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

AW: Dateien kopieren und umbenennen

  Alt 30. Nov 2011, 11: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
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Dateien kopieren und umbenennen

  Alt 30. Nov 2011, 12:20
Wie wäre es denn mit einer Boolean-Variablen?
Delphi-Quellcode:
//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;
Ungetestet.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz