Hallo,
ich hab jetzt folgenden Code:
Delphi-Quellcode:
if not MoveFileEx(PChar(strOldFile), PChar(strNewFile), MOVEFILE_COPY_ALLOWED) then
begin
ShowMessage(SysErrorMessage(GetLastError));
ShowWarning('Fehler bei Umbenennen von ' + #13#10 + strOldfile +
#13#10 + 'nach' + #13#10 + strNewFile);
end;
Dank dem Vorschlag von Himitsu hab ich SysErrorMessage vor die eigentliche Fehlermeldung gestellt und bekam
"Der Prozess kann nicht auf die Datei zugreifen, da die Datei von einem anderen Prozess verwendet wird."
Also im ProcessExplorer nachgeschaut und tatsächlich was gefunden:
<Non-Existent Process> 2440
Handle D:\Test\01_Voyager_of_the_future.mp3
Zwar nicht sehr aussagekräftig, aber da der (das?)
Handle nicht gefunden wird, solange mein Programm nicht läuft, war klar, dass es mein eigenes Programm war, das die Datei im Zugriff hält.
Ursache war folgendes;
Die Dateinamen werden (zusammen mit anderen Infos) in ein Grid eingelesen. Ausserdem werden MP3-Infos ausgelesen. Zu diesem Zweck werden in einer Schleife (für alle Dateien...) Streams erzeugt. Dummerweise habe ich zwar fleissig Streams erzeugt, da aber die Freigabe .Free ausserhalb der Schleife lag, wurde nur der zuletzt erzeugte Stream wieder freigegeben, alle anderen (und damit die Dateizugriffe) blieben bestehen
@Assarbad: Das mit dem "Pfad spielt keine Rolle" war so gemeint, dass der Fehler trotzdem kam, ob mit Pfad oder ohne. Sobald der Zugriff funktioniert, merkt man sehr schnell, wie wichtig die Angabe des Pfads bei der Zieldatei ist
Danke, Community, hätte ich ohne euch nicht gefunden
Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty