Listfeld füllen mit Wert von Array

  • Hallo zusammen

    kann mit bitte jemand weiterhelfen, ich möchte gerne ein Listfeld füllen mit den Werten von einem Array. Ich habe zuerst das File gelesen mit _FileReadToArray und nun möchte ich ein Listfeld mit diesen Werten füllen. In dem File welches ich auslese stehen momentan nur Vornamen drinn. (In jeder Zeile 1 Vorname). Soweit ich mich schlau gemacht habe dürfte es sich hierbei um ein 1 dimensonales Array handeln.

    #include <File.au3>
    #include <Array.au3>
    Dim $array1,$main1,$list1

    $arr1 = _FileReadToArray("C:\AutoIt\Adressen.txt",$array1)
    $main1 = GUICreate("Listfeld",400,400,200,200)
    $list1 = GUICtrlCreateList("",10,10,380,300)

    GUISetState()

    While 1
    $msg = GUIGetMsg()

    Switch $msg
    Case -3
    ExitLoop
    EndSwitch

    WEnd

    3 Mal editiert, zuletzt von johny1099 (30. November 2009 um 14:21)

  • Hi,

    meinst Du so:

    [autoit]

    #include <File.au3>
    #include <Array.au3>
    #Include <GuiListBox.au3>

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

    Dim $array1,$main1,$list1

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

    _FileReadToArray("C:\AutoIt\Adressen.txt",$array1)
    $main1 = GUICreate("Listfeld",400,400,200,200)
    $list1 = GUICtrlCreateList("",10,10,380,300)

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

    For $i = 1 To UBound ($array1) - 1
    _GUICtrlListBox_AddString ($list1, $array1 [$i])
    Next

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case -3
    ExitLoop
    EndSwitch
    WEnd

    [/autoit]

    ;-))
    Stefan

  • Ubound bestimmt die größe des Arrays.
    Arrays fangen bei 0 an und darum muss das Ergebnis von Ubound um 1 verringert werden.

    For $i = 1 to UBound ($array1) - 1
    ;usw
    Next
    Geht jeden Eintrag im Array durch und fügt ihn zu deiner Listbox hinzu.

    edit \
    _FileReadToArray liefert in $array[0] die Anzahl der Items, somit wäre in diesem Fall auch $array[0] verwendbar.
    Das ist aber nicht bei allen Arrays so (logisch 8) ) und somit gehts dann über Ubound.

  • Hi,

    ergänzend:
    Ubound ($var) - 1 = $var [0] wenn im ersten Element des Arrays die Anzahl der Elemente steht. Bei Funktionen die ein Array zurückgeben, steht dabei, ob die Anzahl der Elemente im ersten Element gespeichert werden.

    Wenn das 1. Element die Anzahl enthält, fängt Deine For Schleife mit 1 an
    For $i = 1 To UBound ($var) - 1 -> Ubound Anzahl der gesamten Elemente mit dem 1. Element (Anzahl), also -1 für Deine Schleife oder
    For $i = 1 To $var [0]

    Das ist aber nicht immer so, z.Bsp. bei StringSplit

    $var = StringSplit ($string, "*",2) -> 2 Deaktiviere das zählen der Elemente im ersten Arrayelement

    Hier kommst Du nur mit Ubound oder mit einer For ... in Schleife weiter und Deine For Schleife beginnt mit 0
    For $i = 0 To UBound ($var) - 1 oder
    For $element in $var

    ;-))
    Stefan