Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi MoveFile macht einfach nix(ohne Fehlermeldung) (https://www.delphipraxis.net/52349-movefile-macht-einfach-nix-ohne-fehlermeldung.html)

Flippo 28. Aug 2005 15:27


MoveFile macht einfach nix(ohne Fehlermeldung)
 
Hallo,
habe mal wieder ein für mich unlösbares Problem: :wall: :( :cry: :gruebel: :kotz:
Die Prozedur soll:
- den Artist einer im OpenDialog1 ausgewählten Mp3Datei erkennen(klappt)
- im selben Verzeichnis einen Ordner erstellen der so heisst wie der Artist (klappt auch)
- die Datei in den Ordner verschieben (klappt nicht)
Komischer weise klappt es wenn ich den Ordner nach dem Genre benenne das aus einem Array rausgesucht wird. Wenn ich Artist oder Title nehme klappt es nicht mit dem Verschieben.
Wenn ich an den Ordnernamen hinter Artist noch etwas anfügen will geht das auch verloren und bei genre nicht deshalb vermute ich das es mit den Wert den ich als Artist kriege zusammenhängt.

Delphi-Quellcode:
TID3Tag = record
    ID: string[3];
    Titel: string[30];
    Artist: string[30];
    Album: string[30];
    Year: string[4];
    Comment: string[30];
    Genre: Byte;
  end;

procedure Sortieren;
var Verzeichnis,Dateiname,Oldname,Newname:string;
begin
if form1.OpenDialog1.Execute then
begin
Verzeichnis:=extractfilepath(form1.opendialog1.filename);
Dateiname:=extractfilename(form1.opendialog1.filename);
with readID3Tag(Verzeichnis+'\'+Dateiname) do
begin
  if (DirectoryExists(Verzeichnis+'\'+Artist)=False) then
  begin
  createDir(Verzeichnis+'\'+Artist);
  end;
  Oldname:=Verzeichnis+'\'+Dateiname;
  Newname:=Verzeichnis+'\'+Artist+'\'+Dateiname;
  movefile(PChar(Oldname),PChar(Newname));
end;//With File do
end;//Open Dialog
end;
Vielen dank im Voraus

SirThornberry 28. Aug 2005 15:30

Re: MoveFile macht einfach nix(ohne Fehlermeldung)
 
existiert der Ordner denn wo die Datei hinn verschoben werden soll? und was gibt MoveFile zurück?

Flocke 28. Aug 2005 15:32

Re: MoveFile macht einfach nix(ohne Fehlermeldung)
 
Ändere das mal so ab:
Delphi-Quellcode:
if not movefile(PChar(Oldname),PChar(Newname)) then
  RaiseLastOsError;
Dann bekommst du wenigstens 'ne Fehlermeldung.

[Nachtrag]

Klappt den das ReadID3Tag? Welchen Wert hat die Variable "Artist"?

SirThornberry 28. Aug 2005 15:47

Re: MoveFile macht einfach nix(ohne Fehlermeldung)
 
ExtractFilePath liefert dir den Pfad auch mit abschließendem '\'.
Wenn du also das ganze wieder zusammensetzt
Delphi-Quellcode:
Oldname:=Verzeichnis+'\'+Dateiname;
hat Oldname so einen wert: c:\Verzeichnis\\Dateiname

Nächstes mal einfach den Debugger bemühen dann findest du sowas von selbst.

Christian Seehase 28. Aug 2005 15:56

Re: MoveFile macht einfach nix(ohne Fehlermeldung)
 
Moin SirThornberry,

Zitat:

Zitat von SirThornberry
hat Oldname so einen wert: c:\Verzeichnis\\Dateiname

Das stellt aber keinen Fehler dar.
Die Shell erkennt mehrere hintereinander stehende Pfadtrennzeichen als eines.

Man könnte also auch

C:\Verzeichnis\/\/\Dateiname

schreiben, ohne dass es zu einem Problem kommt, denn die Shell verarbeitet das als

C:\Verzeichnis\Dateiname

Flippo 28. Aug 2005 16:11

Re: MoveFile macht einfach nix(ohne Fehlermeldung)
 
Hi, hab das mit dem '\' jetz einfach mal geändert was aber nix am ergebnis geändert hat das mit dem raiselastoserror hat bei mir nich geklappt aber dafür gibt raiselastwin32error folgendes zurück:
Win32 Fehler Code:183
Eine Datei kann nicht erstellt werden wenn sie bereits vorhanden ist. Prozess wurde angehalten. Mit einzelne Anweisung oder Start vortsezten.
Wenn daraus einer auf mein Problem schliessen kann, ich kapier nich was ich da ändern muss.
ReadId3 Tag funktioniert problemlos da hat artist immer den richtigen wert und der Ordner existiert zuerst nicht (tut er auch wirklich nicht) und wird dann erstellt.

Flocke 28. Aug 2005 16:15

Re: MoveFile macht einfach nix(ohne Fehlermeldung)
 
Kann es sein, dass im Zielverzeichnis schon eine Datei mit dem Namen existiert? Andere Möglichkeit wäre, dass die Variable "Artist" leer ist, dann versuchst du die Datei nämlich auf sich selbst zu verschieben.

Flippo 28. Aug 2005 16:17

Re: MoveFile macht einfach nix(ohne Fehlermeldung)
 
Leider beides nein das is ja mein problem

SirThornberry 28. Aug 2005 16:19

Re: MoveFile macht einfach nix(ohne Fehlermeldung)
 
hast du schonmal debuggt welche Werte Oldname und NewName haben zu dem Zeitpunkt wo du sie der move-funktion übergibst?

Flippo 28. Aug 2005 16:30

Re: MoveFile macht einfach nix(ohne Fehlermeldung)
 
hmm das bringt mich wieder auf eine alte fährte alles was an buchstaben bis zur 30 fehlt wird durch 0# aufgefüllt da hattich schonmal probiert das mit einer vorschleife wegzumachen aber das hatte nichts gebrahct deswegen dachte ich das es daran nicht liegen wird was kann man da jetzt tun?
Newname='C:\Dokumente und Einstellungen\PapaBaer\Desktop\Other\NeuerOrdner'# 0#0#0...#0'\Dateiname.mp3'


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:34 Uhr.
Seite 1 von 2  1 2      

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