Je cherche un code moins barbare que le miens pour remplir une ComBox dans une boucle...
Debut DB "Choux ",0
DB "Bijoux ",0
DB "Cailloux ",0
DB""Etc... ",0
DB "XXXX",0 ; ---> Pour signaler la fin du replissage !!!!!!
; Dans l'exemple, 10 Octet par item !!! Pour sauter à l'item suivant !!!!!!!!
--------------------------------------------------------------------
; ------> Remplissage de la liste
mov esi, offset Debut ; Pointe sur le 1er Item
Remplissage:
cmp [esi],dword ptr "xxxx" ; Si Fin, c'est fini !
jz FinRemplissage
call SendMessageA,IDC_Annu_Resultat_h,CB_ADDSTRING,0,esi
add esi,10 ; Saute à l'Item suivant (10 octet par item)
jmp Remplissage
FinRemplissage:
Call Suite du code.....
;
Ce code marche tres bien meme pour des liste de plusieurs milliers d'Item mais etre obligé de comblés avec des espaces pour sauter à l'item suivant, c'est pas cool !
- Je precise aussi que l'on pourrait comparer le caractere de fin (0) et sauter à l'item suivant... Mais c'est pas bon si un Item a le caracter 0
- Idem pour l'espace !
* Enfourner plusieurs "milliers d'items" dans une liste user, c'est mal.* Limiter à 9 caractères, c'est mal.* Penser à optimizer la vitesse de remplissage là où il n'y a aucun problème de vitesse, c'est mal.Solution:1) Laisser les items à leur tailles naturelles.2) Terminer simplement tout item par 03) Terminer la liste par un autre 0 (deux 0 à la fin)Scanner "bêtement" la liste, item par item.Betov.
---> Tout a fait d'accord pour la theorie !
Mais en creant une boucle de cette facon (basique), ca ne saute jamais à l'item suivant à l'interieur d'une boucle !!!
item 1 db "blblabla",0
item 2 db "wizzz",0
item 3 db "tactac",0
item 4 db CodeFIn
Oui, c'est bon comme ça, mais il n'y a pas vraiment besoin de Buffer, ni de stocker dans le Buffer. Un simple deplacement de Pointeur fera la même chose, si tu scan après l'API plutôt qu'avant.
Dans la famille "95", je suis à peu près sûr qu'il y en a une. Ce devrait être la taille d'un Word. Je ne sais plus si c'est pour le nombre d'Item ou pour la taille totale des Chaînes. Dans la famille NT, je me souviens pas en avoir vu une... peut-être.
N'importe comment, c'est un très mauvais design ergonomique, que de proposer des listes sans fin à des utilisateurs. Il est toujours préférabe d'essayer de splitter par catégories, par thèmes, ... pour proposer quelque chose de "gérable".
Juste une derniere question :
Y a t'il une limite dans la taille d'une liste ?
----------------------------------------------------------------------------
Pour la listBox (XP) la taille est un dword
- Mais attention, le chargement de plus de 100 000 item est assez long (+/- 10 secondes)
- Par contre la recherche d'1 item sur 100 000 est quasi immediate (C'est meme dingue et ca ma bluffé)