Avatar billede sigaard Nybegynder
22. december 2004 - 21:51 Der er 14 kommentarer og
1 løsning

Filkopieringsprogram (newb)

Hey

Jeg ville gerne lave et program der har følgende krav:
1. skal kunne kopiere alt hvad der er i en mappe (eks: c:\fra\) til en anden (eks: c:\til\) hvert minut (eller lign. behøver ikke være præcist)
2. Der skal være en start og en stop knap, samt et text-felt hvor der er angivet om programmet er aktivt.

Det er den grundliggende funktionalitet. (På sigt ville jeg gerne udbygge med at der føres en log over hvilke filer der kopieret med tidspunkt) - (så er det sidste point hjemme ;o).

Håber jeg kan få et par pointers til udviklingen fra ekspertens mange hjælpsomme VB-stars (fedte, fedte :o)
22. december 2004 - 21:57 #1
Jeg kan ikke give dig den færdige løsning (på stående fod), men jeg kan give dig den vigtigste kodestump: nemlig den funktion, som kopiere alle data fra én mappe til en anden.

Public Function CopyFiles(SourceDir As String, DestinationDir As String) As Boolean
    Dim stName As String

    On Error GoTo err_FillFiles
   
    stName = Dir(SourceDir & "\*.*")
    Do While stName <> ""
        On Error Resume Next
        If (GetAttr(SourceDir & stName) And vbDirectory) <> vbDirectory Then
            'File Already open?
            If Err.Number = 5 Then Err.Clear
           
            If stName <> "." Or stName <> ".." Then
                'FileList.Add Item:=(stName)
                FileCopy SourceDir & "\" & stName, DestinationDir & "\" & stName
            End If
        End If
        'Get Next entry
        stName = Dir
    Loop
    CopyFiles = True
exit_FillFiles:
    Exit Function
err_FillFiles:
    If Err.Number = 71 Then
        MsgBox AccessError(Err.Number) _
                    & "  Prøv venligst igen.  ", vbCritical + vbOKOnly, _
                    "Fejl ved læsning af drev " & SourceDir
    Else
        MsgBox Err & vbNewLine & vbNewLine & Err.Description, vbExclamation
    End If
    Resume exit_FillFiles
End Function


Derudover er det er spørgsmål om, at oprette en form med en timer på (sat til 60.000 millisekunder) som kalder ovenstående funktion.

En start/stop-knap skal bare skifte egneksberne på timeren og samtidig skifte farve (eller lign) på en tekstboks, så man kan se om den er aktiv eller ej.

Jeg håber, at det kan bringe dig videre?

/Thomas
Avatar billede sigaard Nybegynder
22. december 2004 - 22:14 #2
Ups jeg mente flytte og ikke kopiere...
Avatar billede thewizard Nybegynder
22. december 2004 - 22:16 #3
thomasjepsen -> http://www.eksperten.dk/spm/573449 ;) Du er jo god til VB, videre der og hjælp mig.
Avatar billede sigaard Nybegynder
22. december 2004 - 22:20 #4
hov, hov ikke stjæle :)
22. december 2004 - 22:26 #5
Hvis du vil flytte i stedet for at kopiere, skal du i princippet bare slette filen efter kopieringen:

Public Function MoveFiles(SourceDir As String, DestinationDir As String) As Boolean
    Dim stName As String

    On Error GoTo err_FillFiles
   
    stName = Dir(SourceDir & "\*.*")
    Do While stName <> ""
        On Error Resume Next
        If (GetAttr(SourceDir & stName) And vbDirectory) <> vbDirectory Then
            'File Already open?
            If Err.Number = 5 Then Err.Clear
           
            If stName <> "." Or stName <> ".." Then
                'FileList.Add Item:=(stName)
                err.clear
                FileCopy SourceDir & "\" & stName, DestinationDir & "\" & stName
                'if no error, delete source
                if err = 0 then
                    kill SourceDir & "\" & stName
                endif
            End If
        End If
        'Get Next entry
        stName = Dir
    Loop
    MoveFiles = True
exit_FillFiles:
    Exit Function
err_FillFiles:
    If Err.Number = 71 Then
        MsgBox AccessError(Err.Number) _
                    & "  Prøv venligst igen.  ", vbCritical + vbOKOnly, _
                    "Fejl ved læsning af drev " & SourceDir
    Else
        MsgBox Err & vbNewLine & vbNewLine & Err.Description, vbExclamation
    End If
    Resume exit_FillFiles
End Function


Det skal dog nok lige testes...
Avatar billede sigaard Nybegynder
23. december 2004 - 09:25 #6
Jeg får en "Statement is not valid in a namespace"

Public Function MoveFiles(ByVal SourceDir As String, ByVal DestinationDir As String) As Boolean
23. december 2004 - 09:29 #7
hmmm, måske er movefiles et reserveret ord. Prøv at kald det noget andet. Husk så også at ændre det i linine forneden: MoveFiles = True
Avatar billede sigaard Nybegynder
23. december 2004 - 09:33 #8
Glem fejlmed. :|
Avatar billede sigaard Nybegynder
23. december 2004 - 10:48 #9
Jeg kunne stadig godt bruge lidt hjælp til den øvrige funktionalitet :O)
Avatar billede martin_moth Mester
23. december 2004 - 12:18 #10
Se min kommentar til http://www.eksperten.dk/spm/573806
Avatar billede sigaard Nybegynder
23. december 2004 - 12:35 #11
Martin Moth har ret igen... :o) Jeg genopretter i relevant kategori...
Avatar billede sigaard Nybegynder
23. december 2004 - 12:35 #12
Jeg er i øvrigt taknemmelig for hjælpen og ked af ulejligheden...
23. december 2004 - 12:56 #13
Det er helt i orden - det kan ske for enhver :o)
En anden gang, så skaber det sympati og respekt, hvis man lige giver lidt point for indsatsen, når andre nu har brugt tid på...ingenting.

God jul til Jer alle 3...
Avatar billede sigaard Nybegynder
23. december 2004 - 13:29 #14
thomas -> Du er velkommen til at deltage i besvarelsen under .net og du vil få særbehandling! ;o)

og i lige måde!
23. december 2004 - 13:30 #15
tak, men jeg ved intet om .net, så det vil du nok ikke ønske :o(
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester