Listview Anzeige

  • Hallo,

    ich zerbrech mir die ganze Zeit schon den Kopf wie
    man dieses Problem lösen kann.
    Fang mal mit der Erklärung an:
    Es gibt mehrere Datensätze
    Es gibt einen Loop der die Datensätze nacheinander anzeigt

    Spoiler anzeigen
    [autoit]


    [Rasse]
    1=Schäferhund
    2=Collie
    3=Boxer
    [Name]
    1=Rex
    2=Britta
    3=Shira
    [Papiere]
    1=ja
    2=nein
    3=ja

    [/autoit]

    Das Ergebnis sollte später in einer Listview übersichtlich sortierbar sein.

    1. Frage zu den Daten
    In meinem Loop werden die Daten richtig nacheinander angezeigt

    Spoiler anzeigen


    also:
    Loop 1...
    Rex
    Schäferhund
    ja
    ...
    next

    Grundsätzliche Frage:

    Muß ich zuerst von diesen Daten (aus meinem Loop) eine ini (wie oben) oder csv anlegen?
    Die Daten erhalte ich per RegEx (zur Info) Also bräuchte normal keine ini? oder?

    2. Kann man die Daten direkt vom Loop an eine Listview schicken?


    Tappe da noch etwas im dunkeln

    Liebe Grüße
    Ilse ;)

    Einmal editiert, zuletzt von Ilse (21. Juni 2011 um 11:17)

  • 1. Nur wenn die Daten auch gespeichert werden sollen brauchst du eine Datei (ini, txt, csv usw.)

    2. Na klar :)

    [autoit]

    GUICtrlCreateListViewItem("Rex|Schäferhund|ja", $hlistview)

    [/autoit]
    • Offizieller Beitrag

    Und wenn du die Daten speicherst (hier ist dann eine txt-Datei zu empfehlen), leg sie so ab, dass du die eingelesenen Zeilen sofort in dein Listview schreiben kannst, in der ersten Zeile legst du dann z.B. die Spaltenüberschrift ab:

    Code
    RASSE|NAME|PAPIERE
    Schäferhund|Rex|ja
    Collie|Britta|nein
    Boxer|Shira|ja
  • Hallo,

    merci für die Hilfe.
    In meiner Listview kommt was an.
    Folgender Fehler passiert allerdings:
    Wenn das Array keinen Inhalt hat, stürzt alles ab:
    Muß ich also noch irgendwie abfangen.

    [autoit]


    GUICtrlCreateListViewItem($Ergebnisse[0], $Listview1)

    [/autoit]

    Wenn $Ergebnisse Werte hat, werden diese in Col0 eingetragen.

    Leider noch ein paar andere Fragen, was ich mit der Hilfe nicht hinbekommen habe:

    Frage: an Nuts:
    Wie kann ich die Spalte bestimmen z.B. Eintrag in Spalte 3
    und eine Spalte sortieren.

    Meine Listviewspalten sehen so aus:

    Spoiler anzeigen
    [autoit]


    $ListView1 = GUICtrlCreateListView("Rasse|Name|Papiere|vermittelt", 8, 8, 250, 150)

    [/autoit]

    nehmen wir an dieser Wert soll in Spalte3 Papiere

    [autoit]


    GUICtrlCreateListViewItem($Ergebnisse[0], $Listview1)

    [/autoit]

    kurze Frage noch an Bugfix:
    Müssen die Datensatztrenner für Listviews immer "|" sein, oder können es auch ; sein?

    Kannst du mir vielleicht ein Beispiel machen
    wie man diese Daten in das Listview $ListView1 importieren kann?

    Spoiler anzeigen


    RASSE|NAME|PAPIERE
    Schäferhund|Rex|ja
    Collie|Britta|nein
    Boxer|Shira|ja

    Sortieren, _GUICtrlListView_SimpleSort()
    hoffe das ist der richtige Befehl fürs Spalten sortieren.

    huh, viele Fragen...


    Liebe Grüße
    Ilse ;)

  • ...endlich,

    wie man auf die Spalten zugreifen kann, hab's jetzt:

    [autoit]


    $d = $i&"|"&$Ergebnisse[0]&"|"&$i&"|"&$i
    GUICtrlCreateListViewItem($d, $Listview1)

    [/autoit]

    und weiter geht's, das Sortieren wenn man auf die Kopfzeile der Spalte klickt!
    Probier mal weiter...

    Grüße
    Ilse ;)

  • Brauch nochmal eure Hilfe!

    Ich kann den Error nicht abfangen!

    [autoit]


    If $Ergebnisse[0]>0 then
    GUICtrlCreateListViewItem($d, $Listview1)
    endif

    [/autoit]


    das hat nicht geklappt.
    Also wenn $Ergebnisse[0] leer ist
    dann stürzt alles ab.

    Wie kann ich das abfangen?

    ;) Ilse

  • so vllt?

    [autoit]

    If IsArray($Ergebnisse) Then GUICtrlCreateListViewItem($d, $Listview1)

    [/autoit]
  • Hallo Inferior,

    nee leider auch nicht!
    Komisch, der 1. Loop geht, der 3.4....
    hol ich $Ergebnisse kpl. raus läuft es auch.

    Hier mal der wichtige Teil des Loops

    [autoit]


    $sSource= BinaryToString(inetread($test)) ; Seite wird heruntergeladen
    $arrayfilter = StringRegExp($sSource,'\sclass="g-nav">([^"<\d\(\#\&]+)',3) ; Suchmuster wird geladen

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

    $Ergebnisse = StringRegExp($sSource,'countClass''>(.*?)</span>',3) ; Suchmuster
    _ArrayDisplay($Ergebnisse[0], "Array Auswertung") ; das wird beim 2. Loop nicht mehr gezeigt!!!!!!

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

    $d = $var[$i][1]&"|"&$Ergebnisse[0]&"|"&""&"|"&$i ; Spalten in Listview

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

    GUICtrlCreateListViewItem($d, $Listview1) ; wird in Listview geschrieben!

    [/autoit]


    habe mal folgendes probiert:

    [autoit]


    $Ergebnisse = StringRegExp($sSource,'countClass''>(.*?)</span>',3)
    _ArrayDisplay($Ergebnisse, "Array Auswertung")

    [/autoit]

    beim 2. Loop zeigt $Ergebnisse keinen Wert an.
    Also _ArrayDisplay wird nicht gezeigt!
    beim 1. + 3. Loop wird _ArrayDisplay angezeigt!

    Und genau diesen Fehler muß ich abfangen. Aber wie?


    ;) Ilse

    Einmal editiert, zuletzt von Ilse (20. Juni 2011 um 20:20)

  • Bei dem Auszug kann ich nur raten
    Entweder wird die Variable irgendwo entwertet oder will über die Arraygrenzen hinaus Daten holen.
    Also $array[9][1] anfordern es gibt aber nur $array[8][1] Dann müsste das Script aber abbrechen.
    Wie holst Du den die Werte mit for $i = 1 to Ubound($array,1) -1 oder so und dann mit die einzelnen Datensätze abholen?
    Sind alle Werte bestückt oder evtl. Leerstellen drin wo er drüber stolpert...

    Gruß Dietmar

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

  • Hallo Dietmar,

    hm da ist mittlerweile viel drin.

    Folgendes:
    Der Loop beginnt so:

    [autoit]


    For $i = 0 To UBound($arControl)-1
    :dann werden Controls angelegt....usw.
    ;dann folgen diese Zeilen
    $sSource= BinaryToString(inetread($test)) ; Seite wird heruntergeladen
    $arrayfilter = StringRegExp($sSource,'\sclass="g-nav">([^"<\d\(\#\&]+)',3) ; Suchmuster wird geladen

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

    $Ergebnisse = StringRegExp($sSource,'countClass''>(.*?)</span>',3) ; Suchmuster
    _ArrayDisplay($Ergebnisse, "Array Auswertung") ; das wird beim 2. Loop nicht mehr gezeigt!!!!!!

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

    $d = $var[$i][1]&"|"&$Ergebnisse[0]&"|"&""&"|"&$i ; Spalten in Listview

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

    GUICtrlCreateListViewItem($d, $Listview1) ; wird in Listview geschrieben!

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

    Komisch ist, daß das listview ja gefüllt wird.
    Wenn das regexSuchmuster im Loop keinen Wert anzeigt, (2. Loop) sollte das mit dem Listvieweintrag
    nicht passieren. Deswegen zeigt auch _ArrayDisplay($Ergebnisse,"Array Auswertung") im 2. loop nichts an.
    Danach folgt der Absturz!

    Liebe Grüße
    Ilse ;)

  • Guten Morgen zusammen,

    bin immer noch an diesem Problem.
    Folgende Fehlermeldung habe ich in dieser Zeile:
    Subscript used with non-Array variable

    [autoit]


    $d = $var[$i][1]&"|"&$Ergebnisse[0]&"|"&""&"|"&$i

    [/autoit]

    Was mir jetzt noch aufgefallen ist:
    Lasse ich den Loop so laufen

    [autoit]


    $d = $var[$i][1]&"|"&$Ergebnisse&"|"

    [/autoit]


    also $Ergebnisse ohne [0] dann passiert folgendes:
    in die Listview wird das eingetragen:
    Row0 Col0 keinen Wert (ok)
    Row1 Col0 1 (das ist komisch, woher kommt die 1)
    Row2 Col0 keinen Wert (ok) ...


    Grüße
    Ilse ;)

    2 Mal editiert, zuletzt von Ilse (21. Juni 2011 um 10:24)

    • Offizieller Beitrag

    Leider ignorierst du kräftig die Hinweise, die man dir gibt. :wacko:
    Mit einer RegEx-Abfrage fragst du Daten ab - OK.
    Aber du weißt doch nicht, ob dein RegEx auch Daten gebracht hat! Deshalb mußt du vor jedem Zugriff auf die Variable, die das Ergebnisarray enthalten soll prüfen, ob es auch wirklich befüllt wurde (IsArray).
    Ist es kein Array setzt du die Schleife einfach mit ContinueLoop fort ohne einen Eintrag im Listview zu erstellen (sind ja auch keine Daten dafür da).

  • Morgen Bugfix,

    erstmal danke, für deine Hilfe. Es klappt juhu...

    Ich hatte nichts ignoriert,
    mit IsArray hab ich zig mal probiert, Variablen geprüft u.v.m.
    aber von ContinueLoop

    hab ich nichts gelesen. Und genau das war's!
    Davor erfolgte der Absturz,
    und nun läuft es durch!

    DANKE!

    Liebe Grüße
    Ilse ;)