Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#16

Re: Dateiname: Ersetzen/Löschen von Teilstrings

  Alt 31. Mai 2009, 20:52
siehe Delphi-Referenz durchsuchenStringReplace
Die Delphi-OH
Beschreibung
TReplaceFlags besteht aus einer Menge von Flags, die steuern, wie ein Teilstring innerhalb eines Strings gesucht und ersetzt wird. Diese Menge kann folgende Werte enthalten:

rfReplaceAll Alle Fundstellen werden ersetzt. Wenn dieses Flag nicht vorhanden ist, wird nur die erste Fundstelle des gesuchten Teilstrings ersetzt.
rfIgnoreCase Bei der Suche nach dem Teilstring wird die Groß-/Kleinschreibung nicht berücksichtigt. Wenn dieses Flag nicht vorhanden ist, werden nur Fundstellen berücksichtigt, deren Schreibweise genau mit dem Suchstring übereinstimmt.


PS:
write('Ordner (mit Backslash): '); das "mit Backslash" kannst weglassen
dir := IncludeTrailingBackslash(dir); hängt das \ notfalls an ... siehe Delphi-Referenz durchsuchenIncludeTrailingBackslash

für lastSlash gibt es Delphi-Referenz durchsuchenExtractFileName

FindFirst sucht übrigens so auch Verzeichnisse, welche dann ebenfalls umbenannt würden.

ja und namestring wird nie verwendet

der Fehler liegt hier
RenameFile(datei,lastSlash(datei)+DateiName); lastSlash(datei) liefert kein Verzeichnis und datei ist nicht die gefundene Datei.
und bei der suche würde ich zumindestens eine Suchmaske mit angeben ... damit auch was gefunden wird
Delphi-Quellcode:
datei := IncludeTrailingBackslash(datei);
If FindFirst (datei + '*.*', faAnyFile, FindRec) <> 0
Then Repeat
     If (FindRec.Name <> '.') and (FindRec.Name <> '..')
     Then begin
          DateiName := FindRec.Name;
          if (pos(Ren,DateiName) > 0)
          Then begin
               DateiName := StringReplace(DateiName, Ren, RenIn, [rfReplaceAll]);
               RenameFile(datei + FindRec.Name, datei + DateiName);
          end

// PS: den Variablennamen "datei" besser in "verzeichnis" umbenennen
$2B or not $2B
  Mit Zitat antworten Zitat