Klammern entfernen

  • Ich lese momentan mit der Funktion _GUICtrlComboBox_AddDir verzeichnisse direkt in die Compobox ein. Das problem ist, das sie in Eckigen klammern stehen ( [ ] ).
    gibt es eine Möglichkeit die zu entfernen. Bei Drives funktioniert es mit dem zusatz False.

    Spoiler anzeigen
    [autoit]


    _GUICtrlComboBox_BeginUpdate ($MODELL)
    _GUICtrlComboBox_AddDir ($MODELL, $PFADAKTUELL & "n2nSA\drv\*",$DDL_DIRECTORY)
    _GUICtrlComboBox_EndUpdate ($MODELL)

    [/autoit]

    mfg

    skynet

    Einmal editiert, zuletzt von skynet (7. Dezember 2007 um 13:22)

  • Hallo,

    du könntest mit StringInStr() überprüfen ob die Klammern vorhanden sind und dann mit StringTrimLeft oder StringTrimRight die klammern löschen.

  • Ich habe schon so was ähnliches probiert:
    Mein problem ist, das jetzt die einträge 2 mal drin sind, einmal mit und einmal ohne klammern :cursing:


    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    _GUICtrlComboBox_BeginUpdate ($MODELL)
    _GUICtrlComboBox_AddDir ($MODELL, $PFADAKTUELL & "n2nSA\drv\*",$DDL_DIRECTORY)
    _GUICtrlComboBox_EndUpdate ($MODELL)


    GUICtrlSetData($MODELL, StringReplace(StringReplace(_GUICtrlComboBox_GetList($MODELL),"["," "),"]"," "))

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
  • jetzt geht es, komisch, wollte nur die .. wegschneiden.

    Aber warum es jetzt auf einmal funktioniert, keine ahnung

    Spoiler anzeigen
    [autoit]


    _GUICtrlComboBox_BeginUpdate ($MODELL)
    _GUICtrlComboBox_AddDir ($MODELL, $PFADAKTUELL & "n2nSA\drv\*",$DDL_DIRECTORY)
    _GUICtrlComboBox_EndUpdate ($MODELL)


    GUICtrlSetData($MODELL, StringReplace(StringReplace(StringReplace(_GUICtrlComboBox_GetList($MODELL),"[",""),"]",""),"..",""))

    [/autoit]
  • Alternativ dazu kannst du dir auch einfach die _GUICtrlComboBox_AddDir-Funktion so anpassen das auch bei Verzeichnissen die Klammern entfernt wird:

    Spoiler anzeigen
    [autoit]

    Func _GUICtrlComboBox_AddDir2($hWnd, $sFile, $iAttributes = 0, $fBrackets = True)
    If $Debug_CB Then _GUICtrlComboBox_ValidateClassName($hWnd)
    If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)

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

    If BitAND($iAttributes, $DDL_DRIVES) Or BitAND($iAttributes, $DDL_DIRECTORY) And Not $fBrackets Then
    Local $sText, $v_ret
    Local $gui_no_brackets = GUICreate("no brackets")
    Local $combo_no_brackets = GUICtrlCreateCombo("", 240, 40, 120, 120)
    $v_ret = GUICtrlSendMsg($combo_no_brackets, $CB_DIR, $iAttributes, $sFile)
    For $i = 0 To _GUICtrlComboBox_GetCount($combo_no_brackets) - 1
    _GUICtrlComboBox_GetLBText($combo_no_brackets, $i, $sText)
    $sText = StringReplace(StringReplace(StringReplace($sText, "[", ""), "]", ":"), "-", "")
    _GUICtrlComboBox_InsertString($hWnd, $sText)
    Next
    GUIDelete($gui_no_brackets)
    Return $v_ret
    Else
    Return _SendMessage($hWnd, $CB_DIR, $iAttributes, $sFile, 0, "wparam", "str")
    EndIf
    EndFunc

    [/autoit]
  • Krass 8| , hast du die funktion jetzt mal schnell so geschrieben?

    gibt es bei der Combobox die möglichkeit den Inhalt zu löschen bzw so zu überschreiben das nur noch die neuen werte da sind?

    Bei :

    [autoit]

    GUICtrlSetData

    [/autoit]

    fügt er den wert einfach hinzu

  • Nein die hab ich nicht selbst schnell geschrieben.
    Das ist wie gesagt die originale _GUICtrlComboBox_AddDir Funktion aus der GUIComboBox.au3 bei der ich lediglich eine einzige Zeile geändert habe.

    Willst du den Inhalt einer ComboBox löschen dann hilft GUICtrlSetData weiter - in deinem Fall wohl so:

    [autoit]

    GUICtrlSetData($MODELL, '')

    [/autoit]