Déclaration de variable

Résolu
Signaler
Messages postés
33
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
15 février 2005
-
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
-
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

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Buffer est une chaine de caractères (string ) de longueur 1 caractère ( * 1)



voila
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
18
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
33
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
15 février 2005

Merci beaucoup pour vos réponses claires et précises.