Déclaration de variable

Résolu
agauthiers Messages postés 33 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 15 février 2005 - 16 janv. 2005 à 10:31
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 - 22 janv. 2005 à 11:13
Bonjour,

Débutant en VB6.0, je recherche la signification de : " * 1" dans l'expression suivante :
Dim buffer As String * 1

Merci pour vos réponses

5 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
16 janv. 2005 à 10:39
Buffer est une chaine de caractères (string ) de longueur 1 caractère ( * 1)



voila
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
16 janv. 2005 à 10:46
il s'agit de la déclaration d'une chaîne de longueur fixe.
cette longeur est fixée au départ et ne peut plus être modifiée par la suite.
donc Buffer est ici une chaîne de 1 caractère.
si on lui affecte une valeur plus petite, elle sera complétée par des espaces:Buffer "" revient au même que Buffer " ".
si on lui affecte une valeur plus grande cette valeur sera tronquée:
Buffer = "ABCD" va affecter seulement la valeur "A"

Daniel
3
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
16 janv. 2005 à 12:21
Je rajouterai : à manier avec précaution. il vaut mieux que tu sois sur que tu rangeras dans ta variable string de longueur fixe qu'une chaine de la même longueur.
Sinon, possibilité de BufferOverFlow pouvant occasionner des dysfonctionnements de ton prog.

Un BufferOverFlow, c'est simple, je t'expliques schématiquement :

en faisant dim var1 as string * 1, tu réserves une partie de la mémoire (2 octets en comptant le caractère de fin de chaine). Imagines que, juste à côté de cette partie de mémoire il y ait un emplacement réservé par une autre variable. Si tu copies une chaine plus longue que 1 caractère, tu risques d'écraser la 2ème variable.

En VB6, je ne sais pas si c'est possible, je n'ai pas encore testé mais il y a de grandes chances que ce soit comme dans d'autres langages.

En tous cas, dans le doute, vérifies toujours que ce que tu copies dans une variable correspond bien à ce qu'elle attend.

Cordialement, CanisLupus
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
22 janv. 2005 à 11:13
les chaînes en VB sont en Unicode et occupent 2 octets par caractères.
on utilise surtout les chaînes de longueur fixe dans les types utilisateurs conjointement avec les fichiers en accès Random.

Daniel
3

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

Posez votre question
agauthiers Messages postés 33 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 15 février 2005
16 janv. 2005 à 20:37
Merci beaucoup pour vos réponses claires et précises.
0