Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Dateinamen mit (nummer) umbennen wenn doppelt (https://www.delphipraxis.net/212526-dateinamen-mit-nummer-umbennen-wenn-doppelt.html)

KodeZwerg 22. Feb 2023 19:02


Dateinamen mit (nummer) umbennen wenn doppelt
 
Hallo, ich habe ein Programm entwickelt was mir per Knopfdruck alle Dateien aus Unterordnern in den Hauptordner verschiebt um die Unterordner zu löschen.
Dieses Problem ist gelöst doch nun soll auch noch das hier gemacht werden:
Wenn im Hauptordner eine "Datei.ext" bereits vorhanden ist, füge wie in Windows üblich eine Nummer in einer Klammer ein.
Diese Problem ist gelöst aber leider nur partiell.
Soll heißen, momentan mach meine app folgendes

Exemplarische Ordner Struktur:
\Test\Datei.ext
\Test\a\Datei.ext
\Test\b\Datei.ext

meine App macht nun aus \a\ -> \Datei (1).ext und aus \b\ -> Datei (1)(1).ext

Von daher meine Frage, gibt es in Delphi was diese Art der Umbenennung bereits automatisiert bereitstellt?
So das "Datei (1).ext" und "Datei (2).ext" entsteht wenn "Datei.ext" bereits vorhanden ist.


Kann entfernt werden :lol:

Delphi-Quellcode:
function GetNewName(const ABase, AFile: WideString): WideString;
var
  s, ss: string;
  i: Integer;
begin
  Result := '';
  if (IncludeTrailingPathDelimiter(String(ABase)) = IncludeTrailingPathDelimiter(ExtractFilePath(String(AFile)))) then
    Exit;
  s := IncludeTrailingPathDelimiter(String(ABase)) + ExtractFileName(String(AFile));
  if (not FileExists(s)) then
    begin
      Result := WideString(s);
      Exit;
    end;
  i := 1;
  s := IncludeTrailingPathDelimiter(String(ABase));
  repeat
    ss := s + ExtractFileNameWOExt(ExtractFileName(String(AFile))) + ' (' + IntToStr(i) + ')' + ExtractFileExt(String(AFile));
    Inc(i, 1);
  until (not FileExists(ss));
  Result := WideString(ss);
end;

tomkupitz 22. Feb 2023 19:14

AW: Dateinamen mit (nummer) umbennen wenn doppelt
 
Reicht nicht sowas:

i:=1;

while FileExists(Name+'('+IntToStr(i)+')'+Ext) do
inc(i);

kopiere -> Name+Ext, Name+'('+IntToStr(i)+')'+Ext

Beste Grüße

KodeZwerg 22. Feb 2023 19:21

AW: Dateinamen mit (nummer) umbennen wenn doppelt
 
Danke tomkupitz, bin auf etwas gleiches gekommen :oops::oops::oops:


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