Page 1 sur 1

[résolu] #PB_Quad = 4

Publié : ven. 01/janv./2010 5:03
par ker2x
D'apres la doc un quad est sur 4 bytes sur x64.

J'ai PureBasic 4.40 (x64)
Avec le code suivant :

Code : Tout sélectionner

*MExposure = AllocateMemory(#screenSize2 * #PB_Quad)
Le debuger m'indique que #PB_Quad = 4
Un bug ou j'ai rien compris ?

Re: #PB_Quad = 4

Publié : ven. 01/janv./2010 8:55
par Backup
et en utilisant des variables a la place de constante ?

Code : Tout sélectionner

screenSize2.q=1024*768 ; declaration en quad (.q)


*MExposure = AllocateMemory(screenSize2 * #PB_Quad)

Re: #PB_Quad = 4

Publié : ven. 01/janv./2010 10:36
par Anonyme2
Il ne faut pas confondre une constante comme #PB_Quad qui est utilisée par PB dans des fonctions et la taille des données (word, long, quad etc)

Pour trouver la taille d'un quad, il faut utiliser la fonction PB SizeOf() et pour le quad, le paramètre est Quad qui est une structure prédéfinie par PB. Idem pour les autres types, SizeOf(byte), SizeOf(word), SizeOf(long) etc.

utilise le code suivant pour afficher la taille ocupée par la variable de type quad.
debug SizeOf(Quad)

De même on peut mettre en paramètre une variable déclarée

global As.q
Debug SizeOf(As)



Voila ce que dit la doc sur sizeof()
Syntax
SizeOf(Type)

Description

La commande SizeOf permet de renvoyer la taille en octets que prendra une structure complexe (ne fonctionne pas avec les types de base tels que les 'long', les 'word' etc.), une interface ou même une variable. C'est très utile dans de nombreux cas, notamment lors de l'utilisation des commandes API.

Re: #PB_Quad = 4

Publié : ven. 01/janv./2010 16:53
par ker2x
Merci pour les infos.
Je ne trouvai pas les infos dans la doc.

Re: [résolu] #PB_Quad = 4

Publié : ven. 01/janv./2010 20:03
par Anonyme2
Je pense que la doc est légèrement fausse car ça marche avec les type simple comme word, long.