Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Datei kopieren und umbenennen (https://www.delphipraxis.net/187520-datei-kopieren-und-umbenennen.html)

strom 6. Dez 2015 12:28


Datei kopieren und umbenennen
 
Liste der Anhänge anzeigen (Anzahl: 1)
hallo,

bekomme hier eine Fehlermeldung! Siehe Anhang!
Was muss geändert werden?

Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Filectrl, Vcl.ExtCtrls,
  Vcl.ComCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Edit1: TEdit;
    Label1: TLabel;
    Button2: TButton;
    Panel2: TPanel;
    Edit2: TEdit;
    Label2: TLabel;
    Panel3: TPanel;
    Button3: TButton;
    Button4: TButton;
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
   zaehler: integer =1;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
var
  Dir: String;
begin
  SelectDirectory('Verzeichnispfad wählen', '', Dir);
  ShowMessage(Dir);
  Edit1.Text := (Dir);
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  Dir: String;
begin
  SelectDirectory('Verzeichnispfad wählen', '', Dir);
  ShowMessage(Dir);
  Edit2.Text := (Dir);
end;

procedure TForm1.Button4Click(Sender: TObject);
var
  mem : TMemoryStream;
  FilePathA, FilePathB : string;
  i:integer;
begin
  inc(zaehler);
  FilePathA := Edit1.Text + (ParamStr(i))+  '*.asc';; // Pfad der zu kopierenden Datei
  FilePathB := Edit2.Text + (ParamStr(i)) +(FormatDateTime('yymmdd',now))+(Format('%.4d',[zaehler]) + '.asc'); // Zielpfad
  mem := TMemoryStream.Create;
  try
    mem.LoadFromFile(filePathA);
    mem.SaveToFile(FilepathB);
  finally
    mem.Free;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Edit1.Clear;
 Edit2.Clear;
end;

end.

frankyboy1974 6. Dez 2015 12:42

AW: Datei kopieren und unbenennen
 
hallo,

ich gehe mal davon aus, dass die Datei die du kopieren möchtest nicht wirklich 'input*.asc' heisst. Ein '*' ist im Dateinamen gar nicht gültig.

mfg

strom 6. Dez 2015 12:51

AW: Datei kopieren und unbenennen
 
Hallo,
im Verzeichnis stehen zurzeit nur eine "Test.asc" Datei.
Später möchte ich alle Dateien kopieren und mit fortlaufend (Nr.) und Datum beziffern.

frankyboy1974 6. Dez 2015 13:04

AW: Datei kopieren und unbenennen
 
hallo,

dann musst du im Moment die Zeile

Delphi-Quellcode:
FilePathA := Edit1.Text + (ParamStr(i))+ '*.asc';; // Pfad der zu kopierenden Datei


in

Delphi-Quellcode:
FilePathA := Edit1.Text + (ParamStr(i))+ '\test.asc';; // Pfad der zu kopierenden Datei
ändern.

Wie man über ein Verzeichnis iteriert und Dateien nach einem vorgegeben Muster sucht ('*.asc'), findest du bestimmt in diesem Forum (Stichwort: TSearchrec).

mfg

DeddyH 6. Dez 2015 13:05

AW: Datei kopieren und unbenennen
 
Und was ändert das an der Tatsache, dass Du das * im Code stehen hast?

Luckie 6. Dez 2015 13:07

AW: Datei kopieren und unbenennen
 
Wie schon gesagt wurde. Wildcards sind in Dateinamen nicht erlaubt. LoadFromFile läd genau eine Datei. Woher soll LoadFromFile denn wissen, welche Datei gemeint ist?

strom 6. Dez 2015 13:24

AW: Datei kopieren und unbenennen
 
Hallo,

das * sollte als Joker fungieren?
Möchte unterschiedliche ASCII Dateien aus einem Ordner umbenennen und kopieren.

1234567891.asc
1234567892.asc
1234567893.asc
1234567894.asc

Dalai 6. Dez 2015 13:36

AW: Datei kopieren und unbenennen
 
Wenn es dir nur ums Kopieren geht, warum benutzt du dann nicht eine normale Kopierfunktion wie MSDN-Library durchsuchenCopyFile? Wozu die Datei in den Speicher lesen, um sie dann gleich wieder rauszuschreiben?

Und: Natürlich musst du mit irgendeiner Art Schleife über deine Dateien iterieren (üblicherweise mit FindFirst/FindNext/FindClose), um die Dateien nacheinander zu kopieren. Nur weil man die Wildcard-Syntax von diversen Programmen her kennt, bedeutet das nicht, dass die (LowLevel-)Funktionen ebenso damit umgehen können.

MfG Dalai


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:17 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