30. juni 2003 - 09:58Der er
7 kommentarer og 1 løsning
Problemer med drev
Jeg har et program, hvor jeg laver backup til en ekstern USB-disk. Nogle gange får jeg startet backup'en før Windows har registreret at jeg har tilsluttet disken.
Nu vil jeg gerne lave en lille løkke, der gennemløber alle drev, og leder efter en bestemt fil, jeg har liggende på min USB-disk. Jeg har prøvet følgende:
Alfabet = "cdefghijklmnopqrstuwxyz" AlfaLen = Len(Alfabet) d = 1 For d = d To AlfaLen Disk = Mid(Alfabet, d, 1) If Len(Dir(Disk & ":\counts.ini")) > 1 Then BackupPath = Disk & ":\" BackupFejl = "Backup er taget på " & UCase(Disk) & "-drevet" DiskBesked = "Der tages backup på " & UCase(Disk) & "-drevet" End If
Mit problem er, at når jeg skal checke CD-ROM-drevet, og der ikke sidder en CD i drevet, så får jeg en fejl.
I en applikation har jeg følgende vedr. diskettedrevet:
Private Sub knjurtil_Click() On Error GoTo ingendisk3 FileCopy doksti & Right(lstkunde.Text, 8) & "." & ext, "a:\" & Right(lstkunde.Text, 8) & "." & ext knjurtil.Enabled = False Exit Sub ingendisk3: X = MsgBox("Der er ingen diskette i drev a: eller disken er fuld.", 48, "Medd. fra 'kopier til diskette.") Exit Sub Resume Next End Sub
Læg mærke til at der er et par lange linier - de skal selvfølgelig være ud i ét.
Programmet går ikke i stå når disketten mangler, men venter på ny 'ordre', - f.eks. at der indsættes en diskette. Så må brugeren trykke på kanppen igen.
Du kan også lave en 'select case' - der giver forskellige muligheder efter hvilket nr. fejlkoden har.
Select Case Error(nr) se: 'Trappable Errors' i hjælpen
Private Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type
Private Type WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long cFileName As String * MAX_PATH cAlternate As String * 14 End Type
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
Public Function FileExists(ByVal strPath As String) As Boolean Dim WFD As WIN32_FIND_DATA Dim hFile As Long hFile = FindFirstFile(strPath, WFD) FileExists = hFile <> INVALID_HANDLE_VALUE Call FindClose(hFile) End Function
Public Function BackupExists(ByVal strFile As String) As String Dim i As Integer Dim strDrive As String BackupExists = "Kan ikke finde nogle backup." For i = 67 To 90 'Loop fra A=65 til Z=90 (C=67) strDrive = Chr$(i) & ":\" '(C til Z:\) If FileExists(strDrive & strFile) Then BackupExists = "Backup file på " & strDrive Exit For End If Next i End Function
Private Sub Form_Load() 'her skriver du den file som du søger efter (counts.ini) Me.Caption = BackupExists("counts.ini") End Sub '----------------------- Form1 -----------------------
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.