CopyFile Fehler

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

CopyFile Fehler

Beitrag 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ß
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: CopyFile Fehler

Beitrag 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
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: CopyFile Fehler

Beitrag von marcelx »

Oh, danke.
Ich dachte, ich sollte der Name der Verzeichnis angeben aber ...

CopyFile(Ausgangsdatei$, Zieldatei$)
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: CopyFile Fehler

Beitrag 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
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: CopyFile Fehler

Beitrag 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
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: CopyFile Fehler

Beitrag 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
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: CopyFile Fehler

Beitrag von mk-soft »

Interessante Ergebnis von GetLastError ...

Errorcode 0x5: Zugriff verweigert
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: CopyFile Fehler

Beitrag 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
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: CopyFile Fehler

Beitrag von marcelx »

CopyFile funktioniert nur bei gleiche Laufwerk wie von C: nach C: und nicht von F: nach C:
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: CopyFile Fehler

Beitrag 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 ...
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten