AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Algorithmus für Datei-Umbenennen?

Ein Thema von Benmik · begonnen am 13. Feb 2016 · letzter Beitrag vom 14. Feb 2016
 
Benmik

Registriert seit: 11. Apr 2009
570 Beiträge
 
Delphi 12 Athens
 
#1

Algorithmus für Datei-Umbenennen?

  Alt 13. Feb 2016, 16:59
Ich stehe vor dem Problem, Dateien in einem Verzeichnis umzubenennen und dabei das Problem von Dateinamenkollisionen möglichst effizient zu lösen.

Es wird ein Grund-Dateiname erstellt und eine fortlaufende Zahl in frei konfigurierbarer Weise (Position, Stellen, Startzahl, Vornullen) eingefügt. Anzahl und Auswahl der umzubenennenden Dateien können völlig variieren. Die umbenannten Dateien bilden dann einen homogenen Block mit gleichem Grundnamen und fortlaufender Nummer. Also in etwa das, was die zahlreichen Datei-Umbenenner so machen, mit dem Unterschied, dass es sein kann, dass eine Datei innerhalb des Blocks auf eine neue Position soll. Dann sollen die Dateinamen innerhalb des Blocks entsprechend angepasst werden.

Ich habe nicht den Überblick über die ganze Programmvielfalt, aber die Umbenenner, die ich kenne, machen es sich einfach und stellen bei Kollisionen schlicht die Arbeit ein. Das geht besser.

Mein bisheriger Ansatz:

Alle Dateinamen sind in einer TObjectList<TDateiInfo>. TDateiInfo ist eine Klasse mit einer Reihe Feldern, von denen hier nur "Dateiname" und "DateinameNeu" interessant sind. Die ObjectList verfügt über die notwendigen Funktionen zum Sortieren, Vergleichen und BinarySearch.

Von der ObjectList werden zwei weitere Instanzen erzeugt. In die eine kommen alle Dateien außerhalb des Blocks, in die andere die umzubenennenden, wobei in "DateinameNeu" dann auch gleich der neue Dateiname gespeichert wird. Bei jedem neuen Dateinamen wird in beiden Listen gesucht, ob der entsprechende Name schon vorhanden ist. Ist dies in der "Außenliste" der Fall, wird abgebrochen, da dieser Zustand nicht reparierbar ist. Gibt es auch "intern" keine Duplikate, dann ist die Sache einfach, es wird einfach ruckizucki durchbenannt.

Natürlich geht es hier nur um den zweiten Fall. Klar ist, dass es Kombinationen gibt, wo die Vergabe eines temporären Dateinamens unumgänglich ist. Und genau das will ich durch "intelligentes" Umbenennen auf das unvermeidbare Maß (am besten natürlich Null) drücken.

Und das ist letztlich meine Frage: Gibt es für sowas einen schlauen Algorithmus?
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:39 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