Liste erstellen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Mihilist
****
Beiträge: 120
Registriert: Di, 25.04.2006 15:27
Wohnort: Nürnberg
Kontaktdaten:

Liste erstellen

Beitrag von Mihilist »

Hallo, ihr schlauen Leute

Ich bin gerade auf ein größeres Problem gestoßen. Naja... eigentlich ist das Problem eher Nebensächlich, und die Lösung dürfte recht aufwendig sein, aber nachdem ich nichts anderes zu tun habe... :D

Also: Ich habe einen Dialog mit einer ComboBox, die zur Laufzeit mit Listeneinträgen gefüllt werden soll. Zur Laufzeit deshalb, weil die Einträge der Liste von der Auswahl einer anderen Box abhängen. Nun ist aber das Problem, dass die Methode ComboBox.AddItem(string, int) für viele Listeneinträge absolut lahmarschig wird...
Bei wenigen Einträgen geht es noch, aber schon im dreistelligen Bereich brauchen 100 neue Einträge mehrere Sekunden. Und ich hätte insgesamt ca. 10.000 Einträge. Bisher habe ich nicht ausprobiert, wie lang er bräuchte, bis er fertig ist - ich hab bisher immer nach einigen Minuten (maximum bisher: 5500 Einträge) abgebrochen. Hochgerechnet dürfte er 10 bis 15 Minuten brauchen, was für ein Komfort-Gimmick doch bissl happig ist :shock:
Zumal es zu einer Fehlermeldung kommen kann, wenn der dia beendet wird wärend das Makro sich noch abrackert...

Meine bisherigen Lösungsideen wären:
1) Mit TYPE ... END TYPE eine Liste herstellen (weil ich die Einträge gerne noch alphabetisch sortiert hätte), diese Liste am Ende in ein Array schreiben und dieses Array mit der deutlich schnelleren Methode ComboBox.AddItems(array, int) hinzufügen. Problem: Ich glaube StarBasic kennt keine benutzerdefinierten Datentypen :?

2) Ein Array mit Redim bauen und dieses adden. Allerdings müsste ich dazu ja, um ein item alphabetisch einzuordnen, (im Schnitt) die halbe Liste verrücken - vermutlich macht das die addItem-Methode so lahm.

Kann man irgendwie ein Array splitten? So dass ich sagen könnte: array1 = {0 ... n-1}; array2 = {n ... max}; array = array1 + item + array2 oder so...? Vermutlich nicht... :/

Oder hat jemand eine andere zündende Idee, wie ich mit möglichst wenig Aufwand mein Array erstellen kann? Die einzuordnenden Daten kommen aus einem Resultset.

Bin am Verzweifeln und über jeden Beitrag dankbar...

Grüße
Thomas