22. december 2004 - 21:51Der 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)
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.
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 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.
tak, men jeg ved intet om .net, så det vil du nok ikke ønske :o(
Synes godt om
Ny brugerNybegynder
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.