Variables Array Element aufrufen

  • Hallo zusammen,

    ist mein erster Beitrag und beschäftige mich noch nicht so lange mit AutoIt, aber die Hilfe und auch die Forensuche halfen mir hier nicht weiter, weshalb ich bei euch auf ein offenes Ohr hoffe...

    Mein Problem:

    ich benötige einen variablen Elementaufruf für eine Funktion...

    Die benötigte Form sollte in der Form...

    [autoit]

    _IECreate($linkURL[$i])

    [/autoit]

    möglich sein. Ich habe eine Combobox angelegt und kann mir nach jedem Klick auf einen Eintrag den Index davon zurückgeben lassen. Ich möchte das er wenn z.B. auf den Eintrag mit dem Index 1 geklickt wird auch...

    [autoit]

    _IECreate($linkURL[1])

    [/autoit]

    ausführt und das selbe bei 2, 3...

    wie geht das?


    schonmal vielen Dank im Vorraus euer Christian :)

    Einmal editiert, zuletzt von freach (23. November 2009 um 12:53)

  • Hallo freach,

    hier ein Grundgerüst für Combo-Boxen und INI-Files:

    Spoiler anzeigen
    [autoit]

    ;#include <GuiComboBox.au3>
    #include <ComboConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    #include <File.au3>

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

    Const $sElect = "bitte eine URL auswählen"

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

    #Region ### START Koda GUI section ### Form=
    $hGui = GUICreate("Combobox mit INI ", 250, 160, 302, 218)
    $hcboProg = GUICtrlCreateCombo($sElect, 8, 8, 200, 25)
    $hlblURL = GUICtrlCreateLabel("", 8, 35, 200, 50)
    $hbtnOpen = GUICtrlCreateButton("&Öffnen", 8, 85)
    GUICtrlSetState($hbtnOpen, $GUI_DISABLE)

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

    $sData = "AutoIt=http://www.autoit.de" & @LF & "Der Thread=http://www.autoit.de/index.php?page=Thread&postID=122400#post122400" & @LF & "AutoIt V3=http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe"
    IniWriteSection(@ScriptDir & "\MeinIniFile.INI", "URLs", $sData)
    $list1 = IniReadSection(@ScriptDir & "\MeinIniFile.INI", "URLs")
    ConsoleWrite($list1 & @CRLF)
    For $i = 1 To $list1[0][0]
    GUICtrlSetData($hcboProg, $list1[$i][0])
    Next

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hcboProg
    If GUICtrlRead($hcboProg) = $sElect Then
    GUICtrlSetState($hbtnOpen, $GUI_DISABLE)
    GUICtrlSetData($hlblURL, "")
    Else
    GUICtrlSetState($hbtnOpen, $GUI_ENABLE)
    $Prog = GUICtrlRead($hcboProg)
    $URL = IniRead(@ScriptDir & "\MeinIniFile.INI", "URLs",$Prog,"")
    GUICtrlSetData($hlblURL, $URL)
    EndIf
    Case $hbtnOpen
    ;hier $URL öffnen
    ;_IECreate($URL)
    EndSwitch
    WEnd

    [/autoit]

    mfg (Auto)Bert

  • HI!

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>

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

    GUICreate('')
    GUISetState()

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

    $combo = GUICtrlCreateCombo("", 10, 10)
    $label = GUICtrlCreateLabel("", 10, 40, 150,20)
    Dim $array[3][2] = [["Google","www.google.de"], ["Windows","www.windows.com"], ["KeineAhnung","www.keineahnung.was"]]
    For $i = 0 To 2
    GUICtrlSetData($combo, $array[$i][0] & "|", $array[$i][0])
    Next

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $combo
    If GUICtrlRead($combo) = $array[0][0] Then
    GUICtrlSetData($label, $array[0][1])
    ElseIf GUICtrlRead($combo) = $array[1][0] Then
    GUICtrlSetData($label, $array[1][1])
    ElseIf GUICtrlRead($combo) = $array[2][0] Then
    GUICtrlSetData($label, $array[2][1])
    EndIf
    EndSelect
    WEnd

    [/autoit]

    If not :?: then ?( else :thumbup:

  • vielen Dank für die schnellen Antworten, aber leider ist noch kein für mich nutzbarer Code vorhanden :(

    Concara: Deine Lösung kann ich leider nicht nutzen, da ich nicht weiß wie viele Elemente gebraucht werden. Es können 2-3 oder auch 100 sein und für 100 Fälle so etwas zu schreiben wäre suboptimal.

    autoBert: Gibt es auch eine Möglichkeit so etwas ohne eine .ini Datei zu lösen? Ich erhalte die URLs durch _StringExplode in folgendem Code:

    [autoit]

    if not $Text1[2] = "" Then ;Falls der ausgelesene Text Links enthält
    $hCombo = _GUICtrlComboBox_Create($hGUI, "", (@DesktopWidth/6*5),@DesktopHeight-50,162)
    _GUICtrlComboBox_InsertString($hCombo,"Links zum Thema:",0)
    $a = 1
    $b = 0
    $links = _StringExplode($Text1[2],"##") ;$Text1[2] lautet Linktext1#;LinkURL1##Linktext2#;LinkURL2##...
    for $link in $links
    $linkabschnitt = _StringExplode($link,"#;")
    _GUICtrlComboBox_InsertString($hCombo,$linkabschnitt[0],$a)
    $b = $b +1
    Next
    local $linkURL = $b
    for $link in $links
    $linkabschnitt = _StringExplode($link,"#;")
    _ArrayAdd($linkURL,$linkabschnitt[1])
    Next
    _GUICtrlComboBox_SetCurSel($hCombo, 0)

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

    EndIf

    [/autoit]

    die Auswahl fange ich folgendermaßen ab:

    [autoit]

    While 1
    $cbosel = _GUICtrlComboBox_GetCurSel($hcombo)
    switch $cbosel
    Case $cbosel
    if $cbosel > 0 then
    $state =_GUICtrlComboBox_GetDroppedState($hCombo)
    if $state = False then
    ;hier müsste dann ein Code wie _IECreate($linkURL[$cbosel]) rein, funktioniert so aber leider nicht
    EndIf
    _GUICtrlComboBox_SetCurSel($hCombo, 0)
    EndIf
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    gruß Christian

  • Concara: Deine Lösung kann ich leider nicht nutzen, da ich nicht weiß wie viele Elemente gebraucht werden. Es können 2-3 oder auch 100 sein und für 100 Fälle so etwas zu schreiben wäre suboptimal.

    öhm also diese lösung für 100 oder für 100000 oder für 3 elemente ist egtl recht einfach umzusetzten.

    hab Concara's Script mal umgebastelt:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    GUICreate('')
    GUISetState()

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

    $combo = GUICtrlCreateCombo("", 10, 10)
    $label = GUICtrlCreateLabel("", 10, 40, 150,20)
    Dim $array[3][2] = [["Google","www.google.de"], ["Windows","www.windows.com"], ["KeineAhnung","www.keineahnung.was"]]
    For $i = 0 To 2
    GUICtrlSetData($combo, $array[$i][0] & "|", $array[$i][0])
    Next

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $combo
    For $i = 0 To UBound($array) - 1
    If GUICtrlRead($combo) = $array[$i][0] Then GUICtrlSetData($label, $array[$i][1])
    Next
    EndSelect
    WEnd

    [/autoit]