Fichiers = OpenFileRequester(...
en v.o on a
File$ = OpenFileRequester(
(sans doute 's' à la place de '$')

Donc les exemples ne fonctionnent pas car 'OpenFileRequester' doit normalement retourner une chaine.

Les tests que j'ai fait sont conformes à la doc."Plus il y a de slots en interne, plus l'accès à un élément sera rapide, [...]"
Pour l'instant, c'est l'inverse qui se produit...
Code : Tout sélectionner
n=1
slot=n*512
Global t.L, TimeDebut.q, TimeFin.q
Structure Employe
Prenom.s
Nom.s
Age.L
EndStructure
Structure Service
Map Employe.Employe()
EndStructure
Structure Societe
Map Service.Service()
EndStructure
Repeat
Global NewMap Societe.Societe(slot)
TimeDebut = ElapsedMilliseconds()
For t=1 To 200000
Define *a.Employe = AddMapElement(Societe("PureBasic"+Str(t))\Service("Commercial"+Str(t))\Employe(), "Reference"+Str(t))
With *a
\Prenom = "Pierre "+Str(t)
\Nom = "Dupond"
\Age = 28
EndWith
Next
Global Controle.s = "Prénom du commercial Reference9999 : "+Societe("PureBasic9999")\Service("Commercial9999")\Employe("Reference9999")\Prenom + Chr(10)
TimeFin = ElapsedMilliseconds()
MessageRequester("Nombre de SLOT= "+ Str(slot), Controle + Str( TimeFin - TimeDebut ) + " ms", #MB_OK)
n=n*10
slot=n*512
FreeMap(Societe())
Until n > 100000
Code : Tout sélectionner
#AuPif = #PB_Any
Macro Qt:"
EndMacro
Macro _(Method, Arg = )
I(Qt#Method(Arg#)Qt) = Method(Arg)
EndMacro
Macro _2(Method, Arg1, Arg2)
I(Qt#Method(Arg1#)Qt) = Method(Arg1, Arg2)
EndMacro
Macro _3(Method, Arg1, Arg2, Arg3)
I(Qt#Method(Arg1#)Qt) = Method(Arg1, Arg2, Arg3)
EndMacro
Macro _4(Method, Arg1, Arg2, Arg3, Arg4)
I(Qt#Method(Arg1#)Qt) = Method(Arg1, Arg2, Arg3, Arg4)
EndMacro
Macro _5(Method, Arg1, Arg2, Arg3, Arg4, Arg5)
I(Qt#Method(Arg1#)Qt) = Method(Arg1, Arg2, Arg3, Arg4, Arg5)
EndMacro
Macro _6(Method, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)
I(Qt#Method(Arg1#)Qt) = Method(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)
EndMacro
Macro _7(Method, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7)
I(Qt#Method(Arg1#)Qt) = Method(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7)
EndMacro
Macro _8(Method, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8)
I(Qt#Method(Arg1#)Qt) = Method(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8)
EndMacro
Macro Alloue:Allocate
EndMacro
Macro Memoire:Memory
EndMacro
Macro Initialise:Init
EndMacro
Macro Lutin:Sprite
EndMacro
Macro Clavier:Keyboard
EndMacro
Macro Souris:Mouse
EndMacro
Macro Bureau:Desktop
EndMacro
Macro Largeur:Width
EndMacro
Macro Hauteur:Height
EndMacro
Macro Profondeur:Depth
EndMacro
Macro Ouvre:Open
EndMacro
Macro Fenetre:Window
EndMacro
Macro Fenetree:Windowed
EndMacro
Macro Ecran:Screen
EndMacro
Macro Efface:Clear
EndMacro
Macro Charge:Load
EndMacro
Macro Police:Font
EndMacro
Macro Echange:Flip
EndMacro
Macro Tampon:Buffer
EndMacro
Global.I NewMap I()
Global.S NewMap S()
Global.I NewMap I2($1000000)
Global.S NewMap S2($1000000)
_(Alloue#Memoire, 32768)
_(Initialise#Lutin)
_(Initialise#Clavier)
_(Initialise#Souris)
_(Examine#Bureau#s)
_(Bureau#Largeur, 0)
_(Bureau#Hauteur, 0)
_(Bureau#Profondeur, 0)
_7(Ouvre#Fenetre, #AuPif, 0, 0, I("DesktopWidth(0)"), I("DesktopHeight(0)"), "", #PB_Window_BorderLess)
FenetreID = WindowID(I("OpenWindow(#AuPif)") )
_8(Ouvre#Fenetree#Ecran, FenetreID, 0, 0, 320, 240, 1, 0, 0)
_3(Charge#Police, #AuPif, "FixedSys", 15)
For A = 1 To 255
CreateImage(A, 16, 16, 32)
s = 16
CreateSprite(A, s, s, #PB_Sprite_AlphaBlending)
StartDrawing(ImageOutput(A) )
DrawingFont(FontID(I("LoadFont(#AuPif)") ) )
DrawText(0, 0, Chr(A), RGBA(255, 255, 255, 255), RGBA(0, 0, 0, 0) )
StopDrawing()
ResizeImage(A, s, s, #PB_Image_Raw)
StartDrawing(SpriteOutput(A) )
DrawImage(ImageID(A), 0, 0)
StopDrawing()
Next
CopyMap(I(), I2() )
Repeat
Delay(16)
ExamineKeyboard()
ExamineMouse()
Efface#Ecran(0)
StartDrawing(ScreenOutput() )
DrawingFont(FontID(I("LoadFont(#AuPif)") ) )
Y = 0
Lap0 = ElapsedMilliseconds()
ForEach I()
DrawText(0, 16 * Y, MapKey(I() ) + " -> " + I(), $FFFFFF, $0)
Y + 1
Next
Lap1 = ElapsedMilliseconds()
ForEach I2()
DrawText(0, 16 * Y, MapKey(I2() ) + " -> " + I2(), $FFFFFF, $0)
Y + 1
Next
Lap2 = ElapsedMilliseconds()
DrawText(0, 0, Str(Lap1 - Lap0) + "ms ")
DrawText(0, 16, Str(Lap2 - Lap1) + "ms ")
StopDrawing()
;DisplaySprite(65, 0, 0)
Echange#Tampon#s()
Until KeyboardPushed(#PB_Key_Escape)
Comtois a précisé :
attention au type des variables utilisées pour contenir la couleur (les nombres sont signés). Utiliser un quad pour être compatible en x86 et x64 (ou un integer si on compile en x64)
Il faut un masque sinon les comparaisons seront faussées :
a.q = RGBA(255,255,255,255) & $FFFFFFFF
Debug a
b.q = RGBA(255,255,255,255)
Debug b
D'après la doc, de toutes façon, toutes les variables PB de 32 bits et plus sont signées.(les nombres sont signés)