AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Viele Items in eine Listbox adden - simultan zur Berechnung?
Thema durchsuchen
Ansicht
Themen-Optionen

Viele Items in eine Listbox adden - simultan zur Berechnung?

Ein Thema von g00gle-gott · begonnen am 4. Mär 2009 · letzter Beitrag vom 5. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2      
g00gle-gott
(Gast)

n/a Beiträge
 
#1

Viele Items in eine Listbox adden - simultan zur Berechnung?

  Alt 4. Mär 2009, 20:46
Hallo,

ich habe folgendes Problem:
ich habe ein kleines Programm zu "türme von Hanoi" geschrieben und das Ergebnis soll in einer Listbox ausgegeben werden... Das klappt auch wunderbar, nur, dass es bei immer größer werdender Anzahl von Einträgen in die Listbox irgendwann seeeeehhhhr lange dauert, bis die Items in die Listbox übertragen werden. (ich kann anhand einer Progressbar den status der Berechnung sehen und sehe, dass die Berechnung bereits beendet ist, aber das Programm die Items erst nach der Berechnung in die Listbox lädt!) und das wiederum dauert wirklich sehr lange.

ich habe bereits folgendes versucht:

form1.ListBox1.Items.BeginUpdate; sowie
form1.ListBox1.Items.Endupdate; was, laut ausgiebiger g00gle suche, den Vorgang schneller machen sollte...

Zitat:
Adding a (larger) group of entries to a ListBox is very slow,
because after every "items.add" call the ListBox is repainted.

There are two ways to overcome this:

use the Windows message WM_SETREDRAW (see Win32.hlp for details).
The VCL provides two methods for this: BeginUpdate and EndUpdate.
(bringt allerdings nicht viel an geschwindigkeit !)

nun wollte ich fragen, ob es andere schnellere Arten gibt, die Items anzuzeigen und am besten diese sogar simultan zur Berechnung zu adden ...

Anmerkung: ich habe das Programm für meinen PDA mit lazarus kompiliert und auf diesem werden die Ergebnisse simultan zur Berechnung geaddet!

könnte es evtl nicht auch in Delphi die Möglichkeit geben, die Listbox so einzustellen, dass die Items simultan geaddet werden??

vielen Dank schomal im Vorraus

MFG Ändy
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Viele Items in eine Listbox adden - simultan zur Berechn

  Alt 4. Mär 2009, 20:48
Du könntest die Einträge zuerst einer Stringliste hinzufügen und diese dann an die Items anfügen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Viele Items in eine Listbox adden - simultan zur Berechn

  Alt 4. Mär 2009, 20:49
bei einer Listview könnt man den virtuellen Modus nehmen und nur die Anzahl der Einträge setzen. Bei einer Listbox weiß ich nicht ob sowas geht. Alternative Listbox-Implementieren wie z.B. das ElPack haben damit weniger Probleme da diese nicht den hier vorhandenen Bodleneck der Übertragens ans Win32-Control haben.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
g00gle-gott
(Gast)

n/a Beiträge
 
#4

Re: Viele Items in eine Listbox adden - simultan zur Berechn

  Alt 4. Mär 2009, 20:54
@mkinzler

ok, und wie würde das dann aussehen? also meine hauptprozedur sieht momentan wie folgt aus:

Delphi-Quellcode:
procedure turm (n : integer; A,B,C : String);
begin
  form1.ListBox1.Items.BeginUpdate;
  if n > 1 then
    begin
      turm (n-1, A, C ,B);
      Form1.Listbox1.items.add(A + ' nach ' + C);
      form1.progressbar1.position:=form1.listbox1.items.count;
      turm (n-1, B , A, C);
    end
      else begin
        Form1.ListBox1.items.add(A + ' nach ' + C);
        form1.progressbar1.position:=form1.listbox1.items.count;
      end;
  form1.ListBox1.Items.endUpdate;
end;
(die Progressbar mal nicht beachten) das is die standardprozedur (rekursiv) um Türme von Hanoi zu lösen...

mfg Ändy
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Viele Items in eine Listbox adden - simultan zur Berechn

  Alt 4. Mär 2009, 21:11
Probier die Tipps mal aus: http://www.michael-puff.de/Artikel/LB_INITSTORAGE.shtml
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
g00gle-gott
(Gast)

n/a Beiträge
 
#6

Re: Viele Items in eine Listbox adden - simultan zur Berechn

  Alt 5. Mär 2009, 17:39
naja vielen Dank mal... aber bringt nicht wirklich was...

welche alternativen gitb es denn zu einer Listbox????

ich brauch halt eine Möglichkeit viele ( >1.000.000 ) Lösungsschritte aufzulisten ...

MFG Ändy
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Viele Items in eine Listbox adden - simultan zur Berechn

  Alt 5. Mär 2009, 17:40
Wie gesagt nicht direkt in die Listbox einfügen
Markus Kinzler
  Mit Zitat antworten Zitat
g00gle-gott
(Gast)

n/a Beiträge
 
#8

Re: Viele Items in eine Listbox adden - simultan zur Berechn

  Alt 5. Mär 2009, 17:50
@ mkinzler

aber wie kann ich das anstellen?

MFG Ändy
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Viele Items in eine Listbox adden - simultan zur Berechn

  Alt 5. Mär 2009, 17:53
Die Einträge einer lokalen Stringliste hinzufügen und diese dann an die ListBox-Eintrage anhängen
Markus Kinzler
  Mit Zitat antworten Zitat
g00gle-gott
(Gast)

n/a Beiträge
 
#10

Re: Viele Items in eine Listbox adden - simultan zur Berechn

  Alt 5. Mär 2009, 20:07
hallo,

ok, hab jetzt eine Stringlist erstellt und die Elemente in dieser Gespeichert.

allerdings, wenn ich diese in eine Listbox laden will, dann kommt

Zitat:
[Fehler] Unit1.pas(88): Inkompatible Typen: 'String' und 'TStringList'
wie lautet der korrekte Befehl um die Elemente der Tstringlist als strings in die Listbox zu speichern??

vielen Dank bisher für die Hilfe

MFG Ändy
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz