Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi MoveFile ? RenameFile ? dwMoveDirFile ? (https://www.delphipraxis.net/54103-movefile-renamefile-dwmovedirfile.html)

spacewolf 28. Sep 2005 05:48


MoveFile ? RenameFile ? dwMoveDirFile ?
 
MoveFile ? RenameFile ?

Was ist der Unterschied ?

RenameFile scheint nur zu funktionieren, wenn die Datei im selben Verzeichnis liegt.
MoveFile scheint wirklich die Datei von A nach B zu kopieren und die alte zu löschen.

Ich würde aber lieber, das der wie "früher" einfach nur in der Partitionstabelle, den Ort der Datei ändert.
Oder macht der das bei MoveFile ?

Genauso für dwMoveDirFile (DelphiWorks) - da dauert das verschieben eines Verzeichnisses das viele Dateien beinhaltet so lange wie bei Windows... also zu lange... :nerd:

habt ihr da irgendwelche Informationen oder Ideen ?



euer Andreas <><

SirThornberry 28. Sep 2005 06:42

Re: MoveFile ? RenameFile ? dwMoveDirFile ?
 
es kommt immer darauf an von wo nach wo verschoben wird. Wenn das verschieben innerhalb einer Partition geschieht sollte es durch ändern der Partitionstabelle geschehen ansonsten geht eben nur kopieren und danach löschen.

spacewolf 28. Sep 2005 12:26

Re: MoveFile ? RenameFile ? dwMoveDirFile ?
 
d.h. statt renamefile könnte ich einfach generell movefile nehmen ?

Bei den Funktionen von DelphiWorks dauert es trotzdem recht lang wenn ich ein Verzeichnis verschiebe, obwohl es auf der selben Partition habe. Wenn ich das selbe übern Explorer mache gehts denke ich schneller...

himitsu 28. Sep 2005 12:31

Re: MoveFile ? RenameFile ? dwMoveDirFile ?
 
Der Explorer verschiebt ja wirklich (wenn möglich) nur den "Zeiger" auf die Verzeichnisdaten.

Eventuell macht deses MoveFile ja net ('s heißt ja auch MoveFile und net MoveDir ^^).
Kann ja sein, daß dort immer ein neues Verzeichnis erstellt und dann jede Datei einzeln übertragen wird.

Flocke 28. Sep 2005 17:46

Re: MoveFile ? RenameFile ? dwMoveDirFile ?
 
Also SysUtils.RenameFile sieht so aus:

Delphi-Quellcode:
function RenameFile(const OldName, NewName: string): Boolean;
begin
{$IFDEF MSWINDOWS}
  Result := MoveFile(PChar(OldName), PChar(NewName));
{$ENDIF}
{$IFDEF LINUX}
  Result := __rename(PChar(OldName), PChar(NewName)) = 0;
{$ENDIF}
end;
... und für die API-Funktion MoveFile gilt:

Zitat:

Zitat von MSDN
The MoveFile function will move (rename) either a file or a directory (including its children) either in the same directory or across directories. The one caveat is that the MoveFile function will fail on directory moves when the destination is on a different volume.

If a file is moved across volumes, MoveFile does not move the security descriptor with the file. The file will be assigned the default security descriptor in the destination directory.

The MoveFile function coordinates its operation with the link tracking service, so link sources can be tracked as they are moved.

Sollte also ziemlich schnell gehen wenn Quelle und Ziel auf derselben Partition liegen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:57 Uhr.

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