Prüfen ob Laufwerk vorhanden

  • hallo zusammen,
    habe folgendes problem:

    ich frage die laufwersbuchstaben ab:

    [autoit]


    $Drives =""
    $drive = DriveGetDrive( "fixed" )

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

    If NOT @error Then
    For $i = 1 to $drive[0]
    $Drives &= $drive[$i] & "\ "
    Next
    EndIf

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

    If $drive < 1 Then
    GUICtrlCreateLabel("0 Festplatten gefunden.", 25,35,300)
    Else
    GUICtrlCreateLabel("" & $drive[0] & " Festplatte(n) gefunden: ( " & $Drives & ")" ,25,35,300)
    EndIf

    [/autoit]

    nun will ich, das man in ein input-feld einen laufwerksbuchstaben schreibt, der dann als variable für einen programmaufruf genutzt wird. es soll zudem geprüft werden ob der eingetragene laufwerksbuchstabe auch wirklich vorhanden ist.

    d.h. es wurden z.b. die laufwerke c und d gefunden, trägt man jetzt aber den buchstaben e ein so soll eine fehlermeldung erscheinen, dass es dieses laufwerk nicht gibt.

    ich hoffe ihr könnt mir helfen
    gruß seb

  • Spoiler anzeigen
    [autoit]


    $Drives =""
    $drive = DriveGetDrive( "fixed" )
    Global $gefunden
    $gesucht = InputBox(0, "laufwerksbuchstabe", "C")
    $gesucht = $gesucht & ":"

    For $i = 1 to $drive[0]
    if $drive[$i] = $gesucht Then

    ;mach nix :P
    $gefunden = 1
    ExitLoop
    EndIf
    Next
    if $gefunden <> 1 Then
    MsgBox(0, "FEHLER!!", $gesucht & " konnte nicht gefunden werden!!")

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

    Exit

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

    EndIf

    [/autoit]

    so?


    wenn gefunden, passiert nix, wenn nicht, kommt ne msgbox und script wird verlassen

  • ich glaube ich hab mich falsch ausgedrückt.
    ich lasse die laufwerke auslesen und lasse diese in meiner GUI anzeigen. darunter habe ich ein GUICtrlCreateInput in das der user einen laufwerksbuchstaben eintragen soll. neben diesem feld ist ein button, wenn man den button drückt soll das script prüfen ob der angegebene laufwerksbuchstabe existiert. gibt es dieses laufwerk, so führt das script einen befehl aus, gibt es diesen nicht so soll das programm keinen befehl ausführen und eine fehlermeldung ausgeben.

    danke!
    gruß seb

  • Wie wärs so?

    Spoiler anzeigen
    [autoit]

    $input = GUICtrlCreateInput("", 10, 10, 100)
    $button = GUICtrlCreateButton("Drücken", 10, 50, 100)
    While 1
    $msg = GUIGetMsg()

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

    If $msg = $button Then
    $suche = _ArraySearch($drive, $input, 0, 0, 0, True)
    If @error Then
    ;Fehlermeldung
    ExitLoop
    Else
    ;weiterarbeiten
    EndIf
    EndIf
    WEnd

    [/autoit]

    2 Mal editiert, zuletzt von penta.phoenix (29. Juni 2007 um 19:06)

  • Hi!

    Hm wieso Packst du die gefundenen Laufwerke nicht einfach in ne Combobox?
    Dann brauchste auch keine Fehelermeldung etc. man kann dann den eintrag per liste auswählen

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    Dim $String
    $Drive = DriveGetDrive("Fixed")
    $String = _ArrayToString($Drive,"|") ;macht aus Array einen String wobei die Einträge mit "|" getrennt werden
    $String = StringRegExpReplace($String,$Drive[0]&"|","") ; Entfernt "$Drive[0]" , da diese Element die Anzahl der Laufwerk angibt
    GUICreate("Laufwerk",260,50)
    $Combo = GUICtrlCreateCombo("C:",10,10,200,20)
    GUICtrlSetData(-1,$String,$Drive[1]) ; Setz den Inhalt der Combo und setzt das 1. gefundene Laufwerk als default
    $Ok = GUICtrlCreateButton("OK",220,10,30,22)
    GUISetState()
    While 1
    Switch GUIGetMsg()
    Case -3
    Exit
    Case $ok
    MsgBox(0,"Laufwerk",GUICtrlRead($Combo))
    EndSwitch
    WEnd

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

    [

  • danke für den vorschlag @penta.phoenix, hat prima funktioniert, man musste nur eine kleinigkeit verändern, sonst hätte er die daten aus dem inputfeld nicht übernommen. habe auch das ExitLoop rausgenommen, weil ich nicht will, das mein Programm geschlossen wird.


    [autoit]

    $input = GUICtrlCreateInput("", 10, 10, 100)
    $button = GUICtrlCreateButton("Drücken", 10, 50, 100)
    While 1
    $msg = GUIGetMsg()

    If $msg = $button Then
    $suche = _ArraySearch($drive, GUICtrlRead($input), 0, 0, 0, True)
    If @error Then
    ;Fehlermeldung

    Else
    ;weiterarbeiten
    EndIf
    EndIf
    WEnd

    [/autoit]

    @DjBasslord: der vorschlag sieht auch gut aus, werde ihn dann sicher genauer unter die lupe nehmen, muss dann mal schauen welcher lösungsansatz für das restliche Programm brauchbarer ist.

    schonmal vielen dank!!!