Défi : faire le code le plus rapide pour remplir une combo
Publié : mar. 07/févr./2006 14:01
Voilà j'ai besoins d'accélérer le remplissage d'une comboGadget à partir d'un fichier txt regroupant une liste de ville.
Ce code crée un fichier test.txt avec le nom des villes. Puis suivant les diffférent cas traite le problème.
Le cas 1 est le cas basique.
Le cas 2 est le meilleur que j'ai réussi à obtenir.
J'attends vos idée pour un troisième code plus rapide....
Merci d'avance
Ce code crée un fichier test.txt avec le nom des villes. Puis suivant les diffférent cas traite le problème.
Le cas 1 est le cas basique.
Le cas 2 est le meilleur que j'ai réussi à obtenir.
J'attends vos idée pour un troisième code plus rapide....
Merci d'avance
Code : Tout sélectionner
Procedure ess1()
SetGadgetText(52,"en cours")
ClearGadgetItemList(50)
temps=GetTickCount_()
ReadFile(0,"test.txt")
fin=Lof()
Repeat
AddGadgetItem(50,-1,Trim(Left(ReadString(),50)))
Until Loc() =fin
CloseFile(0)
SetGadgetText(52,Str(GetTickCount_()-temps ))
SetGadgetState(50,0)
EndProcedure
Procedure ess2()
SetGadgetText(52,"en cours")
ClearGadgetItemList(50)
temps=GetTickCount_()
ReadFile(0,"test.txt")
*Tampon=AllocateMemory(Lof())
ReadData(*Tampon,Lof())
fin=Lof()/72
CloseFile(0)
id_gadget=GadgetID(50)
For i=0 To fin
SendMessage_(id_gadget , #CB_ADDSTRING, 0, Trim(PeekS( *Tampon+i*72,50)))
;AddGadgetItem(50,-1,Trim(PeekS( *Tampon+i*72,50)))
Next
SetGadgetText(52,Str(GetTickCount_()-temps ))
SetGadgetState(50,0)
EndProcedure
Procedure ess3()
SetGadgetText(52,"en cours")
ClearGadgetItemList(50)
temps=GetTickCount_()
;-----------votre code--------------
;-----------fin de votre code--------
SetGadgetText(52,Str(GetTickCount_()-temps ))
SetGadgetState(50,0)
EndProcedure
;{-creation de la fenetre
hwindow=OpenWindow(0,10,10,200,200,#PB_Window_SystemMenu,"ess")
CreateGadgetList(WindowID(0))
ComboBoxGadget(50, 0,0, 200, 200)
TextGadget(52,0,50,200,20,"temps")
ButtonGadget(1,10,100,20,20,"1")
ButtonGadget(2,30,100,20,20,"2")
ButtonGadget(3,50,100,20,20,"3")
;}
;{- creation du fichier test : nom de ville sur 50 caractere + coordonnee sur 22
CreateFile(0,"test.txt")
For i=1 To 35000
nom_ville$=LSet("Nom de la ville numérotée : "+Str(i),50)
WriteStringN(nom_ville$+"12345678901234567890")
Next
CloseFile(0)
;}
Repeat
event=WaitWindowEvent()
Select event
Case #PB_Event_Gadget; *****************Choix d'un bouton
Select EventGadgetID()
Case 1
ess1()
Case 2
ess2()
Case 3
ess3()
EndSelect
EndSelect
Until event=#WM_CLOSE