Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 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"
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 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.
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 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
Vous n’avez pas trouvé la réponse que vous recherchez ?