ListView Spalten Füllungsproblem

  • Hallo zusammen, ich bin es mal wieder.

    Zuerst einmal wünsche ich euch ein frohes neues Jahr und vielen Dank an euch für die sehr gute Unterstützung bei meinen Autoit Problemen im letzten Jahr.


    So jetzt zu meinem bescheidenen Problem:

    Ich habe eine ListView (Bild: oberes großes weißes leeres Feld)

    autoit.de/wcf/attachment/23972/

    die soll mit Daten aus verschiedenen Dateien gespeist werden, wichtig ist allerdings erstmal, dass ich verstehe wie ich das mit 2 Dateien anstelle damit ich weis wie es mit allen anderen Dateien dann funktioniert. Es sind alles Ini Dateien!


    Quellcode:

    [autoit]

    Func ListView_Uebersicht_fuellen()

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

    $ArrayWork = IniReadSectionNames($Pfad_Auftragserfassung&"\Aufträge.ini")
    $LastIndex = $ArrayWork[0]
    _ArrayDisplay($ArrayWork)


    For $a = 0 To 1000000000000
    $ArrayStart2 = IniReadSection($Pfad_Start&"\Start.ini", $a)
    _ArrayDisplay($ArrayStart2)
    GUICtrlCreateListViewItem($ArrayStart2[1][1], $Voll_Uebersicht_List)
    Next
    For $i = 0 To $LastIndex
    $ArrayStart = IniReadSectionNames($Pfad_Start&"\Start.ini")
    $LastIndex = $ArrayStart[0]
    _ArrayDisplay($ArrayStart)
    IniReadSection($Pfad_Start&"\Start.ini", $ArrayStart[$i])
    GUICtrlCreateListViewItem($ArrayStart[2], $Voll_Uebersicht_List)
    _GUICtrlListView_AddSubItem($Voll_Uebersicht_List,$i-1,$ArrayStart[$i],2,1)
    Next

    EndFunc

    [/autoit]

    Mein Problem ist jetzt, dass ich vorher eine Ini Datei anlegen lasse, bei der Zahlen mit bis zu 16Stellen eingepflegt werden.

    TestDatei:
    autoit.de/wcf/attachment/23973/

    da die Zahlen aber nicht bekannt sind müsste ich diese durch eine Varible deklarieren, allerding tue ich mich da schwer... Dazu soll in der erstespalte der ListView der Name stehen, der bei MItarbeiter steht.

    Hier muss irgendwas falsch sein:

    [autoit]

    For $a = 0 To 1000000000000
    $ArrayStart2 = IniReadSection($Pfad_Start&"\Start.ini", $a)
    _ArrayDisplay($ArrayStart2)
    GUICtrlCreateListViewItem($ArrayStart2[1][1], $Voll_Uebersicht_List)

    Next

    [/autoit]


    Hat einer eine Idee?

    Ich hoffe ich hab dass nicht zu kompliziert verfasst und ihr versteht was ich meine :)

    • Offizieller Beitrag

    Du hast das richtig erkannt, genauso wie du mir das geschrieben hast, sollte die ini Datei eingelsen werden


    :?:
    Ich möchte wissen, welcher Wert aus deiner Beispiel INI an welcher position des Listview eingetragen werden soll.
    Also schreib bitte eine Pseudo-tabelle, wie ich es gemacht habe, aber mit den Angaben aus der INI.
    Vermutlich ist aber der Aufbau deiner INI nicht sinnvoll, aber um das sicher zu sagen muss ich wissen, wie das Endergebnis aussehen soll.

  • Okey Soory falsch verstanden also

    hier nochmal die Ini Datei:
    autoit.de/wcf/attachment/23976/

    Das Array wird auch richtig angezeigt, es kann nur nicht in die ListView eingetragen werden.


    So soll es aussehen:


    Code
    Mitarbeiter:       KommBereich:                            Spool:          Start:
    Sebi               Wird aus anderer Datei gespeist         123             Jeweilige Uhrzeit
    Mischa             Wird aus anderer Datei gespeist         123456          Jeweilige Uhrzeit

    Der Rest der Tablle wird durch andere Ini's gefüllt und dann abgeglichen

    • Offizieller Beitrag

    Wenn du z.B. 100 Einträge machen willst, brauchst du bei dem Konzept 100 Sektionen in der Ini. Wenig sinnvoll.
    Mach doch nur eine Sektion (dann kannst du alle Inhalte mit IniReadSection in einem Rutsch lesen) und gliedere die etwa so:

    Code
    Schlüssel=NAME||LIEFERSCHEIN|ZEIT


    Dann kannst du den Inhalt des Schlüssels, also alles was rechts vom Gleichheitszeichen steht, sofort mit

    [autoit]

    GUICtrlCreateListViewItem

    [/autoit]

    verwenden. Für die zweite Spalte ist kein Wert enthalten, deshalb die doppelte Pipe (||). Dazwischen kannst du vorm Erstellen des ListviewItem den Wert aus der anderen Datei einfügen.

  • Danke für deine Idee:)

    Den Plan hatte ich bereits vorher schonmal allerdings erfült es nicht seinen Zweck, da die Namen dann ständig überschrieben wurden.


    Aber ich hab jetzt das eigentliche Problem isoliert aber komm nicht drauf warum das so ist. Das Array wird richtig mit

    [autoit]

    _ArrayDisplay

    [/autoit]

    ausgegben, kann aber nicht in die ListView eingetragen werden.

    z.B muss der Wert

    [autoit]

    $ArrayStart[1][1]

    [/autoit]

    in die Spalte Mitarbeiter. Beim Einlesen in das Array kommt dann der Fehler: Subscript used with non-Array variable, der bringt mich eigentlich zur Verzweiflung, denn so wie ich es vor habe sollte es klappen, dass hat bereits vorher schonmal an einer anderen Stelle funktion, mit anderen Ini Dateien :(

  • So ich hab jetzt schonmal herausgefunden, dass das Problem an der Schleife liegt

    [autoit]

    For $a = 0 To Ubound($SectionsCount) -1
    $ArrayA = IniReadSection($Pfad_Start&"\Start.ini", $SectionsCount[$a]) ;$SectionsCount auslesen Array[][] geht nicht
    $Name = $ArrayA[1][1]
    MsgBox(1,"",$Name)
    GUICtrlCreateListViewItem($Name, $Voll_Uebersicht_List)
    _ArrayDisplay($ArrayA)
    Next

    [/autoit]

    Wenn ich dann den Teil des Auslesens unter die Schleife setzte

    [autoit]

    For $a = 0 To Ubound($SectionsCount) -1
    $ArrayA = IniReadSection($Pfad_Start&"\Start.ini", $SectionsCount[$a]) ;$SectionsCount auslesen Array[][] geht nicht
    ;~ $Name = $ArrayA[1][1]
    ;~ MsgBox(1,"",$Name)
    ;~ GUICtrlCreateListViewItem($Name, $Voll_Uebersicht_List)
    _ArrayDisplay($ArrayA)
    Next

    $Name = $ArrayA[1][1]
    MsgBox(1,"",$Name)
    GUICtrlCreateListViewItem($Name, $Voll_Uebersicht_List)

    [/autoit]

    funktioniert es in sofern, dass nur die Letzte Section´eingelesen wird ?(

  • Problem gelöst =) Hier die Lösung


    [autoit]

    $SectionsCount = IniReadSectionNames($Pfad_Start&"\Start.ini")
    $Count=$SectionsCount[0]

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

    For $a = 1 To $Count
    $ArrayStartName = IniReadSection($Pfad_Start&"\Start.ini", $SectionsCount[$a]) ;$SectionsCount auslesen Array[][] geht nicht

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

    $Name = $ArrayStartName[1][1]
    $Spool = $ArrayStartName[2][1]
    $Stopp = $ArrayStartName[3][1]
    $Time = $ArrayStartName[4][1]
    $Date = $ArrayStartName[5][1]
    $EndeTime = IniRead($Pfad_Ende&"\Ende.ini", $Spool ,"Uhrzeit","")
    $Kom=IniRead($Pfad_Auftragserfassung&"\Aufträge.ini", $Spool ,"Kom","")
    $Bemerkung=IniRead($Pfad_Auftragserfassung&"\Aufträge.ini", $Spool ,"Bemerkung","Fehler")
    $Express=IniRead($Pfad_Auftragserfassung&"\Aufträge.ini", $Spool ,"Express","Fehler")
    Next

    [/autoit]