Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Listbox Itemmaximalbeschränkung? (https://www.delphipraxis.net/94677-listbox-itemmaximalbeschraenkung.html)

Axxus 25. Jun 2007 13:29


Listbox Itemmaximalbeschränkung?
 
HI Delphianer :hi:

Ich bin an einem Algorhythmusprojekt dran (Inhalt sollte unwichtig sein) Jedenfalls wird am anfang ein Maximalwert angegeben und dann wird gezählt und die Ergebnisse sollen in mehrere Listboxen gespeichert werden.

Nun hab ich mir grdacht:

Nimmst du dir einen Scrollbar und und wenn man an der scrollt bewegen sich die Listboxen parallel mit runter. So Leider funzt das nicht so, wie ich mir das vorgestellt hab, denn der Scrollbar. max ist von Typ integer :( und mein Programm soll für mehr als nur für 2.000.000.000 ergebnisse KOmpatibel sein xD

Also hab ich mir gedacht:

ok dann nehm ich halt den Scrollbar von einer Listbox und wenn an der gescrollt wird bewegen sich die anderen parallel mit. Nin ist aber auch der Listbox.topINdex vom Typ integer.

Lannge rede kurzerr sinn:

Kann man in einer Listbox mehr als 2.000.000.000 items unterbringen???

Gruß

Axxus

Daniel 25. Jun 2007 13:33

Re: Listbox Itemmaximalbeschränkung?
 
Nein, kannst Du nicht - und ich denke, dass dies auch nicht das ... sagen wir ... primäre ... Einsatzgebiet für eine Listbox ist.

Die Einträge, die Du anzeigst, soll der Anwender ja auch noch irgendwie verkraften können. Eine GUI ist zur allgemeinen Datenhaltung grundsätzlich nicht geeignet. Wenn Du schon mit so vielen Werten rechnest und sie tatsächlich auch alle individuell benötigst, dann würde ich die Liste in Hintergrund führen und nur die Intervalle darstellen, die der Anwender gerade benötigt. Und aus Gründen der Geschwindigkeit würde ich dann vermutlich nicht zur Listbox greifen, sondern zum TVirtualTree von Mike Lischke.

Axxus 25. Jun 2007 13:44

Re: Listbox Itemmaximalbeschränkung?
 
Ich führe die Liste parallel im HIntergrund.

Es geht um das vergleichen von zahlen und ob diese pythagoräisch zueinander sind also on sqrt (a+b) = c ist, wobei c eine ganze zahl sein muss.

sobald ein ergebniss rauskommt wird dieses in einer Stringlist im hintergrund gespeciehrt und per intervall (den der nutzer selbst entscheiden kann) in die Listbox eingefügt.

nun will ich dem endbenutzer ein möglichst flexibles Programm anbieten, dass nicht anstürzt, sobalt es mal mehr sls 2.000.000.000 Zahlen sind (in der Praxisi wird dieser wert wahrscheinlich nie errreicht werden, aber falls ja...)

Meint ihr es wäre sinvoll, wenn erst einmal nur die ersten 100 angezeigt werden und der benutzer dann die spannweite der anzuzeigenden Zahlen selbst bestimmen kann?

Bernhard Geyer 25. Jun 2007 13:55

Re: Listbox Itemmaximalbeschränkung?
 
2.000.000.000 Einträge - Und das bei einem 32-Bit Betriebssystem :-)
Ohne Vorkehrungen wird dein programm gerade soviel Speicher insgesamt (in Bytes) verbrauchen dürfen. Und da sind alle geladenen DLL's etc. auch dabei.

DelphiKlaus 25. Jun 2007 13:59

Re: Listbox Itemmaximalbeschränkung?
 
Hallo,

Du solltest einfach mal überlegen, wie lange Dein Programm wohl brauchen würde, um 2.000.000.000 Kombinationen von Zahlen a, b und c zu finden, die die vorgegebene Bedingung erfüllen. Wenn Du es schaffst, einen Algorithmus zu implementieren, der 10.000 Zahlentripel pro Sekunde prüft, braucht Dein Programm ca. 60 Stunden, wenn ich richtig gerechnet habe, um 2.000.000.000 Zahlentripel zu untersuchen. Das heisst aber noch nicht, das auch 2.000.000.000 Ergebnisse gefunden wurden. Da zu würde ein Rechner vermutlich mehrere Wochen ununterbrochen rechnen müssen. Und wieviele Jahre würde der Anwender brauchen, um sich diese Zahlen anzugucken?

Klaus

Axxus 25. Jun 2007 14:28

Re: Listbox Itemmaximalbeschränkung?
 
Mhh stimmt
ok habt recht, außerdem soviele müssen es ja auch nicht sein

Danke

Axxus

ibp 25. Jun 2007 14:33

Re: Listbox Itemmaximalbeschränkung?
 
das kann man ja alles enorm reduzieren....

ansatz..

a+b=c²

also erstmal gesucht sind alle quadratzahlen, die anderen fallen weg...

liste der qudratzahlen...
1
4 = 1+3
9 = 1+3+5

..lassen sich durch addition der ungeraden darstellen.

nun alle kombinationen mit denen sich quadratzahlen darstellen lassen....

beispiel 16...

1) 1+15
2) 2+14
..
8) 8+8
...
beispiel 9

1) 1+8
2) 2+7
3) 3+6
4) 4+5
...

mit hilfe des kommutativgesetztes brauchst du nur bis |qudratzahl/2| darstellen ;-)

das sollte deine datenflut schon mal reduzieren....


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:31 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