FileCopy Problem

  • Moin,

    Mal wieder was, was ich nicht verstehe.


    Hier mal den Ausschnitt um den es geht :

    Spoiler anzeigen
    [autoit]


    GUICtrlSetData($Progress1, 0)
    $read1 = GUICtrlRead($2Checkbox1)
    $read2 = GUICtrlRead($2Checkbox2)

    [/autoit] [autoit][/autoit] [autoit]

    $aFiles = _FileListToArray(@ScriptDir & "\Pflanzen DB\files\")
    $aPics = _FileListToArray(@ScriptDir & "\Pflanzen DB\pics\")
    $aPicfiles = _FileListToArray(@ScriptDir & "\Pflanzen DB\picfiles\")
    $aData = _FileListToArray(@ScriptDir & "\Pflanzen DB\data\")
    $aAlle = _FileListToArray(@ScriptDir & "\Pflanzen DB\")
    $aAlle_save = _FileListToArray(@ScriptDir & "\Pflanzen DB\Sicherung\")

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($Progress1, 0)

    [/autoit] [autoit][/autoit] [autoit]

    $Progress1_end = $aFiles[0] + $aPics[0] + $aPicfiles[0] + $aData
    $Progress1_step = 100 / $Progress1_end

    [/autoit] [autoit][/autoit] [autoit]

    If $read1 = 1 Then
    If IsArray($aFiles) Then
    For $i = 1 To $aFiles[0]
    $copy = FileCopy(@ScriptDir & "\Pflanzen DB\files\" & $aFiles[$i], @ScriptDir & "\Pflanzen DB\Sicherung\files\", 9)
    $Progress1_ist = GUICtrlRead($Progress1)
    GUICtrlSetData($Progress1, $Progress1_ist + $Progress1_step)
    GUICtrlSetData($status_label, "Es wird folgende Datei kopiert: " & $aFiles[$i])
    If $copy = 0 Then
    $error = "Fehler beim Kopieren der Datei " & $aFiles[$i]
    IniWrite(@ScriptDir & "\Pflanzen DB\error.log", "Files", @MDAY & '.' & @MON & '.' & @YEAR & ' ' & @HOUR & ':' & @MIN, "Fehler beim Kopieren der Datei " & $aFiles[$i])
    EndIf
    Next
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If IsArray($aPics) Then
    For $i = 1 To $aPics[0]
    $copy = FileCopy(@ScriptDir & "\Pflanzen DB\data\" & $aPics[$i], @ScriptDir & "\Pflanzen DB\Sicherung\data\", 9)
    $Progress1_ist = GUICtrlRead($Progress1)
    GUICtrlSetData($Progress1, $Progress1_ist + $Progress1_step)
    GUICtrlSetData($status_label, "Es wird folgende Datei kopiert: " & $aPics[$i])
    If $copy = 0 Then
    $error = "Fehler beim Kopieren der Datei " & $aPics[$i]
    IniWrite(@ScriptDir & "\Pflanzen DB\error.log", "Files", @MDAY & '.' & @MON & '.' & @YEAR & ' ' & @HOUR & ':' & @MIN, "Fehler beim Kopieren der Datei " & $aPics[$i])
    EndIf
    Next
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If IsArray($aPicfiles) Then
    For $i = 1 To $aPicfiles[0]
    $copy = FileCopy(@ScriptDir & "\Pflanzen DB\picfiles\" & $aPicfiles[$i], @ScriptDir & "\Pflanzen DB\Sicherung\picfiles\", 9)
    $Progress1_ist = GUICtrlRead($Progress1)
    GUICtrlSetData($Progress1, $Progress1_ist + $Progress1_step)
    GUICtrlSetData($status_label, "Es wird folgende Datei kopiert: " & $aPicfiles[$i])
    If $copy = 0 Then
    $error = "Fehler beim Kopieren der Datei " & $aPicfiles[$i]
    IniWrite(@ScriptDir & "\Pflanzen DB\error.log", "Files", @MDAY & '.' & @MON & '.' & @YEAR & ' ' & @HOUR & ':' & @MIN, "Fehler beim Kopieren der Datei " & $aPicfiles[$i])
    EndIf
    Next
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If IsArray($aData) Then
    For $i = 1 To $aData[0]
    $copy = FileCopy(@ScriptDir & "\Pflanzen DB\pics\" & $aData[$i], @ScriptDir & "\Pflanzen DB\Sicherung\pics\", 9)
    $Progress1_ist = GUICtrlRead($Progress1)
    GUICtrlSetData($Progress1, $Progress1_ist + $Progress1_step)
    GUICtrlSetData($status_label, "Es wird folgende Datei kopiert: " & $aData[$i])
    If $copy = 0 Then
    $error = "Fehler beim Kopieren der Datei " & $aData[$i]
    IniWrite(@ScriptDir & "\Pflanzen DB\error.log", "Files", @MDAY & '.' & @MON & '.' & @YEAR & ' ' & @HOUR & ':' & @MIN, "Fehler beim Kopieren der Datei " & $aData[$i])
    EndIf
    Next
    EndIf
    If $error <> "OK" Then
    MsgBox(0, "Datenbank nicht gesichert", "Datenbanksicherung fehlgeschlagen.Mehr Infos in der error.log")
    ;~ ToolTip("Datenbank nicht gesichert", "Datenbanksicherung fehlgeschlagen.Mehr Infos in der error.log")
    ;~ sleep(5000)
    Else
    MsgBox(0, "Datenbank gesichert", "Datenbanksicherung erfolgreich durch geführt" & @CRLF & "Es wurden " & $aAlle_save[0] & " Einträge gesichert")
    IniWrite($data_dir & "\pflanzen.ini", 'save', 'last', @MDAY & '.' & @MON & '.' & @YEAR & ' ' & @HOUR & ':' & @MIN)
    $last_date = IniRead($data_dir & "\pflanzen.ini", 'save', 'last', "keine erfolgt")
    GUICtrlSetData($2Label2, "Letzte Sicherung war am : " & $last_date)
    GUICtrlSetData($status_label, "Erledigt")
    EndIf

    [/autoit]


    und zwar geht es um folgenden Bereich:

    [autoit]

    If IsArray($aData) Then
    For $i = 1 To $aData[0]
    $copy = FileCopy(@ScriptDir & "\Pflanzen DB\pics\" & $aData[$i], @ScriptDir & "\Pflanzen DB\Sicherung\pics\", 9)
    $Progress1_ist = GUICtrlRead($Progress1)
    GUICtrlSetData($Progress1, $Progress1_ist + $Progress1_step)
    GUICtrlSetData($status_label, "Es wird folgende Datei kopiert: " & $aData[$i])
    If $copy = 0 Then
    $error = "Fehler beim Kopieren der Datei " & $aData[$i]
    IniWrite(@ScriptDir & "\Pflanzen DB\error.log", "Files", @MDAY & '.' & @MON & '.' & @YEAR & ' ' & @HOUR & ':' & @MIN, "Fehler beim Kopieren der Datei " & $aData[$i])
    EndIf
    Next
    EndIf

    [/autoit]

    In dem Ordner befindet sich nur eine ini Datei, wo ich Einstellungen gespeichert habe. Das Problem ist das FileCopy mir immer einen Fehler (Fehler 0) zurück gibt, kopiert aber manchmal die Datei, aber eben nur manchmal. Kann sich das einer erklären ??

    Einmal editiert, zuletzt von MrB (7. Mai 2010 um 19:54)

  • Die einzigen plausiblen Sachen die mir dazu einfallen sind
    1: Der Array verweist manchmal auf eine nicht existierende Datei
    2: Irgenwelche schreibrechte machen dir Probleme (Welches Betriebsystem benutzt du?)
    3: Versuchs mal mit

    [autoit]

    FileCopy(@ScriptDir & "\Pflanzen DB\pics\" & $aData[$i], @ScriptDir & "\Pflanzen DB\Sicherung\pics\", 1)
    ;oder
    FileCopy(@ScriptDir & "\Pflanzen DB\pics\" & $aData[$i], @ScriptDir & "\Pflanzen DB\Sicherung\pics\")

    [/autoit]

    Schreib uns mal bitte die Fehlermeldung (eventuell auch ein Screenshot)...

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Hi!
    In den momenten wo Fehler 0 kommt hast du mal geschaut das die datei nicht gerade benutzt wird geöffnet o. weiteres!

    Edit: zu langsam ;)
    LG Kleiner

  • Cartan12

    zu1. Array ist richtig, da der richtige Pfad in der error.log steht
    zu2. Dachte ich auch, aber es funktioniert bei allen anderen Ordnern und Dateien problemlos. Nur bei der ini nicht. Benutze Win7 Ultimate 64
    zu3. sollte ich doch mit Flag 9 eigentlich alles erschlagen haben, trotzdem getestet und funktioniert auch nicht

    Zitat

    Schreib uns mal bitte die Fehlermeldung (eventuell auch ein Screenshot)...

    Da hab ich mich schlecht ausgedrückt. Meine damit das FileCopy 0 zurück gibt (also Fehler) anstatt 1

    @kleiner27

    Hatte ich auch schon gedacht. Finde aber nichts was darauf zugreifen könnte

  • Ha, hab den Fehler gefunden. Man Stunden drüber geschaut und nicht gesehen. Habe die Arrays nicht richtig mit den Pfaden kombiniert. Kleiner27 hat mich dann mehr oder weniger drauf gebracht das nochmal genau zu kontrollieren. Mir ist da nämlich auch nichts anderes eingefallen, als das da schon ein Zugriff statt findet und siehe da es war so.
    Danke euch allen

  • Kein Problem...
    Die meißten Fehler dieser Art hängen mit falsch deklarierten Variablen/Arrays zusammen

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Wie sagt man so schön : Der Computer ist nur so schlau, wie derjenige der davor sitzt.
    Manchmal ist man aber auch blind, vorallem sind diese Art von Fehlern diejenigen die mich richtig ärgern