Registriert seit: 1. Feb 2018
3.691 Beiträge
Delphi 11 Alexandria
|
Dateinamen mit (nummer) umbennen wenn doppelt
22. Feb 2023, 20: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;
Geändert von KodeZwerg (22. Feb 2023 um 20:14 Uhr)
|
|
Zitat
|