Verzeichnis in Variable

  • Hallo Gemeinde,

    ich hab mal wieder eine (evtl. dähmliche) Frage,
    MIt dem FileSelectFolder kann man ein Verzeichnis super in eine Variable kopieren.
    z.B.
    Local $var = FileSelectFolder( "Ein Test", "C:\Programme\")
    Wenn ich dann ein Verzeichnis auswähle, kann ich dieses auch in z.B. MsgBox ausgeben.
    Msgbox(0, "", $var)
    Nun enthält die Variable den kompletten Pfad, also z.B.
    C:\Programme\AutoIt3
    Was muss ich machen, damit in der Variable nur das ausgewählte Verzeichnis gespeichert wird und nicht der komplette Pfad?
    Also hier sollte die Variable $var die Inhalt "AutoIt3" haben und sonst nichts.

    Vielen Dank für eure Hilfe.

    Gruß
    Manfred

    Ja, ich weiß es auch, das Problem ist einen halben Meter vor dem Bildschirm. 8o

    Einmal editiert, zuletzt von Mr-Ferret (18. März 2014 um 12:32)

  • Du kannst das mit StringSplit lösen.

    [autoit]

    $sPath = FileSelectFolder("Test", "C:\Programme")
    $asSplit = StringSplit($sPath, '\')
    MsgBox(0, "Test", $asSplit[$asSplit[0]])

    [/autoit]

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • Hi,

    [autoit]

    _PathSplit()

    [/autoit]

    ist dein Freund...

  • Hallo,

    ich hoffe nun nicht das es unverschämt ist, wenn ich jetzt noch mal mit einem Problem komme das "nur" indirekt zu diesem gehört.
    Kurze Rede ......
    Ich habe mir zu oben stehenden Prob. eine kleine Gui zusammen gebaut. Drei Button und eine Eingabezeile.

    Nun würde ich es gerne irgendwie hinkriegen, das der User auf den Button mit ... klickt dann das Verzeichnis auswählt und dieses
    in der Eingabezeile auftaucht und editierbar ist. Wenn dann der OK Butten gedrückt wird, das dann in eine Variable geschrieben wird.

    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <GuiButton.au3>

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

    $GuiVerzAuswahl = GUICreate("GuiVerzAuswahl",350,350,-1,-1,-1,-1)
    $AuswahlButton = GUICtrlCreateButton("...",210,60,34,23,-1,-1)
    $Verzeichnis = GUICtrlCreateInput("",20,60,180,20,-1,512)
    $weiter = GUICtrlCreateButton("OK",20,120,100,30,-1,-1)
    $Abbruch = GUICtrlCreateButton("Cancel",140,120,100,30,-1,-1)
    GUISetState(@SW_SHOW,$GuiVerzAuswahl)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $AuswahlButton
    $sPath = FileSelectFolder("Verzeichnis / RFC wählen", "y:")
    Case $Weiter
    MsgBox(0,"", $sPath)
    Case $Abbruch
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Ich habs schon mal hingekriegt das die Variable in ein Eingabefeld geschrieben wird, aber dann erscheint eine neues Eingabefeld und das ist nicht die Lösung.

    Vielen Dank
    Gruß
    Manfred

    Ja, ich weiß es auch, das Problem ist einen halben Meter vor dem Bildschirm. 8o

  • Hier:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <GuiButton.au3>

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

    $GuiVerzAuswahl = GUICreate("GuiVerzAuswahl",350,350,-1,-1,-1,-1)
    $AuswahlButton = GUICtrlCreateButton("...",210,60,34,23,-1,-1)
    $Verzeichnis = GUICtrlCreateInput("",20,60,180,20,-1,512)
    $weiter = GUICtrlCreateButton("OK",20,120,100,30,-1,-1)
    $Abbruch = GUICtrlCreateButton("Cancel",140,120,100,30,-1,-1)
    GUISetState(@SW_SHOW,$GuiVerzAuswahl)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $AuswahlButton
    GUICtrlSetData($Verzeichnis,FileSelectFolder("Verzeichnis / RFC wählen", "y:"))
    Case $Weiter
    MsgBox(0,"", GUICtrlRead($Verzeichnis))
    Case $Abbruch
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Ist ja super! Genau was ich will!
    Und ich war nicht mal so weit von der Lösung entfernt :rolleyes:

    Vielen Dank!!!!!
    Der Rest ist nun nur noch fleisarbeit. ;(

    Gruß
    Manfred

    Ja, ich weiß es auch, das Problem ist einen halben Meter vor dem Bildschirm. 8o