Delphi-PRAXiS

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

Susanne 1. Feb 2005 13:04


kopieren und gleichzeitig umbenennen einer Datei
 
Ich möchte eine Datei kopieren und ihr im Zielverzeichnis einen neuen Namen geben

Delphi-Quellcode:
von:= ExtractFilePath(Sourcepath)+KeyValue+'.tif';
nach:= Exportpath+'\'+ExportName+'.tif';
CopyFile(PChar(von), PChar(nach), False);
Aber wenn ich das so versuche, kopiert er die Datei gar nicht erst

Delphi-Quellcode:
von:= ExtractFilePath(Sourcepath)+KeyValue+'.tif';
nach:= Exportpath+'\'+KeyValue+'.tif';
nach2:= Exportpath+'\'+ExportName+'.tif';
if CopyFile(PChar(von), PChar(nach), False) then
   begin
      RenameFile(nach,nach2 );
   end;
Wenn ich sie erst mit dem gleichen Namen ins Zielverzeichnis stelle, kopiert er die Datei, aber im nächsten Schritt benennt er sie nicht um?

Luckie 1. Feb 2005 13:08

Re: kopieren und gleichzeitig umbenennen einer Datei
 
Gib doch beim Kopieren gleich einen anderen Dateinamen an. Dann ist es bei der fehlersuche immer sehr Hilfreich sich mal die Inhalte der Variablen anzugucken und dann auch mal SeyErrorMessage(GetLastError) aufzurufen.

Susanne 1. Feb 2005 13:15

Re: kopieren und gleichzeitig umbenennen einer Datei
 
bei der ersten Variante habe ich ja gleich den neuen Namen für die Datei angegeben,aber da hat er sie noch nicht mal kopiert und in den Variablen standen die richtigen Pfade und Dateinamen drin

Luckie 1. Feb 2005 13:16

Re: kopieren und gleichzeitig umbenennen einer Datei
 
Schön. Und jetzt?

Luckie 1. Feb 2005 13:26

Re: kopieren und gleichzeitig umbenennen einer Datei
 
Was sagt denn nun GetLastError? :roll:

Susanne 1. Feb 2005 13:28

Re: kopieren und gleichzeitig umbenennen einer Datei
 
der zieldatei name kann Zeichen enthalten wie zb /, kann das daran liegen, dass er die Datei nicht umbenennen will. Wie kann ich ihn dazu überreden, es trotzdem zu tun?

Steve 1. Feb 2005 13:30

Re: kopieren und gleichzeitig umbenennen einer Datei
 
Hi,

prüf vorher, ob der Zieldateiname "verbotene" Zeichen enthält, z.B. /*? etc. und entferne/ersetze diese. Solche Zeichen kann ein Dateiname nicht enthalten, da kannste niemals nie nicht Windows dazu überreden :zwinker:

Gruß
Stephan :dance:

Luckie 1. Feb 2005 13:33

Re: kopieren und gleichzeitig umbenennen einer Datei
 
Nein. Sollte der Dateiname nicht den namenskonventionen für einen Dateinamen entsprechen, dann geht es nicht:
Zitat:

Zitat von PSDK
Naming Conventions
The following rules enable applications to create and process valid names for files and directories regardless of the file system in use:
  • Use a period (.) to separate the base file name from the extension in a directory name or file name.
  • Backslashes (\) are used to separate components in paths (dividing the file name from the path to it, or directories from one another in a path). You cannot use them in file or directory names, however, they may be required as part of volume names— for example, "C:\". Note that UNC names must adhere to the following format: \\<server>\<share>.
  • Use any character in the current code page for a name, except characters in the range 0 through 31 or any character explicitly disallowed by the file system. A name can contain characters in the extended character set (128–255). However, it cannot contain the following reserved characters:
    < > : " / \ |
  • The following reserved device names cannot be used as the name of a file: CON, PRN, AUX, CLOCK$, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9. Also avoid these names followed by an extension (for example, NUL.tx7).
  • Do not assume case sensitivity. Consider names such as OSCAR, Oscar, and oscar to be the same.
  • Do not end a file or directory name with a trailing space or a period. Although the underlying file system may support such names, the operating system does not.
  • Use a period (.) as a directory component in a path to represent the current directory.
  • Use two consecutive periods (..) as a directory component in a path to represent the parent of the current directory.


s.h.a.r.k 1. Feb 2005 14:08

Re: kopieren und gleichzeitig umbenennen einer Datei
 
Tach!
Ich habe nen einfacheren Befehl: Wie wäre es denn mit
Code:
function copyFileTo(const Source:String, const Destinaton: String):Boolean:
Da geht des doch recht leicht?! Brauchst nur die USES "idGlobal" hinzufügen! Der Rest mit dem Umbenennen geht dann ganz einfach... Das solltest du dann auch noch schaffen *lol*

mfg shark

Dax 1. Feb 2005 14:14

Re: kopieren und gleichzeitig umbenennen einer Datei
 
Es geht auch, wenn man nur "Classes" einbindet ;-) IdGlobal hat ja nicht jeder, weils Teil der Indys ist.

Delphi-Quellcode:
function CopyFile(Surce, Dest: String): Boolean;
var F, T: TFileStream;
begin
  try
    Result := true;
    try
      F := TFileStream.Create(Source, fmRead);
      T := TFileStream.Create(Dest, fmCreate);
      T.CopyFrom(F, 0);
    finally
      F.Destroy;
      T.Destroy;
    end;
  except
    Result := false;
  end;
end;
@Luckie: Verhau mich nicht, nur weil die Resourcenschutzblöcke nicht ganz stimmen ;)


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