_FreeDriveLetter (Ausgabe aller freien Laufwerksbuchstaben)

    • Offizieller Beitrag

    Diese Funktion gibt alle freien Laufwerksbuchstaben als String oder als Array zurück (siehe Beispiele).

    Spoiler anzeigen
    [autoit]


    #include<Array.au3>
    #include<ComboConstants.au3>
    #include<GUIConstantsEx.au3>

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

    ; Beispiel 1 Anfang
    $sFreeDriveLetter = _FreeDriveLetter(0) ; Parameter = 0
    $sFirstDrive = StringLeft($sFreeDriveLetter, 2)
    $sLastDrive = StringRight($sFreeDriveLetter, 2)
    GUICreate('Ausgabe als Combobox', 250, 70)
    GUICtrlCreateCombo('', 10, 20, 58, 25, BitOR($GUI_SS_DEFAULT_COMBO, $CBS_DROPDOWNLIST))
    GUICtrlSetFont(-1, 16, 400, 0, 'Arial')
    GUICtrlSetData(-1, $sFreeDriveLetter, $sLastDrive)
    GUISetState()
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
    ; Beispiel 1 Ende

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

    ; Beispiel 2 Anfang
    $aFreeDriveLetter = _FreeDriveLetter(1) ; Parameter = 1
    _ArrayDisplay($aFreeDriveLetter, '[0] = Anzahl der Elemente')
    ; Beispiel 2 Ende

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

    ; Beispiel 3 Anfang
    $aFreeDriveLetter = _FreeDriveLetter(2) ; Parameter = 2
    _ArrayDisplay($aFreeDriveLetter, 'Nullbasiertes Array')
    ; Beispiel 3 Ende

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

    ;===============================================================================
    ; Function Name..: _FreeDriveLetter([$iMode])
    ; Description....: Gibt alle freien Laufwerksbuchstaben zurück (String oder Array)
    ; Parameter......: $iMode = 0 Rückgabe als String (gut als Auswahl für Comboboxen)
    ; 1 Rückgabe als Array (Array[0] = Anzahl der Array-Elemente)
    ; 2 Rückgabe als Array (Nullbasiert)
    ; Return Value(s): String bzw. Array mit den freien Laufwerksbuchstaben
    ; Author.........: Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _FreeDriveLetter($iMode = 0)
    If $iMode < 0 Or $iMode > 2 Or Not IsNumber($iMode) Then $iMode = 0
    Local $sFreeDriveLetter = ''
    For $i = 67 To 90
    If Not DriveGetType(Chr($i) & ':') Then $sFreeDriveLetter &= Chr($i) & ':|'
    Next
    If $iMode Then
    Return StringSplit(StringTrimRight($sFreeDriveLetter, 1), '|', $iMode)
    Else
    Return StringTrimRight($sFreeDriveLetter, 1)
    EndIf
    EndFunc ;==>_FreeDriveLetter

    [/autoit]