Seite 1 von 2
CopyFile Fehler
Verfasst: 05.11.2021 19:56
von marcelx
Hallo,
ich versuche eine Datei zu kopieren und es funktioniert nicht.
Code: Alles auswählen
from.s = "F:\xxx ... \test.html"
todir.s = "C:\TMP"
If Not CopyFile(from, ToDir)
MessageRequester("INFO", "Fehler beim Kopieren.")
EndIf
Was mache ich da falsche?
Danke und Gruß
Re: CopyFile Fehler
Verfasst: 05.11.2021 19:58
von mk-soft
Du must auch den Ziel Dateiname mit angeben
...
Code: Alles auswählen
Procedure CopyFileToDir(Filename.s, ToDir.s)
If Right(ToDir, 1) <> #PS$
ToDir + #PS$
EndIf
ToDir + GetFilePart(Filename)
ProcedureReturn CopyFile(Filename, ToDir)
EndProcedure
Re: CopyFile Fehler
Verfasst: 05.11.2021 20:06
von marcelx
Oh, danke.
Ich dachte, ich sollte der Name der Verzeichnis angeben aber ...
CopyFile(Ausgangsdatei$, Zieldatei$)
Re: CopyFile Fehler
Verfasst: 09.11.2021 13:55
von marcelx
Wie sieht es aus mit das Verschieben von Verzeichnis?
Code: Alles auswählen
f.s = "F:\... \name"
t.s ="C:\TEMP\name"
Debug RenameFile(f, t)
bekomme ich 0
EDIT: mit Dateien geht es
Re: CopyFile Fehler
Verfasst: 09.11.2021 18:31
von mk-soft
Nur Windows ...
Achtung! Habe ich nicht getestet
MSDN:
https://docs.microsoft.com/en-us/window ... irectories
Code: Alles auswählen
;TOP not tested by mk-soft
#MOVEFILE_WRITE_THROUGH = $08
Procedure MoveDirectory(Source.s, Dest.s)
Protected r1
r1 = MoveFileEx_(Source, Dest, #MOVEFILE_WRITE_THROUGH)
ProcedureReturn r1
EndProcedure
Re: CopyFile Fehler
Verfasst: 09.11.2021 18:53
von marcelx
Danke mk-soft, leider funktioniert MoveDirectory nicht.
In der Hilfe für Renamefile steht:
"Diese Funktion kann auch verwendet werden, um Verzeichnisse umzubenennen/zu verschieben."
EDIT;
Ich werde eine Kopie der Source in Dest durchführen und anschließen der Verzeichnis Source löschen
Re: CopyFile Fehler
Verfasst: 09.11.2021 19:25
von mk-soft
Interessante Ergebnis von GetLastError ...
Errorcode 0x5: Zugriff verweigert
Re: CopyFile Fehler
Verfasst: 09.11.2021 19:38
von mk-soft
Alles Gut ...
Gibt aber regeln wann verschoben werden darf. Zugriff verweigert wenn noch der Ordner noch geöffnet ist, auf ein anderes Laufwerk kann nicht verschoben werden, etc ...
Code: Alles auswählen
;TOP not tested by mk-soft
#MOVEFILE_WRITE_THROUGH = $08
Procedure MoveDirectory(Source.s, Dest.s)
Protected r1
r1 = MoveFileEx_(Source, Dest, #MOVEFILE_WRITE_THROUGH)
ProcedureReturn r1
EndProcedure
Procedure.s FormatMessage(ErrorCode)
Protected *Buffer, len, result.s
len = FormatMessage_(#FORMAT_MESSAGE_ALLOCATE_BUFFER|#FORMAT_MESSAGE_FROM_SYSTEM,0,ErrorCode,0,@*Buffer,0,0)
If len
result = "Errorcode " + Hex(ErrorCode) + ": " + PeekS(*Buffer)
LocalFree_(*Buffer)
ProcedureReturn result
Else
ProcedureReturn "Errorcode: " + Hex(ErrorCode)
EndIf
EndProcedure
r1 = MoveDirectory("C:\Users\Michael\Documents\Ablage\Dir1\", "C:\Users\Michael\Documents\Ablage\Dir2\")
If r1 = 0
Debug FormatMessage(GetLastError_())
Else
Debug "Ok"
EndIf
Re: CopyFile Fehler
Verfasst: 09.11.2021 20:04
von marcelx
CopyFile funktioniert nur bei gleiche Laufwerk wie von C: nach C: und nicht von F: nach C:
Re: CopyFile Fehler
Verfasst: 09.11.2021 21:20
von mk-soft
CopyFile funktioniert wenn man die Quelle und das Ziel richtig angibt. Auch hier gibt es regeln.
r1 = CopyFile( ... )
Frage mal den letzten Fehler ab ... GetLastError sollte hier auch Funktionieren ...