Occupation en memoire d une variable ?

Résolu
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 - 23 sept. 2005 à 22:56
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 - 24 sept. 2005 à 12:51
Slu



comment peut on connaitre, dans vb6, la taille d une variable en memoire ?



thx @+

Herve

21 réponses

cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
23 sept. 2005 à 23:14
Boolean,
System.Boolean,
2 octets,
True ou False.,
----

Byte,
System.Byte,
1 octet,
0 à 255 (non signés).,
----

Char,
System.Char,
2 octets,
0 à 65 535 (non signés).,
----

Date,
System.DateTime,
8 octets,
0:00:00 le 1er janvier 0001 à 23:59:59 le 31 décembre 9999.,
----

Decimal,
System.Decimal,
16 octets,
0 à +/-79 228 162 514 264 337 593 543 950 335 sans décimale ; 0 à +/-7,9228162514264337593543950335 avec 28 décimales ; le plus petit nombre différent de zéro étant +/-0,0000000000000000000000000001 (+/-1E-28).,
----

Double
(virgule flottante à double précision),
System.Double,
8 octets,
-1,79769313486231E+308 à
-4,94065645841247E-324 pour les valeurs négatives ; 4,94065645841247E-324 à 1,79769313486231E+308 pour les valeurs positives.,
----

Integer,
System.Int32,
4 octets,
-2 147 483 648 à 2 147 483 647.,
----

Long
(entier de type Long),
System.Int64,
8 octets,
-9 223 372 036 854 775 808 à 9 223 372 036 854 775 807.,
----

Object,
System.Object (classe),
4 octets,
N'importe quel type peut être stocké dans une variable de type Object.,
----

Short,
System.Int16,
2 octets,
-32 768 à 32 767.,
----

Single
(virgule flottante en simple précision),
System.Single,
4 octets,
-3,402823E+38 à -1,401298E-45 pour les valeurs négatives ; 1,401298E-45 à 3,402823E+38 pour les valeurs positives.,
----

String
(longueur variable),
System.String (classe),
Dépend de la plate-forme d'implémentation,
0 à environ 2 milliards de caractères Unicode.,
----

User-Defined Type
(structure),
(hérite de System.ValueType),
Dépend de la plate-forme d'implémentation,
Chaque membre de la structure présente une plage déterminée par son type de données et qui est indépendante des plages des autres membres.

Ce tableau viens du .Net mais normalement les tailles sont les mêmes en VB6

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]&
3
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
23 sept. 2005 à 23:12
Salut, les taille de variables sont fixée en fonction de leur type, ainsi le type Byte est le plus petit


Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]&
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
23 sept. 2005 à 23:20
Merci de comble mon petit trou de memoire !



mais il n y a pas une fonction permettant de le recuperer ?

par exemple pour un string ou pour un tableau de structure ....


Herve
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
23 sept. 2005 à 23:23
Je ne pense pas que cela soit possible en VB6, sauf peut-être en utilisant un API.
je crois qu'en regardant dans le gestionnaire de tâche tu peux avoir la qté ram used


Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]&
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
23 sept. 2005 à 23:24
merci ...

une derniere question ... est ce que l on peut limiter un string en longueur lors de la declaration .?

Herve
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
23 sept. 2005 à 23:37
non malheureusement les tailles indiqué sont les tailles minimum, exemple : Dim toto as Byte occupe 1octet
mais : dim Toto(9) as byte occupe 10 octets.


Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]&
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
23 sept. 2005 à 23:52
ok merci .

Herve
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
24 sept. 2005 à 09:18
Salut,

A la question : "est ce que l on peut limiter un string en longueur lors de la declaration ?"

Oui ! par exemple :

=

Dim mystring As String * 3
mystring = "Us est le meilleur ! Merci les fleurs..."
MsgBox mystring 'renvoi "Us "

=

Amicalement,
Us.
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
24 sept. 2005 à 11:08
Ahhh merci ..... j avais essaye

Dim mystring[3] As String
et

Dim mystring(3) As String



thx @+


Herve
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
24 sept. 2005 à 11:10
Une quetion me viens donc à l'esprit : Est-ce que "Dim mystring As String * 3" réduit la qté mémoire utiliser ou utilise t'il autant de mémoire que d'habitude ?


Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]&
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
24 sept. 2005 à 11:13
l occupation en memoire d un string depend de la longueur du string ...
donc si on limite la longueur cela limite l occupation en memoire

Herve
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
24 sept. 2005 à 11:16
Terrible !!
Mais lorsque l'on fait un simple 'Dim toto as string' quelle est sa qté mem used ? car d'après mon tableau MSDN note 'selon la plateforme' c'est bien gentil de MSSoft mais il pourrait au moins fournir les infos complète.


Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]&
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
24 sept. 2005 à 11:18
oui c vrai ... d ailleur j arrive jamais a retrouve le tableau (que tu as mis) dans MSDN !

a mon avais il ne vaut pas grand chose ... vu que la chaine est vide au moment de la declaration.

Herve
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
24 sept. 2005 à 11:23
Salut,

D'après mes souvenirs 'Dim toto as string' configure toto à environ 32700 octects, d'entré de jeu... Sinon après, si toto contient plus, allocation se fait dynamiquement... à confirmer. Enfin, une string de 32Ko, on commence déjà à écrire beaucoup, et pour toto se rappeler tout ça, c'est pas gagné... :-);

Amicalement,
Us.
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
24 sept. 2005 à 11:33
Je vient de tester un truc ...

la fonction Len permet de voire l occupation en memoire d une variable ...



Avec un integer -> 2 octets

Long -> 4 octects



pas vraiment ce que le tableau dit !

Herve
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
24 sept. 2005 à 11:48
J'ai essayé la même fonction sous les différente version de VB.

dim toto as integer

sous VB6 : 2o
sous VB2003 : 4o
sous VB2005 : 4o

Mais sous VB2003 on peux revenir à un 2o en utilisant ceci :
Dim toto as int16 '2 octets
Dim toto as int32 '4 octets
Dim toto as int64 '8 octets

Je n'ai pas trouver la même chose sous VB2005, il n'y a que integer donc un 4octets d'office !

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]&
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
24 sept. 2005 à 11:51
Correction les int16,32 et 64 sont également dispo sous 2005 j'avais pas regarder dans les procédure 'All' et non 'Common'


Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]&
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
24 sept. 2005 à 11:55
Len ! non LenB !

Amicalement,
Us.
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
24 sept. 2005 à 12:02
Autant pour moi, mais j'ai fait les test et les résultats sont les mêmes ;)


Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]&
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
24 sept. 2005 à 12:38
Dim s As String occupe juste les 4 octets du pointeur BSTR*, il vaut 0 à sa déclaration donc n'occupe que ses 4 octets.
Ensuite quand vous insérez des caractères dedans, alloc d''une struct BSTR (8 octets) + les données à l'offset [BSTR* + 4].
Simple, non ?

ciao...
BruNews, MVP VC++
0
Rejoignez-nous