cs_Chatbour
Messages postés764Date d'inscriptionjeudi 27 juillet 2006StatutMembreDernière intervention 6 septembre 2010
-
15 août 2007 à 19:50
Kristof_Koder
Messages postés918Date d'inscriptionvendredi 3 août 2007StatutMembreDernière intervention27 octobre 2008
-
16 août 2007 à 08:54
Salut à tous,
Dans beaucoup de codes, je vois le caractère $ attaché à des fonctions qui surtout manipulent les chaines de caractères (ex: trim&(maChaine)).. à quoi sert-il ?
Et pourquoi le code marche encore quand je le supprime (bon, dans ce que j'ai essayé) ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 15 août 2007 à 20:41
Comme le dit Mortalino, c'est un problème de type de variable.
Prennons la fonction Left (pour l'exemple), celle-ci traite des variants représentant des chaines de caractères.
Donc quand tu lui passe une chaine, celle ci est tout d'abords convertie en variant puis passée à la fonction. La fonction fait son traitement (après avoir convertie en string, peut-etre je sais pas comme ça marche en interne) puis renvoie le résultat sous forme de variant (avec donc peut-etre éventuellement une convertion préalable). Ce résultat est converti en string pour etre stocké dans ta variable.
La fonction Left$ fait la même chose mais en traitant directement des chaines, donc pas de convertion au assage du paramètre ni au retour du résultat. Tu gagne déjà ces 2 étapes (après ce qui est fait en interne, idem, je ne sais pas, mais si le traitement est en string tu gagne aussi les 2 conversions internes).
Il faut garder à l'esprit que les traitement des types variants sont toujours plus en VB6, hors le variant est le type par défaut lorsque la variable n'est pas déclaré ou que le type n'est pas spécifé à la déclaration.
C'est pour cela qu'il toujours très important de correctement déclarer les variables.
Kristof_Koder
Messages postés918Date d'inscriptionvendredi 3 août 2007StatutMembreDernière intervention27 octobre 200810 16 août 2007 à 08:54
Ceci est donc valable pour toutes les fonctions qui peuvent retourner une string : mid, left,right, command, dir, etc ....
Seule la fonction CStr() n'est pas concernée ! Elle converti en chaine, donc forcément, elle retourne une chaine, pas besoin de $ pour elle !
Par expérience personnelle, après des tests fait sur la fonction left dans une boucle de 10 000 tours, le résultat est franchement impressionnant ! Outre le fait que les conversions string>variant>string prennent du temps, le traitement par VB6 d'une valeur de type variant est bcp plus long qu'une valeur typée !
Vous n’avez pas trouvé la réponse que vous recherchez ?