AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Über Laufwerke verschieben - MoveFileEx geht nicht?
Thema durchsuchen
Ansicht
Themen-Optionen

Über Laufwerke verschieben - MoveFileEx geht nicht?

Ein Thema von blackdrake · begonnen am 16. Apr 2009 · letzter Beitrag vom 19. Apr 2009
 
blackdrake

Registriert seit: 21. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#1

Über Laufwerke verschieben - MoveFileEx geht nicht?

  Alt 16. Apr 2009, 23:26
Hallo.

Ich habe heute die Win32 Hilfe angeschaut und bin über folgenden Hinweis bei der API-Funktion MoveFile() gestoßen:

Zitat:
The one caveat is that the MoveFile function will fail on directory moves when the destination is on a different volume.
Dies bringt mich in Aufruhr, da ich MoveFile() zum Verschieben von Dateien und Verzeichnisse brauche und eine Verschiebung auch über Laufwerke hinweg funktionieren sollte.

Ich habe zuerst einmal eine MyMoveFile() Funktion entworfen, die zuerst CopyFile() und dann eine eigene RemoveDirectoryRecursive() aufruft. Das Problem: CopyFile() will nur Dateien.

Dann habe ich die einfachere Variante MoveFileEx() gefunden. Mithilfe von MOVEFILE_COPY_ALLOWED soll auch das Verschieben über Laufwerke hinweg funktionieren, in dem Copy + Delete durchgeführt wird.

Mein Code ist nun:

Delphi-Quellcode:
if not MoveFileEx('A:\test2\', 'C:\test2\', MOVEFILE_COPY_ALLOWED) then
begin
  RaiseLastOSError;
end;
Das Problem: In Windows ME funktioniert es entgegen meiner Erwartung nicht. (Bitte jetzt keine Diskussion, ob es sinnvoll ist, ein 9 Jahre altes OS zu verwenden... Da ich eine bodenständige Konsolenanwendung schreibe, möchte ich bis 95 kompatibel bleiben.)

Ich erhalte den OS-Error 120: "Die Funktion wird von diesem System nicht unterstützt." (ERROR_CALL_NOT_IMPLEMENTED). Wieso das?? In der Win32 API Reference wird nichts darüber geschrieben, dass MoveFileEx() in Windows 9x/ME nicht funktionieren soll! Ganz im Gegenteil - es werden sogar die Windows 95 Kompatibilitätsgrenzen bei MoveFileEx dokumentiert. Es steht beispielsweise dort, dass z.B. Reboot-Verschiebungen nur mit NT funktionieren. Alles Andere sollte laut Anleitung mit 9x/ME funktionieren.

Was soll ich jetzt tun, damit ich ein Verzeichnis über Laufwerke hinweg verschieben kann und was soll der Code 120 hier bedeuten?

Gruß
blackdrake
Daniel Marschall
  Mit Zitat antworten Zitat
 


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 19:42 Uhr.
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