voila le probleme.
j'ai a stocker un grand nombre de booleen (128) pour un objet.
je pourrais, bien sûr, utiliser un tableau array[1..128] of boolean, mais voila, ca coute cher en memoire (128 octets). Sachant que mon objet sera multiplié en tres grand nombre (+ de 20000) je prefere jouer la carte de l'optimisation (et puis c'est ca qui est passionant, aussi).
La methode que j'ai déjà utilisé pour stocker, cette fois ci, 32 booleens était tout d'utiliser tout simplement un cardinal. (4 octet au lieu de 32)
je lisais les valeurs comme ceci:
id etant l'indice de mon boolean dans mon tableau "virtuel".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 function return_boolid_value(value:cardinal;id:byte):boolean; begin result := value shr id and 1 = 1; end;
mais voila, comment faire pour 128 bit?
mon premiere idée est d'utiliser un array[1..4] of cardinal qui stockerait successivement les valeurs booleennes 1..32 puis 33.. 64 etc... et serait ensuite lu par une routine spécifique.
mais je me demandais s'il n'y avais pas un moyen de creer, plus simplement un block de 128 bits (16 octets) et de lire les valeur binaires dedans (indicés de 1 à 128)... et si oui comment faire?
Partager