Page 1 sur 1
nombres 64 bits
Publié : mar. 03/août/2004 23:59
par hardy
Problème : la fonction API opentrace renvoit un INT64 (pas son adresse). Mais PB ne supporte pas les "doubles".
Qui sait comment faire?
Publié : mer. 04/août/2004 0:16
par Oliv
va sur pureaera il y a une lib pour ça, il y a aussi un code de cédéravic sur le musée ou ici je crois
Publié : mer. 04/août/2004 0:22
par hardy
La lib permet de manipuler des nombres 64 bits déclarés comme structure :
structure double
low.l
high.l
endstructure
Mais PB considère ça comme une structure, et n'accepte pas un truc du genre a.double=callfunction(...)
Publié : mer. 04/août/2004 0:24
par Oliv
ah, ça je ne savais pas, je savais juste que ça existait
Publié : mer. 04/août/2004 7:21
par Anonyme2
hardy a écrit :La lib permet de manipuler des nombres 64 bits déclarés comme structure :
structure double
low.l
high.l
endstructure
Mais PB considère ça comme une structure, et n'accepte pas un truc du genre a.double=callfunction(...)
Essaye ceci (on accède à la variable avec son 1er élément)
Si la dll renvoie une adresse, utilise ceci
Code : Tout sélectionner
*MemoryID = AllocateMemory(8) ; tu réserve 8 octets en mémoire soit 64 bits
Tu récupère la valeur avec CopyMemory()
En espérant qu'une des solutions fonctionne.
Publié : mer. 04/août/2004 9:52
par hardy
Non, elle ne renvoie pas d'adresse, sinon je n'aurait pas de problème.
Vais essayer a\low.
Sinon, Fred est dans le coin?
Faudrait savoir comment le callfunction marche.
Peut-être que l'on peut récupérer la valeur dans le registre (?)
Publié : mer. 04/août/2004 10:03
par hardy
Oui, a\lowpart=... marche. Le prog doit donner l'adresse de la variable où mettre le résultat, et la dll copier ce qu'il faut à partir de là. D'où ... pas de problème
Merci bien.