Deutsch
Bugs und vermeintliche

Einträge in der Listboxliste

 
- Seite 1 -



E.T.
Lt. Hilfe X2 > Techn. Daten  sollen sich die möglichen Einträge in der Listboxliste auf
"2 Mia Einträge in der Listboxliste" 
erhöht haben (eigentlich schon ab 11).

Dem ist wohl nicht so (es folgt umständliches Beispiel ) :
KompilierenMarkierenSeparieren
windowtitle "Listboxlisten - Test " + $ProfVer
windowstyle 1024+16+8
window 250,150
var txt1& = @Control("STATIC", "Fülle Listboxliste...", $50000001,0,3,width(%hwnd),15, %hWnd,0, %hInstance)
var txt2& = @Control("STATIC", "- - -", $50000001,0,20,width(%hwnd),15, %hWnd,0, %hInstance)
var txt3& = @Control("STATIC", "Füllstand lt. getcount(0) :", $50000001,0,50,width(%hwnd),20, %hWnd,0, %hInstance)
var txt4& = @Control("STATIC", "- - -", $50000001,0,75,width(%hwnd),15, %hWnd,0, %hInstance)

whileloop 1,300000

    settext txt2&,format$("###,##0" ,&loop)
    addstring(0,str$(&loop))
    settext txt4&, format$("###,##0" ,getcount(0))

endwhile

waitinput
end

Wie man sehen kann, bleibt die LBL immer noch bei 262.144 stehen, bei mir zumindest. Drum hab ich auch die Profan-Version mal in die Titelzeile eingebunden, um sicher zu gehen, in der richtigen Version zu sein.


lb.jpg  
21 kB
Hochgeladen:07.09.2012
Ladeanzahl213
Herunterladen
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
07.09.2012  
 



 
- Seite 1 -



Peter
Max
Müller
Auf der Listbox-Liste Seite der Hilfe steht:



Seit jeher kennt XProfan eine Stringliste, die sogenannte "Listboxliste". Ursprünglich geplant, um Daten für die Anzeige in einer vorgegebenen Listbox mit @Listbox$ anzuzeigen, vermag sie jedoch viel mehr. Ab Version 11 kann sie bis zu 260.000 Strings aufnehmen und verwalten.
 
XProfan X3, X4ß, Win 10.1
07.09.2012  
 



Hat zwar nicht genau etwas mit dem Problem zu tun aber wollte trotzdem was testen...
KompilierenMarkierenSeparieren
 {$cleq}
cls
print "Listboxeinträge: ",getCount(myLB())
waitinput
end

nProc myLB

    long lst=createList(0)

    whileloop 300000

        addstring(lst,"jo")

    wend

    return lst

endproc


Da sind z.B. 300.000 (und mehr) kein Problem.
 
07.09.2012  
 




RGH
Dann will ich mal etwas Licht ins Dunkel bringen:

In der Tat ist die Grenze geblieben.
Aber als aus dem Befehl AddString ein Teil der Funktion AddString() wurde, wurde vergessen, die Fehlermeldung zu übernehmen.Die Funktion AddString() liefert aber 1 zurück, wenn sie erfolgreich war und 0, wenn nicht.
Für AddString(0,...) könnte ich die Fehlermeldung natürlich wieder einbauen.

(Ich hatte zwischenzeitlich eine dynamische Variante probiert, die wirklich MAXINT als Grenze gehabt hätte, aber die war deutlich langsamer. Daher hatte ich davon wieder Abstand genommen. Ich könnte allerdings die Grenze auf ca. 1 Million erhöhen, wenn Bedarf bsteht.)

Gruß
Roland
 
XProfan X2
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
04.01.2013  
 




Jörg
Sellmeyer
Immer so hoch wie es geht, ohne dass dadurch Abstriche an anderer Stelle gemacht werden müssen.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
04.01.2013  
 



Spricht etwas dagegen einfach die Microsoft interne Listbox zu verwenden? Die scheint mir am schnellsten bei bestimmtem Stil und verkraftet viel mehr Einträge. Den Stil muss ich raussuchen.
 
04.01.2013  
 




RGH
iF (04.01.13)

Spricht etwas dagegen einfach die Microsoft interne Listbox zu verwenden? Die scheint mir am schnellsten bei bestimmtem Stil und verkraftet viel mehr Einträge. Den Stil muss ich raussuchen.


Den Gedanken hatte ich auch schon. Dann könnte es auch eine Systemvariable mit dem Windows-Handle der Listbox-Liste geben. (Die mit create("LIST",...) erzeugten Stringlisten sind ja auch nichts anderes als Listboxen ohne Anzeige.)

Gruß
Roland
 
XProfan X2
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
04.01.2013  
 




RGH
BTW: Ich nutze folgende Funktion zum Erzeugen der Listen:

CreateWindow('LISTBOX', nil, sort or multi,0, 0, 0, 0, 0, 0, HInstance, NIL)

Also gar keinen Stil außer gegebenenfalls lbs_sort und/oder lbs_multiplesel.

Gruß
Roland
 
XProfan X2
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
04.01.2013  
 




RGH
Ok, ich habe es eben getestet:

Mit der Listbox-Liste dauert z.B. das AddString etwa 4 mal so lange, wie die bisherige Lösung. Das betrifft dann so Sachen wie AddFiles oder die ganzen MoveToList-Funktionen. Ich denke, das ist nicht Sinn der Sache.

Gruß
Roland
 
XProfan X2
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
04.01.2013  
 



Auf meinem Computer i7-3770K ist das Befüllen der internen ListBoxListe bei
250.000 Einträgen ca. 13 mal schneller als AddString auf ein ListBox-Control
und dauert 281ms.

Download


KompilierenMarkierenSeparieren
 {$cleq}
cls
print "250.000:\nX:",test2(250000),"ms\nI:",test3(250000),"ms\n"
print " 50.000:\nX:",test2(50000),"ms\nI:",test3(50000),"ms\n"
print "  5.000:\nX:",test2(5000),"ms\nI:",test3(5000),"ms\n"
print "    200:\nX:",test2(200),"ms\nI:",test3(200),"ms\n"
waitinput
end

Proc test2(long c)

    long lst=create("list",0)
    long tme=getTickCount

    whileloop c

        addstring(lst,"1234567890")

    wend

    tme=getTickCount-tme
    destroyWindow(lst)
    return tme

endproc

Proc test3(long c)

    clearlist
    long tme=getTickCount

    whileloop c

        addstring "1234567890"

    wend

    tme=getTickCount-tme
    return tme

endproc


1.033 kB
Hochgeladen:04.01.2013
Ladeanzahl138
Herunterladen
3 kB
Hochgeladen:04.01.2013
Ladeanzahl174
Herunterladen
 
04.01.2013  
 




Julian
Schmidt
Bei meinen Rechner ist es sogar noch krasser. Um die 27-28 mal schneller...
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
04.01.2013  
 



 
- Seite 2 -



RGH
Mit anderen Worten: Die Idee mit der ListboxListe als Windowscontrol kann ich getrost streichen!

Gruß
Roland
 
XProfan X2
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
04.01.2013  
 



@Roland: Weist Du was Delphi da macht das ich das den nProcs auch beibringen kann? Ich habe sowas wie Arrays noch nicht implementiert.
 
04.01.2013  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

18.147 Betrachtungen

Unbenanntvor 0 min.
H.Brill vor 7 Tagen
Manfred Barei28.12.2020
Alibre22.11.2017
Peter Max Müller18.11.2017
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie