Einzelnen Beitrag anzeigen

Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#1

Dateinamen mit (nummer) umbennen wenn doppelt

  Alt 22. Feb 2023, 19:02
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

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;
Gruß vom KodeZwerg

Geändert von KodeZwerg (22. Feb 2023 um 19:14 Uhr)
  Mit Zitat antworten Zitat