Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi RenameFile(oldFile, newFile) (https://www.delphipraxis.net/70194-renamefile-oldfile-newfile.html)

Luckie 26. Mai 2006 17:20

Re: RenameFile(oldFile, newFile)
 
Zitat:

Zitat von qb-tim
Das Programm das ich schreibe speichert alle Ordner und Dateien in 'C:\Program Files\Vokabeltrainer XXL\...'. Es erstellt diese Ordner wenn sie nicht vorhanden sind.

Diesen Ordner gibt es bei mir nicht und ich würde sehr allergisch reagieren, wenn du diesen erstellen würdest, da dein Programm in das Progammsystemverzeichnis gehört und das ist unter einem deutschen Windows: C:\Programme.

qb-tim 26. Mai 2006 18:44

Re: RenameFile(oldFile, newFile)
 
Was ist nun bei meiner "Umbenennungs"-Prozedur falsch?
Wieso funktioniert sie nicht?

Klaus01 26. Mai 2006 19:56

Re: RenameFile(oldFile, newFile)
 
Hallo Tim,

bist Du Dir sicher, das keine Datei in dem Ordner geöffnet ist?

meine TestMethode funktioniert bei mir:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  renameFile('e:\ren Test','e:\ren Test2');
end;
oder so

Delphi-Quellcode:
procedure FileRename(oldFileName,newFileName:String);
var
  anyFile : File;
begin
  AssignFile(anyFile,oldFileName);
  rename(anyFile,newFileName);
end;
Kannst Du mal zu Kontrolle ausgeben welche Verzeichnisse du umbennen möchtest.
Ich denke da liegt Dein Fehler begraben.

Grüße
Klaus

qb-tim 27. Mai 2006 09:00

Re: RenameFile(oldFile, newFile)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Der Ordner war am Zeitpunkt der Umbenennung völlig leer.

Ich habe die komplette Unit3 angehängt, damit du (wenn du Lust dazu hast) darin rumstöbern kannst.

Klaus01 27. Mai 2006 10:57

Re: RenameFile(oldFile, newFile)
 
Hallo Tim,

Delphi-Quellcode:
procedure TForm3.EditBuchClick(Sender: TObject);
var f, g, s, t : String;
begin
  s := ListBox1.Items[ListBox1.ItemIndex];
  t := InputBox('Buch ändern', s, '');
  if t <> '' then
    if MessageDlg(s + ' zu ' + t + ' ändern?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
    begin                                                 // <-- hier Breakpoint setzen
      f := 'C:\Program Files\Vokabeltrainer XXL\' + t;
      g := 'C:\Program Files\Vokabeltrainer XXL\' + s;
      RenameFile(g, f);
      Form3.FormActivate(Form3);
    end;
end;
setze doch mal einen Breakpoint an der markierten Stelle
und lass Dir die Variablen f und g einmal ausgeben.
Variablen anschauen geht wenn Du die Variable markierst und dann crtl-F5
drückst. Die Variable wird dann der Watchlist hinzugefügt.
In der Watchlist werden die Werte der Variablen ausgegeben.

Ich bin mal gespannt ob f und g die Werte haben, die Du Dir so vorstellst.

Was vielleicht auch nicht schlecht wäre, Deinen Sourcecode ein wenig mehr zu kommentieren
und den ganzen Listboxen und Buttons Namen zu geben unter den man sich auch was vorstellen kann.
So ist es so ziehmlich unmöglich Dein Programm zu verstehen.

Grüße
Klaus

qb-tim 27. Mai 2006 13:30

Re: RenameFile(oldFile, newFile)
 
Danke. Ich probier's gleich aus.

qb-tim 27. Mai 2006 13:47

Re: RenameFile(oldFile, newFile)
 
Etwas sehr merkwürdiges ist passiert:

Ich habe zuerst, ohne mein Programm zu ändern (nicht einmal Kommentare zu schreiben), mein Program getestet und es funktionierte NICHT.

Dann habe ich auf den Vorschlag von Klaus Kommentare geschreiben und den Breakpoint gesetzt.
:arrow: Das Programm hielt nicht an.

Ich habe dann den Breakpoint entfernt und das Programm noch einmal laufen lassen.

Die Umbenennung hat funktioniert! Sowie bei einem leeren als auch bei einem Ordner mit mehreren Dateien!

:angel:

qb-tim 27. Mai 2006 13:55

Re: RenameFile(oldFile, newFile)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier ist die funktionierende Version.

Ich habe mehr Kommententare hinzugefügt. - Ist das jetzt verständlicher?

Danke für eure Hilfe! :thumb: :wink: :zwinker:

:dp: :cheers: :dp:

semo 27. Mai 2006 15:27

Re: RenameFile(oldFile, newFile)
 
ich würde das ganze projekt oder zumindest die *.dfm-Datei mit zur *.pas-Datei posten beim nächsten Mal. Dann kann man auch sehen wie du das Formular aufgebaut hast.

Beim Überfliegen ist mir aufgefallen, dass du den Pfad 'C:\Program Files\Vokabeltrainer XXL\...' immer wieder aufrufst. Du solltets entweder eine Konstante per const definieren und diese aufrufen oder den Pfad deines Programms zur Laufzeit auslesen (zum Beispiel im FormCreate) und dieses in einer Variable festhalten, auf deren Inhalt du dann nach belieben zugreifen kannst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:44 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz