Array Werte verbinden "Bitte Helfen..."

  • Hallo,

    Ich möchte eine Zählfunktion für meine Listview erstellen, und zwar habe ich eine mehrspaltige listview mit verschiedenen werten in jeder zeile.
    Nun möchte ich so eine Art Stk. Liste erstellen wo aus den Daten in meiner ListView die Häufigkeit der verschiedenen Werte gezählt werden.

    Ich weiß so eine func könnte etwas umfangreich sein, wäre jedoch für eure Hilfe sehr dankbar.

    Ich habe nämlich überhaupt keine Idee wie ich damit anfangen soll. ?(;(

    Hier mal ein Screenshot von meiner ListView: [Blockierte Grafik: http://www.autoit.de/index.php?page=Attachment&attachmentID=8462&h=aa6e81853a0885fa80fdba5d9cc0c8b6a11e3186]

    Spoiler anzeigen
    Zitat

    Ich weiß wo dein Haus wohnt... 8o

    Einmal editiert, zuletzt von stinger2k (5. April 2010 um 16:44)

  • Hier ein Beispiel für die Gui....

    und mein Ansatz für die rechnen() func:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 625, 443, 420, 185)
    $Liste = GUICtrlCreateListView("Pos.|T1|T2|T3|T4|T5", 20, 133, 580, 300, BitOR($LVS_REPORT, $LVS_EDITLABELS, $WS_EX_DLGMODALFRAME, $WS_EX_CLIENTEDGE))
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    _GUICtrlListView_SetColumnWidth($Liste, 0, 130)
    _GUICtrlListView_SetColumnWidth($Liste, 1, 80)
    _GUICtrlListView_SetColumnWidth($Liste, 2, 80)
    _GUICtrlListView_SetColumnWidth($Liste, 3, 80)
    _GUICtrlListView_SetColumnWidth($Liste, 4, 80)
    _GUICtrlListView_SetColumnWidth($Liste, 5, 80)
    _GUICtrlListView_SetExtendedListViewStyle($Liste, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_DOUBLEBUFFER))
    GUICtrlCreateListViewItem("A" & "|" & 225 & "|" & 355 & "|" & 400 & "|" & 102 & "|" & 100, $Liste)
    GUICtrlCreateListViewItem("B" & "|" & 325 & "|" & 278 & "|" & 400 & "|" & 207 & "|" & 366, $Liste)
    GUICtrlCreateListViewItem("C" & "|" & 425 & "|" & 645 & "|" & 500 & "|" & 752 & "|" & 75, $Liste)
    GUICtrlCreateListViewItem("D" & "|" & 225 & "|" & 100 & "|" & 421 & "|" & 400 & "|" & 200, $Liste)
    GUICtrlCreateListViewItem("E" & "|" & 125 & "|" & 355 & "|" & 896 & "|" & 400 & "|" & 316, $Liste)
    GUICtrlCreateListViewItem("F" & "|" & 100 & "|" & 355 & "|" & 785 & "|" & 752 & "|" & 30, $Liste)
    GUICtrlCreateListViewItem("G" & "|" & 355 & "|" & 225 & "|" & 120 & "|" & 400 & "|" & 100, $Liste)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

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

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

    Case $Liste
    rechnen()
    EndSwitch
    WEnd

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

    Func rechnen()
    $var="stk"
    For $i=1 to 1000
    GUICtrlCreateListViewItem($var[$i], $Liste)
    Next
    EndFunc

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

    Ich weiß wo dein Haus wohnt... 8o

  • So hier?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <Array.au3>

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

    Global $aListe[1][2] = [["Text", "Anzahl"]]

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

    $hGui = GUICreate("GUI", 600, 200)
    $hLV = GUICtrlCreateListView("Pos.|T1|T2|T3|T4|T5", 0, 0, 400, 200)
    GUICtrlCreateListViewItem("A|225|625|661|472|225", $hLV)
    GUICtrlCreateListViewItem("B|506|225|123||472", $hLV)
    $hButton = GUICtrlCreateButton("Liste", 450, 50, 100, 25)
    GUISetState()

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hButton
    $iColumn = _GUICtrlListView_GetColumnCount($hLV)
    $iRow = _GUICtrlListView_GetItemCount($hLV)
    For $i = 0 To $iRow - 1
    For $k = 1 To $iColumn - 1
    $sItem = _GUICtrlListView_GetItemText($hLV, $i, $k)
    $iArraySearch = _ArraySearch($aListe, $sItem)
    If $iArraySearch = -1 Then
    ReDim $aListe[UBound($aListe) + 1][2]
    $aListe[UBound($aListe) - 1][0] = $sItem
    $aListe[UBound($aListe) - 1][1] = 1
    Else
    $aListe[$iArraySearch][1] += 1
    EndIf
    Next
    Next
    _ArrayDisplay($aListe)
    EndSwitch
    WEnd

    [/autoit]
    • Offizieller Beitrag

    Oder so?

    Spoiler anzeigen
    [autoit]

    #include <GuiListView.au3>
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

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

    Global $aListe[1]
    $hGui = GUICreate("Form1", 625, 443, 420, 185)
    $Liste = GUICtrlCreateListView("Pos.|T1|T2|T3|T4|T5", 20, 133, 580, 300, BitOR($LVS_REPORT, $LVS_EDITLABELS, $WS_EX_DLGMODALFRAME, $WS_EX_CLIENTEDGE))
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    _GUICtrlListView_SetColumnWidth($Liste, 0, 130)
    _GUICtrlListView_SetColumnWidth($Liste, 1, 80)
    _GUICtrlListView_SetColumnWidth($Liste, 2, 80)
    _GUICtrlListView_SetColumnWidth($Liste, 3, 80)
    _GUICtrlListView_SetColumnWidth($Liste, 4, 80)
    _GUICtrlListView_SetColumnWidth($Liste, 5, 80)
    _GUICtrlListView_SetExtendedListViewStyle($Liste, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_DOUBLEBUFFER))
    GUICtrlCreateListViewItem("A" & "|" & 225 & "|" & 355 & "|" & 400 & "|" & 102 & "|" & 100, $Liste)
    GUICtrlCreateListViewItem("B" & "|" & 325 & "|" & 278 & "|" & 400 & "|" & 207 & "|" & 366, $Liste)
    GUICtrlCreateListViewItem("C" & "|" & 425 & "|" & 645 & "|" & 500 & "|" & 752 & "|" & 75, $Liste)
    GUICtrlCreateListViewItem("D" & "|" & 225 & "|" & 100 & "|" & 421 & "|" & 400 & "|" & 200, $Liste)
    GUICtrlCreateListViewItem("E" & "|" & 125 & "|" & 355 & "|" & 896 & "|" & 400 & "|" & 316, $Liste)
    GUICtrlCreateListViewItem("F" & "|" & 100 & "|" & 355 & "|" & 785 & "|" & 752 & "|" & 30, $Liste)
    GUICtrlCreateListViewItem("G" & "|" & 355 & "|" & 225 & "|" & 120 & "|" & 400 & "|" & 100, $Liste)
    GUISetState(@SW_SHOW)

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Liste
    rechnen()
    EndSwitch
    WEnd

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

    Func rechnen()
    $iColumn = _GUICtrlListView_GetColumnCount($Liste)
    $iRow = _GUICtrlListView_GetItemCount($Liste)
    For $i = 0 To $iRow - 1
    For $k = 1 To $iColumn - 1
    $sItem = _GUICtrlListView_GetItemText($Liste, $i, $k)
    If $sItem <> "" Then
    $iArraySearch = _ArraySearch($aListe, $sItem)
    If $iArraySearch = -1 Then
    ReDim $aListe[UBound($aListe) + 1][2]
    $aListe[UBound($aListe) - 1][0] = Int($sItem)
    $aListe[UBound($aListe) - 1][1] = 1
    Else
    $aListe[$iArraySearch][1] += 1
    EndIf
    EndIf
    Next
    Next
    _ArraySort($aListe, 0, 0, 0, 0)
    $aListe[0][0] = "Wert"
    $aListe[0][1] = "Anzahl"
    _ArrayDisplay($aListe)
    EndFunc ;==>rechnen

    [/autoit]

    Sollten die Werte keine Zahlen sein einfach

    [autoit]

    $aListe[UBound($aListe) - 1][0] = Int($sItem)

    [/autoit]


    gegen

    [autoit]

    $aListe[UBound($aListe) - 1][0] =$sItem

    [/autoit]


    austauschen. Hab ich nur eingefügt, damit _ArraySort richtig funktioniert.

  • Naja ich hab ja auch nur das Grundgerüst geliefert, den Rest kann er ja selbermachen ;)

    • Offizieller Beitrag

    Weiß ich, mich hat nur das unsortierte und der leere Eintrag gestört. :D

  • Leute, Ihr seid die besten...
    Genau So hatte ich mir das vorgestellt. (Nicht ganz...mein Ansatz war mit StringRegEx)
    So ist das ja noch viel besser als ich glaubte.

    Danke an euch... :thumbup::thumbup::thumbup:

    Spoiler anzeigen
    Zitat

    Ich weiß wo dein Haus wohnt... 8o

  • Hi,
    ich verstehe ehrlich gesagt nicht so ganz was du machen willst...

    Außerdem frage ich mich wo dein Script ist.
    Du stellst eine Frage, die sich so anhört wie die Aufforderung dir etwas zu scripten. Das ist nicht die Jobbörse, eigentlich geht es drum, dir auf die Sprünge zu helfen.

  • Das soll auch keine Jobbörse sein, wenn du weiter oben mal nachsiehst ist auch ein scriptbeispiel vorhanden und folgende func hab ich um die listview item-werte zu zählen

    Spoiler anzeigen
    [autoit]

    Global $aListe[1]
    $iColumn = _GUICtrlListView_GetColumnCount(GUICtrlGetHandle ($Liste))-4
    $iRow = _GUICtrlListView_GetItemCount(GUICtrlGetHandle ($Liste))
    If $iRow > 0 Then

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

    For $i = 0 To $iRow - 1
    For $k = 1 To $iColumn - 1
    $sItem = _GUICtrlListView_GetItemText(GUICtrlGetHandle ($Liste), $i, $k)
    If $sItem <> "" Then
    $iArraySearch = _ArraySearch($aListe, $sItem)
    If $iArraySearch = -1 Then
    ReDim $aListe[UBound($aListe) + 1][2]
    $aListe[UBound($aListe) - 1][0] = Int($sItem)
    $aListe[UBound($aListe) - 1][1] = 1
    Else
    $aListe[$iArraySearch][1] += 1
    EndIf
    EndIf
    Next
    Next
    _ArraySort($aListe, 0, 0, 0, 0)
    _ArrayDelete($aListe,0)

    [/autoit]


    Nun möchte ich es so hinkriegen das ich die werte mit kriterien zählen kann z.B. sind 2 Stk mit einer Länge von 692 vorhanden und nur eines davon mit einer stanzung von 50... So wollte ich es in ein array bekommen. Das zählen an sich ist ja kein problem nur weiß ich nicht wie ich das bewerkstellige das ich 2 spalten miteinander verknüpfe um zu diesem ziel zu kommen(über "_ArraySearch").

    Hoffe ich konnte das nun besser erklären :huh:

    Spoiler anzeigen
    Zitat

    Ich weiß wo dein Haus wohnt... 8o

  • Soll das so gemeint sein, dass sich die Spalte "Stanzung T3" auf die Werte in der Spalte "T3" beziehen (Bild dass zu gepostet hast)

    also würde das heißen:

    384 --> 65
    661 --> 530
    661 --> 530

    Dann müsste man nur noch wissen wie das nachher im Array stehen soll.
    Wenn die Länge gleich ist und sich nur die Stanzung unterscheidet, sollen die dann einzeln aufgeführt werden?
    Und man müsste wissen, wie die Werte in der Listview stehen. Ich finde die Formatierung ist relativ schlecht gewählt um das ganze so auszulesen...

    Poste am besten mal ein Script mit Werten wie du dir das vorstellst.

  • im Array sollte dies so stehen:
    355 1(Stk)
    355 1(Stk) 50(Stanzung)

    etc.

    hier beispielscript

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 820, 443, -1, -1)
    $Liste = GUICtrlCreateListView("Pos.|T1|T2|T3|T4|T5|||", 20, 133, 780, 300, BitOR($LVS_REPORT, $LVS_EDITLABELS, $WS_EX_DLGMODALFRAME, $WS_EX_CLIENTEDGE))
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    _GUICtrlListView_SetColumnWidth($Liste, 0, 130)
    _GUICtrlListView_SetColumnWidth($Liste, 1, 80)
    _GUICtrlListView_SetColumnWidth($Liste, 2, 80)
    _GUICtrlListView_SetColumnWidth($Liste, 3, 80)
    _GUICtrlListView_SetColumnWidth($Liste, 4, 80)
    _GUICtrlListView_SetColumnWidth($Liste, 5, 80)
    _GUICtrlListView_SetColumnWidth($Liste, 6, 80)
    _GUICtrlListView_SetColumnWidth($Liste, 7, 80)
    _GUICtrlListView_SetColumnWidth($Liste, 8, 80)
    _GUICtrlListView_SetExtendedListViewStyle($Liste, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_DOUBLEBUFFER))
    GUICtrlCreateListViewItem("A" & "|" & 225 & "|" & 355 & "|" & 400 & "|" & 102 & "|" & 100 & "|" & 50, $Liste)
    GUICtrlCreateListViewItem("B" & "|" & 325 & "|" & 278 & "|" & 400 & "|" & 207 & "|" & 366 & "|" & 50, $Liste)
    GUICtrlCreateListViewItem("C" & "|" & 425 & "|" & 645 & "|" & 500 & "|" & 752 & "|" & 75, $Liste)
    GUICtrlCreateListViewItem("D" & "|" & 225 & "|" & 100 & "|" & 421 & "|" & 400 & "|" & 200, $Liste)
    GUICtrlCreateListViewItem("E" & "|" & 125 & "|" & 355 & "|" & 896 & "|" & 400 & "|" & 316 &"|" & "|" & 530, $Liste)
    GUICtrlCreateListViewItem("F" & "|" & 100 & "|" & 355 & "|" & 785 & "|" & 752 & "|" & 30 &"|" & "|" & 530, $Liste)
    GUICtrlCreateListViewItem("G" & "|" & 355 & "|" & 225 & "|" & 120 & "|" & 400 & "|" & 100, $Liste)
    GUISetState(@SW_SHOW)

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

    $Button=GUICtrlCreateButton ("Stückliste",350,60,120,25)
    #EndRegion ### END Koda GUI section ###

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

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

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

    Case $Button
    stklisterech()
    EndSwitch
    WEnd

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

    Func stklisterech()
    Global $aListe[1]
    $iColumn = _GUICtrlListView_GetColumnCount(GUICtrlGetHandle ($Liste))
    $iRow = _GUICtrlListView_GetItemCount(GUICtrlGetHandle ($Liste))
    If $iRow > 0 Then

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

    For $i = 0 To $iRow - 1
    For $k = 6 To $iColumn -2
    $sItem = _GUICtrlListView_GetItemText(GUICtrlGetHandle ($Liste), $i, $k)
    $sItem2 = _GUICtrlListView_GetItemText(GUICtrlGetHandle ($Liste), $i, 2)

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

    If $sItem <> "" Then

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

    $iArraySearch = _ArraySearch($aListe, $sItem)

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

    If $iArraySearch = -1 Then
    ReDim $aListe[UBound($aListe) + 1][2]
    $aListe[UBound($aListe) - 1][0] = Int ($sItem2)
    $aListe[UBound($aListe) - 1][1] = ($sItem)
    Else
    $aListe[$iArraySearch][1] += 1
    EndIf
    EndIf
    Next
    Next
    _ArraySort($aListe, 0, 0, 0, 0)
    _ArrayDisplay($aListe,0)
    Exit
    EndIf
    EndFunc

    [/autoit]


    ich bin zwar ein bisschen weitergekommen nur glaube ich, ich bin noch meilenweit vom ziel entfernt...

    Spoiler anzeigen
    Zitat

    Ich weiß wo dein Haus wohnt... 8o

  • Das Problem ist, dass ich nicht checke was du willst. Geh doch mal auf das ein was ich frage...

    Also, wofür sind die beiden letzten Spalten jetzt?
    Worauf bezieht sich das?
    Heißt dass, dass alle die unter Position A und B stehen die Stanzung 50 haben?
    Und alle die unter E und F stehen die Stanzung 530?

  • Entschuldige,
    Die vorletzte Spalte bezieht sich zu "T2" und die letzte zu "T3" und diese zur jeweiligen zeile in der listview.
    Ich möchte darauf hinaus, das ich zählen kann, wieviel Stück mit den Werten in Spalte 2 sind und eine Stanzung(vorletzte Spalte) von 50 haben.

    Genauso auch bei "T3" und der letzten Spalte...

  • Ok, ich verstehe. Kann es auch vorkommen, dass es mehr als 2 Spalten gibt? Oder sind es immer die letzten zwei Spalten, die sich auf T2 und T3 beziehen?
    Weil ansonsten müsstest du ja eine Spalte frei lassen.
    Und ich verstehe außerdem nicht, warum du nicht direkt in die Listview z.B.
    355;50 schreibst, anstatt solche Umwege zu machen. Woher kommt dieses Format und warum benutzt du es?
    Wenn diese Fragen geklärt sind Scripte ich dir das Ding :D.

  • Es sind immer die letzten beiden Spalten...
    Dieses Format kommt daher das ich für mein Büro eine Maske habe die Berechnungen für Beschlagsteile macht(daher die Daten in T1,T2,T3 usw.) die Stanzung (die letzten beiden Spalten) ergeben sich nur bei bestimmten Längen, daher brauche ich sowas wie eine Stückliste, damit man beim Zuschnitt nicht jedesmal nachschauen muss welche Formel zur Berechnung greift(denn einmal ist es z.B. "T2/2 -531" und einmal "T2 -961", kommt aber auf die Länge an).

    Und wenn über 100 Positionen zusammenkommen ergeben sich vielmals die selben werte, so kann eine stückliste alles auf einen Blick enthalten ohne unübersichtlich zu werden.
    Danke für deine Mühen :thumbup:

    Spoiler anzeigen
    Zitat

    Ich weiß wo dein Haus wohnt... 8o

    2 Mal editiert, zuletzt von stinger2k (4. April 2010 um 23:24)

  • Hey,
    so, ich habe eben kurz ein bisschen dran gebastelt...
    Es ist nicht sehr sauber und schwer zu verstehen, das tut mir leid, aber das ging auf die schnelle nicht besser.
    Ansonsten hoffe ich, dass ich einigermaßen getroffen habe, was du gemeint hast. Die Stanzung könnte man noch in eine extra Spalte auslagern, aber da hatte ich ehrlich gesagt jetzt keine Lust mehr drauf.

    Gib dann nochma Rückmeldung...

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>

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

    $Form1 = GUICreate("Form1", 820, 443, -1, -1)
    $Liste = GUICtrlCreateListView("Pos.|T1|T2|T3|T4|T5|||", 20, 133, 780, 300, BitOR($LVS_REPORT, $LVS_EDITLABELS, $WS_EX_DLGMODALFRAME, $WS_EX_CLIENTEDGE))
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    _GUICtrlListView_SetColumnWidth($Liste, 0, 130)
    _GUICtrlListView_SetColumnWidth($Liste, 1, 80)
    _GUICtrlListView_SetColumnWidth($Liste, 2, 80)
    _GUICtrlListView_SetColumnWidth($Liste, 3, 80)
    _GUICtrlListView_SetColumnWidth($Liste, 4, 80)
    _GUICtrlListView_SetColumnWidth($Liste, 5, 80)
    _GUICtrlListView_SetColumnWidth($Liste, 6, 80)
    _GUICtrlListView_SetColumnWidth($Liste, 7, 80)
    _GUICtrlListView_SetColumnWidth($Liste, 8, 80)
    _GUICtrlListView_SetExtendedListViewStyle($Liste, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_DOUBLEBUFFER))
    GUICtrlCreateListViewItem("A" & "|" & 225 & "|" & 355 & "|" & 400 & "|" & 102 & "|" & 100 & "|" & 50, $Liste)
    GUICtrlCreateListViewItem("B" & "|" & 325 & "|" & 278 & "|" & 400 & "|" & 207 & "|" & 366 & "|" & 50, $Liste)
    GUICtrlCreateListViewItem("C" & "|" & 425 & "|" & 645 & "|" & 500 & "|" & 752 & "|" & 75, $Liste)
    GUICtrlCreateListViewItem("D" & "|" & 225 & "|" & 100 & "|" & 786 & "|" & 400 & "|" & 200 & "|" & "|" & 530, $Liste)
    GUICtrlCreateListViewItem("E" & "|" & 125 & "|" & 355 & "|" & 900 & "|" & 400 & "|" & 316 & "|" & "|" & 530, $Liste)
    GUICtrlCreateListViewItem("F" & "|" & 100 & "|" & 355 & "|" & 786 & "|" & 752 & "|" & 30 & "|" & "|" & 530, $Liste)
    GUICtrlCreateListViewItem("G" & "|" & 355 & "|" & 225 & "|" & 120 & "|" & 400 & "|" & 100, $Liste)
    GUISetState(@SW_SHOW)

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

    $Button = GUICtrlCreateButton("Stückliste", 350, 60, 120, 25)

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

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

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

    Case $Button
    stklisterech()
    EndSwitch
    WEnd

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

    Func stklisterech()
    Local $counter, $aListe[1], $aListe2[1][2]
    $iColumn = _GUICtrlListView_GetColumnCount($Liste)
    $iRow = _GUICtrlListView_GetItemCount($Liste)

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

    For $i = 0 To $iColumn - 1
    For $j = 1 To $iRow - 2
    $sItem = _GUICtrlListView_GetItemText($Liste, $i, $j)
    If $sItem <> '' Then
    If ($j = 2) And (_GUICtrlListView_GetItemText($Liste, $i, 6) <> '') Then
    $sItem &= ' ; ' & _GUICtrlListView_GetItemText($Liste, $i, 6)
    ElseIf ($j = 3) And (_GUICtrlListView_GetItemText($Liste, $i, 7) <> '') Then
    $sItem &= ' ; ' & _GUICtrlListView_GetItemText($Liste, $i, 7)
    EndIf
    _ArrayAdd($aListe, $sItem)
    EndIf
    Next
    Next
    _ArraySort($aListe)
    _ArrayAdd($aListe, 'End')
    ;~ _ArrayDisplay($aListe)
    ; Doppelte Finden...
    $i = 1
    While $i <= UBound($aListe) - 1
    $counter = 0
    For $j = $i + 1 To UBound($aListe) - 1
    If $aListe[$j] = $aListe[$i] Then
    $counter += 1
    Else
    ReDim $aListe2[UBound($aListe2) + 1][2]
    $aListe2[UBound($aListe2) - 1][0] = $aListe[$i]
    $aListe2[UBound($aListe2) - 1][1] = $counter + 1
    $i += $counter
    ExitLoop
    EndIf
    Next
    $i += 1
    WEnd
    $aListe2[0][0] = "Wert"
    $aListe2[0][1] = "Anzahl"
    _ArrayDisplay($aListe2)
    EndFunc ;==>stklisterech

    [/autoit]
  • :thumbup:  anno2008 Funktioniert schon sehr gut, aber....
    ...gibt es auch eine Möglichkeit das Array so aufzubauen: :?:
    355 | 3 Stk | 1 Stk | 50 Stanzung
    278 | 1 Stk | 1 Stk | 50 Stanzung
    786 | 2 Stk | 2 Stk | 530 Stanzung
    900 | 1 Stk | 1 Stk | 530 Stanzung

    wenn ich ein "|" darin einbaue und mit

    [autoit]

    _GUICtrlListView_AddArray (GUICtrlGetHandle ($Liste),$aListe2)

    [/autoit]

    die Daten der Liste hinzufüge erkennt er es nicht als DataSeparator... ?(

    Spoiler anzeigen
    Zitat

    Ich weiß wo dein Haus wohnt... 8o

    2 Mal editiert, zuletzt von stinger2k (5. April 2010 um 10:09)

  • 786 | 2 Stk | 2 Stk | 530 Stanzung

    Soll das jetzt heißen, dass es 2 Teile mit einer Länge von 786 gibt plus
    2 Teile mit einer Länge von 786 und einer Stanzung von 530 gibt?
    Wenn ja muss man ja nur die Array Elemente aneinander hängen...