AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Dateien eines verzeichnisses umbenennen

Dateien eines verzeichnisses umbenennen

Ein Thema von Bea · begonnen am 25. Nov 2005 · letzter Beitrag vom 25. Nov 2005
Antwort Antwort
Bea

Registriert seit: 23. Dez 2004
53 Beiträge
 
RAD-Studio 2009 Ent
 
#1

Dateien eines verzeichnisses umbenennen

  Alt 25. Nov 2005, 09:13
Hallo,
ich habe ein Verzeichnis mit folgenden Dateien:

Datei.001
Datei.002
Datei.003
Datei.004
Datei.005
...
usw.

Nun möchte ich folgendes machen:

Wenn irgendeine beliebige Datei dieses Verzeichnisses gelöscht wird (z.B. Datei.002), sollen alle anderen Dateien entsprechend umbenannt werden, sodass keine Zählerlücken entstehen.

Datei.001--> bleibt
Datei.003 --> umbenennen zu Datei.002
Datei.004 --> umbenennen zu Datei.003

Das Ergebnis sollte dann so aussehen:

Datei.001
Datei.002
Datei.003
Datei.004

Kann mir jemand sagen, wie soetwas geht?
Besten dank im Vorraus
Bea
  Mit Zitat antworten Zitat
Benutzerbild von Remote1
Remote1

Registriert seit: 22. Okt 2003
Ort: Dippoldiswalde
252 Beiträge
 
Delphi 6 Personal
 
#2

Re: Dateien eines verzeichnisses umbenennen

  Alt 25. Nov 2005, 09:21
einfach rename
oder mit:
Delphi-Quellcode:
//uses sysutil //glaub ich
MoveFile(PChar(OldName), PChar(NewName));
nur weiß ich nicht wie du das genau machen willst
wenn du zb mitteln win explorer ne datei umbenennst, dann müsste dein programm ja alle dateien unbenennen
-->bedeutet also, das es die ganze zeit im hintergrund laufen muss und das verzeichnis überwacht

aber versuchs mal mir rename (delphi hilfe bringt dich da auch noch weiter)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Dateien eines verzeichnisses umbenennen

  Alt 25. Nov 2005, 09:24
Hallo Bea,

du wirst hoffentlich gute Gründe dafür haben die Namen lückenlos durchnummeriert zu halten. Allerdings würde ich nicht alle Namen umbennen, sondern beim Löschen von Datei 2 aus insgesamt 100 würde ich Datei.002 löschen und dann Datei.100 in Datei.002 umbenennen.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Dateien eines verzeichnisses umbenennen

  Alt 25. Nov 2005, 09:25
als erstes nimmst du eine Komponente "DirMonitor" oder "FileMonitor". Diese sind bei JCL oder RX-Tools oder auch seperat erhältlich. Natürlich kannst du auch die Funktionen der WinAPI nehmen.
Dort registrierst Du dein Verzeichnis, damit Du bei Änderungen benachrichtigt wirst.

Nun prüfst du, welche Datei verschwunden ist und machst das Umbenennen der anderen dateien.

so einfach ist das.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Bea

Registriert seit: 23. Dez 2004
53 Beiträge
 
RAD-Studio 2009 Ent
 
#5

Re: Dateien eines verzeichnisses umbenennen

  Alt 25. Nov 2005, 10:51
Hallo,
zur Hintergrundinformation:

Die Dateien
Datei.001
Datei.002
Datei.003
...
sind im Grunde ein Dokument mit mehreren Seiten.

Datei.005 ist also die 5.Seite in dem Dokument.

Mein Programm geht nun jede Seite durch und schaut nach, ob es sich um eine Leerseite handelt und löscht diese dann.
Das hab ich auch alles schon fertig, da brauch ich keine Hilfe, das dient nur als Hintergrundinformation.
Um nun den Zusammenhang des Dokumentes wiederherzustellen, müssen die Seiten nach der gelöschten Seite umbenannt (Endung decrementieren) werden z.B.eben so:
Datei.001--> bleibt
Datei.003 --> umbenennen zu Datei.002
Datei.004 --> umbenennen zu Datei.003

