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 ...