Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comparer des valeurs qui vont au-delà du type Double

3 réponses
Avatar
Christian Hubert-Hugoud / weabow - Xtrem7 - Groobax
Bonjour à tous,

J'ai un freeware qui copie des fichiers de grandes tailles.

Il fonctionne bien pour des fichiers inférieurs à 4 Go, mais au-delà, il ne
fonctionne pas car je compare des valeurs qui vont au-delà des capacité
Double ou Currency :

While Offset + LGBUFFER < Size

En fait Offset et Size doivent pouvoir "mesurer" plus de 4 Go.

Une idée ?

Christian

3 réponses

Avatar
Christian Hubert-Hugoud / weabow - Xtrem7 - Groobax
Merci.

Curieusement, j'ai fait des tests en ce sens et ils ne donnent pas les
résultats. Je vais essayer à nouveau.

Dans la doc, le Double et le Currency sont codés sur 8 octets tous les 2.

Christian

"Jacques93" a écrit dans le message de
news:
Bonjour Christian Hubert-Hugoud,
Christian Hubert-Hugoud / weabow - Xtrem7 - Groobax a écrit :
Bonjour à tous,

J'ai un freeware qui copie des fichiers de grandes tailles.

Il fonctionne bien pour des fichiers inférieurs à 4 Go, mais au-delà, il
ne fonctionne pas car je compare des valeurs qui vont au-delà des
capacité Double ou Currency :

While Offset + LGBUFFER < Size

En fait Offset et Size doivent pouvoir "mesurer" plus de 4 Go.

Une idée ?

Christian




Bien qu'il n'aient pas été conçus dans ce but (à l'époque les disques et
4 Go étaient plutôt rares) , il y a Currency, ou Decimal
Currency
(entier à décalage) 8 octets -922 337 203 685 477,5808 à 922 337 203 685
477,5807

Decimal 14 octets +/-79 228 162 514 264 337 593 543 950 335 sans
séparateur décimal ;
+/-7,9228162514264337593543950335 avec 28 chiffres à droite du séparateur
décimal ; le plus petit nombre différent de zéro est
+/-0.0000000000000000000000000001.


--

Cordialement,

Jacques.


Avatar
Christian Hubert-Hugoud / weabow - Xtrem7 - Groobax
Merci pour cette précision essentielle.

"Jean-marc" a écrit dans le message de
news:4b0d8544$0$2863$
Christian Hubert-Hugoud / weabow - Xtrem7 - Groobax wrote:
Bonjour à tous,

J'ai un freeware qui copie des fichiers de grandes tailles.

Il fonctionne bien pour des fichiers inférieurs à 4 Go, mais au-delà,
il ne fonctionne pas car je compare des valeurs qui vont au-delà des
capacité Double ou Currency :

While Offset + LGBUFFER < Size

En fait Offset et Size doivent pouvoir "mesurer" plus de 4 Go.



Le type currency est parfaitement adapté.

Dim c As Currency

' byte * kilo * mega * giga * tera
c = CCur(1) * CCur(1024) * CCur(1024) * CCur(1024) * CCur(1024)
Debug.Print c

Voila dans c la valeur pour 1 TERA (1000 GIGA) :

1099511627776

Note: Les appels à CCur() dont obligatoires, sinon : overflow

Cf: http://faq.vb.free.fr/index.php?question5

Cordialement,

--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;






Avatar
Christian Hubert-Hugoud / weabow - Xtrem7 - Groobax
Merci encore : cela fonctionne très bien.

"Jacques93" a écrit dans le message de
news:%
Christian Hubert-Hugoud / weabow - Xtrem7 - Groobax a écrit :
Merci.

Curieusement, j'ai fait des tests en ce sens et ils ne donnent pas les
résultats. Je vais essayer à nouveau.

Dans la doc, le Double et le Currency sont codés sur 8 octets tous les 2.




Oui, par contre le type 'Decimal' sur 14 octets que j'indique, et que je
n'ai pas inventé :

<http://cjoint.com/?lzwwRKF5Yq>

n'est utilisable ni sous VB, ni sous VBA. Je ne sais pas ou j'ai loupé une
marche !

--

Cordialement,

Jacques.