dynamisches array/combo

  • hey,

    1.frage
    ich habe zwei versuche gemacht... ein dynamisches array:

    Spoiler anzeigen
    [autoit]

    #include<file.au3>
    #include<array.au3>

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

    $exelist_un=_FileListToArray(@DesktopDir, "*.exe", 1)
    If @Error=1 Then
    MsgBox (0,"","error")
    Exit
    EndIf

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

    Dim $exelist[1]

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

    For $i = 0 To UBound($exelist_un) Step 1
    If $exelist_un[$i] <> '' Then
    If $exelist[Ubound($exelist)-1] <> '' Then
    ReDim $exelist[Ubound($exelist)+1]
    EndIf
    $exelist[Ubound($exelist)-1] = $exelist_un[$i]
    EndIf
    $exelist[$i] = StringTrimRight($exelist_un[$i], 4)
    Next

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

    _ArrayDisplay($exelist,"exeliste")

    [/autoit]


    bei dem "Array variable has incorrect number of subscripts or subscript dimension range exceeded" also das er halt das array nicht erweitert. (auch wenn ich ein array festlege mit 10 und nur 5 exe datein da sind also einstatisches array geht auch nicht - gleicher fehler)

    der nächste war:

    Spoiler anzeigen
    [autoit]

    #include<file.au3>
    #include<array.au3>

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

    $exelist_un=_FileListToArray(@DesktopDir, "*.exe", 1)
    If @Error=1 Then
    MsgBox (0,"","error.")
    Exit
    EndIf

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

    $exelist = _ArrayTrim($exelist_un, 4, 1, 1)

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

    _ArrayDisplay($exelist,"exeliste")

    [/autoit]


    da habe ich über die rückgabe werte mitbekommen dass er das array von "_FileListToArray" als kein (ungültiges) array sieht.

    wenn ich nur: (geht es)

    Spoiler anzeigen
    [autoit]

    $exelist_un=_FileListToArray(@DesktopDir, "*.exe", 1)
    _ArrayDisplay($exelist_un,"exeliste")

    [/autoit]

    mir geht es darum das er die exe dateien ohne ".exe" einträgt z.b das im array nicht "AutoIt3.exe" steht sondern nur "AutoIt3" - sehe den fehler nicht ^^

    2.frage
    kann man dann auch das array gleich in eine combo stecken? (da es ja ein dynamisches array ist müsste es auch dynamische combo einträge sein)

    mfg u17

    2 Mal editiert, zuletzt von U17R4 (21. Januar 2009 um 00:28)

  • Hi,

    zu 1.

    Spoiler anzeigen
    [autoit]

    #include<file.au3>
    #include<array.au3>

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

    Global $pattern = ".exe"

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

    $exelist_un = _FileListToArray(@DesktopDir, "*" & $pattern, 1)
    If @error Then
    MsgBox(0, "", "error")
    Exit
    EndIf

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

    ; vorher
    _ArrayDisplay($exelist_un)

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

    For $i = 1 To UBound($exelist_un) - 1
    $exelist_un[$i] = StringTrimRight($exelist_un[$i], StringLen($pattern))
    Next

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

    ;nachher
    _ArrayDisplay($exelist_un)

    [/autoit]

    zu 2. (ich gehe davon aus du meinst eine Combobox?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include<file.au3>

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

    Global $pattern = ".exe", $string = ''

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

    $Form1 = GUICreate("Test", 165, 37, 618, 602)
    $Combo1 = GUICtrlCreateCombo("", 9, 8, 145, 25)

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

    $exelist_un = _FileListToArray(@DesktopDir, "*" & $pattern, 1)
    If @error Then
    MsgBox(0, "", "error")
    Exit
    EndIf

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

    For $i = 1 To UBound($exelist_un) - 1
    $exelist_un[$i] = StringTrimRight($exelist_un[$i], StringLen($pattern))
    Next

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

    For $i = 1 To UBound($exelist_un) - 1
    $string = $string & $exelist_un[$i] & '|'
    Next

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

    GUICtrlSetData($Combo1, $string)

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

    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]
  • wow, big thx :thumbup:

    zu 1 so habe ich es auch schon versucht aber ohne "StringLen" ...

    zu 2 da hätte ich auch selber drauf kommen können :pinch:

    Einmal editiert, zuletzt von U17R4 (21. Januar 2009 um 02:31)