Listboxliste

  • Hallo,
    Stehe im Moment auf dem Schlauch.
    Wie löscht man zuverlässig Leer-Einträge in der ListboxListe ?



    Da zeigt mir das erste GetCount(0) 64 und das nachfolgende hinter der Schleife
    34 an. Also werden nur 30 statt 59 gelöscht, was auch Listbox$ anzeigt.

    Wir sind die XProfaner.

    Sie werden von uns assimiliert.

    Widerstand ist zwecklos!

    Wir werden alle ihre Funktionen und Algorithmen

    den unseren hinzufügen.

  • Du ermittelst vor dem Eintritt in die Schleife die Anzahl der Zeilen und zählst dann hoch. Einfaches Beispiel, die ersten beiden Zeilen der Liste enthalten jeweils den zu entfernenden Leerstring. Nach dem ersten Löschen (Zeile 0) geht &Loop um 1 hoch, zeigt also auf Zeile 1. Die zweite Zeile wird aber durch das Löschen zur Zeile 0 und damit übersprungen.
    Laß Deine Schleife rückwärts laufen

    Code
    WhileLoop GetCount(0) - 1, 0, -1

    Wird jetzt zum Beispiel die letzte Zeile gelöscht, geht &Loop auf die vorletzte Zeile, die nun durch das Löschen zur letzten Zeile der Liste geworden ist u.s.w.


    Gruß Volkmar

  • Hier ist auch eine fußgesteuerte Schleife ganz nützlich.
    Evtl kannst du sogar gleich im String die Leereinträge eleminieren:



    P.S. die Handhabung von Quellcodes fand ich vorher unkomplizierter...

  • Danke für die Tipps.
    Jetzt funktioniert es.

    Wir sind die XProfaner.

    Sie werden von uns assimiliert.

    Widerstand ist zwecklos!

    Wir werden alle ihre Funktionen und Algorithmen

    den unseren hinzufügen.

  • Hab das immer, bin ja nicht so ein Genie wie Volkmar, mit einer temporären Listbox gemacht.


    Nach Deletestring(" ",nr%) alle vorhandenen Einträge in die Templist& geschrieben,
    den Inhalt der eigentlichen Listbox& gelöscht, den Inhalt der Templist& hineingeschrieben und die Templist& danach zerstört
    Alles natürlich in eine While-Schleife
    Klappt aber auch wunderbar :D

  • Vielleicht kann man ja Roland dazu bewegen, das gleich
    bei Move("MemToList",...) mit zu erledigen.
    Soll heißen, daß die Nullstrings bzw. dort, wo im Bereich
    nur ein Chr$(0) steht, erst gar nicht in die Listboxliste
    kommen.
    :top:
    Denn, wenn man daran nicht denkt bzw. mit Listbox$()
    nicht nachschaut, könnte es u.U. mit dem Programmlauf
    Probleme geben.

    Wir sind die XProfaner.

    Sie werden von uns assimiliert.

    Widerstand ist zwecklos!

    Wir werden alle ihre Funktionen und Algorithmen

    den unseren hinzufügen.

  • Da es ja um Move("MemToList", ...) geht, kann man, wenn man irgendwo
    Leerstrings in der Listboxliste haben möchte, Blanks in den Bereich
    schreiben. Diese sind ja bei der Verarbeitung der Listboxliste leicht mit
    Trim$() zu entfernen. Ein Blank ist ja nicht ein "".


    Von daher sehe ich da keine Probleme.


    Vielleicht wäre es auch sinnvoll, das per zus. Flag bei Move("MemToList,...)
    zu bestimmen. Da wäre jedem geholfen.

    Wir sind die XProfaner.

    Sie werden von uns assimiliert.

    Widerstand ist zwecklos!

    Wir werden alle ihre Funktionen und Algorithmen

    den unseren hinzufügen.

  • Ein Blank ist ja nicht ein "".

    Und dieser Unterschied kann entscheidend sein. Mit einem zusätzlichen Flag könnte es sicher gehen. Aber dann würden sich sicher viele Befehle finden, die sich für einen speziellen Fall eine etwas verhalten sollen.


    Gruß Volkmar

  • Hätte ja noch den Vorteil, daß man so sämtliche Arten
    von Stringlisten und String-Arrays dank den Move-Befehlen
    und einfachem Hin - und Herschieben trimmen könnte.


    Für das Dim vom Bereich reicht ja
    GetCount0|(Handle) * max. Zeilenbreite


    Da ist man auf der sicheren Seite.


    Naja, wie es auch sei, ich kann mir ja ein einfaches
    TrimList als Proc schreiben.

    Wir sind die XProfaner.

    Sie werden von uns assimiliert.

    Widerstand ist zwecklos!

    Wir werden alle ihre Funktionen und Algorithmen

    den unseren hinzufügen.

    Einmal editiert, zuletzt von H.Brill ()

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!