Die reihenfolge der Seiten muss beibehalten werden.
Deshalb kann ich auch nicht, wie von marabu vorgeschlagen die Seite Datei.100 zu Datei.002 umbenennen.
Das muss schon die 100. bzw, nach dem Löschen einer Seite die 99. Seite bleiben.

Ich hoffe ich konnte das einigermaßen verständlich erklären.
Danke Bea
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
36.984 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Dateien eines verzeichnisses umbenennen

  Alt 25. Nov 2005, 10:59
Dann benenn sie doch einfach mit Delphi-Referenz durchsuchenRenamefile wie gewünscht um. Wo ist das Problem?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Brüggendiek

Registriert seit: 13. Dez 2002
Ort: Dortmund
275 Beiträge
 
Delphi 5 Standard
 
#7

Re: Dateien eines verzeichnisses umbenennen

  Alt 25. Nov 2005, 11:16
Hallo Bea!

Zitat von Bea:
Mein Programm geht nun jede Seite durch und schaut nach, ob es sich um eine Leerseite handelt und löscht diese dann.
Wo ist das Problem?
Die Nummern sind doch aufsteigend belegt und ich nehme an, daß Du einen Zähler von 1 bis Maximum für die Prüfung hochzählst. Einfach eine weitere Variable mit dem neuen Seitenzähler mitlaufen lassen und wenn alte und neue Nummer ungleich sind, umbenennen.

Du ziehst doch Seiten nach vorne in die Lücke, also wird Nummer "n" gelöscht und dann "n+1" in "!n" umbenannt - das geht immer.
Das Einfügen einer neuen Datei wäre schon etwas aufwändiger.

Gruß

Dietmar Brüggendiek
Dietmar Brüggendiek
Die 6 Probleme des Programmierers: 1. dauert das länger, als man 2. glaubt, 3. geht das nicht so, wie man sich das 4. schlau überlegt hat, und 5. sitzt der Fehler da, wo man ihn 6. zuletzt sucht
  Mit Zitat antworten Zitat
Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#8

Re: Dateien eines verzeichnisses umbenennen

  Alt 25. Nov 2005, 11:22
Hallo Bea,

so geht's:

Delphi-Quellcode:
const
  endwert = 100;
var
  j, i, akt, lst : integer;
  aerw, lerw : string[3]; // Aktuelle ERWeiterung, LetzteERWeiterung
  pfn, afn, lfn : string;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  pfn := 'c:\tmp\datei.';
  akt := 1;
  lst := 0;
  repeat
    aerw := IntToStr(akt);
    while length(aerw) < 3 do aerw := '0' + aerw;
    afn := pfn + aerw;
    if FileExists(afn) then begin
      inc(lst);
      if lst <> akt then begin
        lerw := IntToStr(lst);
        while length(lerw) < 3 do lerw := '0' + lerw;
        lfn := pfn + lerw;
        renameFile(afn, lfn);
      end;
    end;
    inc(akt);
  until akt > endwert;
end;
Optimieren kannst Du es sicherlich selbst.

mfg
eddy
  Mit Zitat antworten Zitat
Bea

Registriert seit: 23. Dez 2004
53 Beiträge
 
RAD-Studio 2009 Ent
 
#9

Re: Dateien eines verzeichnisses umbenennen

  Alt 25. Nov 2005, 11:39
Oh, danke eddy, das funktioniert ja prima.
Nun muss ich mir das jetzt erstmal verinnerlichen, will ja auch was dabei lernen .
Da brauch ich ja das Decrementieren der Werte 002, 003, 004 usw. gar nicht.

Also vielen Dank erstmal
Bea
  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 09:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf