LS: Nach einem freien Laufwerksbuchstaben suchen...

  • Hallo,
    wie kann ich den überprüfen ob ein laufwerksbuchstabe schon vergeben ist oder nicht ?
    hab folgenedes :


    For drive=72 To 90
    buchst$=Chr(drive)+":\"
    Dim flag As Boolean
    flag=Cbool(Dir$(buchst$))
    If ChDrive (buchst$)="False" Then
    msgbox "ist frei"
    exit for
    End If
    Next



    Leider geht es so nicht... :(
    Hat jemand von Euch vielleicht eine Lösung ?

  • Versuch das mal

  • Und hier kommt die Lösung:


    Sub Initialize

    Dim session As New NotesSession
    Dim db As NotesDatabase
    Set db = session.CurrentDatabase
    Dim flag As Boolean
    flag=True

    On Error 68 Goto FreiesLaufwerk ' 68=" Drive(device) unavailable"


    For drive=72 To 90
    buchst$=Chr(drive)+":\"

    Chdrive(buchst$)
    If ( flag = False) Then
    Exit For
    Else
    Msgbox buchst$+" ist besetzt"
    End If
    Next

    Exit Sub

    FreiesLaufwerk:
    flag= False
    Msgbox Cstr(Err())
    Resume Next
    Return

    End Sub

  • buedde :hammer:


    hmmm, aber irgendwie bin ich doch am ueberlegen, ob Dein Code wirklich laeuft??? Irgendwie steigt er doch beim ersten Laufwerk, dass nicht verfuegbar ist, aus...sucht also nicht nach einem freien...vielleicht soll der Code das ja auch

  • egentlich läuft es...
    wenn das LW vorhanden ist , dann msgbox aus ELSE...
    wenn nicht, dann "Exit For "
    nimm dir diesen buchstaben (buchst$) und tue mappen z.B. das laufwerk e:\ vom Server _1


    Ergebnis : buchst$:\Server_1\e$


    darfst mich korrigieren :)

  • nee, so sehe ich´s auch; hatte nur vermutet, Du suchst das erste freie LW, aber Du suchst nun nach dem ersten nicht vorhandenen LW.

  • mit Resume Next werde ich doch weitere fehler (ohne es zu wissen) auch beseitigen oder ?
    und das möchte ich vermeiden...
    vielleicht noch anstatt 68 lieber "ErrDeviceUnavailable", weil in der Hilfe stehen noch ein paar mit 68 (s. Handling run-time errors )

    • Offizieller Beitrag

    ja Du überspringst dann alle Fehler. Mit
    On error goto 0
    kannst Du die Fehlerüberspringung wieder ausschalten.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Diali


    Sorry dass ich dir widersprechen muss, aber dadurch dass er beim On Error Statement einen bestimmten Fehler angegeben hat, werden alle anderen durch die normale Script Fehlerbehandlung, also einfach gesagt die Fehlerbox, behandelt

    • Offizieller Beitrag

    taurec
    ja habs auch gerade gelesen, das nicht alle Fehler sondern nur 68 oder 69 ausgeschalten wurde


    Ohne "On error ..." bekommst Du es über die Windows-API hin


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein