RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Serv: irc.irc-land.org
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 Remplir une ComBox dans une boucle

Forum : ASSEMBLEUR
Sous Catégorie : Aucune
Type du sujet : Sujet Normale
FAQ : FAQ ASSEMBLEUR

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


PAGE : [1]

POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM ASSEMBLEUR

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
Fantomatax
Nouveau membre
Inscrit : 12/06/2007
Messages : 9
Message
#136007
Posté le 13/06/07 à 20:27
Hello la foule,

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 !

Merci à tous

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

Betov
Membre régulier
Inscrit : 30/03/2005
Messages : 86
Message
#136015
Posté le 13/06/07 à 21:35
* 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 0

3) Terminer la liste par un autre 0 (deux 0 à la fin)

Scanner "bêtement" la liste, item par item.


Betov.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Fantomatax
Nouveau membre
Inscrit : 12/06/2007
Messages : 9
Message
#136016
Posté le 13/06/07 à 22:28
* 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

boucle :
SendMessage,..... CB_ADDSTRING
cmp esi, codefin
jz FInDeBoucle
jmp boucle

CodeFIn
..........

Si effectivement, on compare 0 à chaque Item, on saute... Mais si un Item contiens 0, il y a probleme !!! Et d'ou mon probleme !

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Fantomatax
Nouveau membre
Inscrit : 12/06/2007
Messages : 9
Message
#136028
Posté le 14/06/07 à 00:18
Resolus !

Il faut se servir d'un buffer dans EDI et remplir via LODSB

item1 db "azerty"0
db "123456789",0
db "qsdfghjklm",0
FIN db 0
etc...

mov esi, offset item
mov edi, offset buffer

debut:
lodsb
cmp al, 0
je remplis
stosb
jmp debut
remplis:
stosb
call SendMessageA,hwnd,CB_ADDSTRING,0,offset Buffer
lodsb
cmp al, 0
je Fin
mov edi, offset Buffer
stosb
jmp debut
Fin:
----------------------------------------------------------------------

---> Betov
On s'eloigne un peu de :
Scanner "bêtement" la liste, item par item.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Betov
Membre régulier
Inscrit : 30/03/2005
Messages : 86
Message
#136032
Posté le 14/06/07 à 07:19
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.


Betov.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Fantomatax
Nouveau membre
Inscrit : 12/06/2007
Messages : 9
Message
#136038
Posté le 14/06/07 à 08:26
Ok, je vais tenté comme ca...

Juste une derniere question :
Y a t'il une limite dans la taille d'une liste ?

Merci

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Betov
Membre régulier
Inscrit : 30/03/2005
Messages : 86
Message
#136039
Posté le 14/06/07 à 08:39
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".


Betov.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

bug3000
Nouveau membre
Inscrit : 24/02/2007
Messages : 10
Message
#143340
Posté le 27/09/07 à 23:48
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é)

Bug3000

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 
POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

PREMIERE PAGE

PAGE PRECEDENTE Page précédente

Page suivante

PAGE SUIVANTE DERNIERE PAGE

FORUM ASSEMBLEUR



    PAGE : [1]



.: Site Web développé par Julien Pichot et l'équipe MPWG avec www.evolvia-web.com :.