cs_zedude33
Messages postés38Date d'inscriptionmardi 1 août 2006StatutMembreDernière intervention 9 juillet 2013
-
19 août 2006 à 16:43
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 2014
-
19 août 2006 à 23:03
Bonjour,
Je voulais savoir s'il est possible (et si oui comment) d'ajouter des variables dans l'instruction Open. Je m'explique :
Admettons :
Open "c:/nini.txt" For Output Shared As #1
Je voudrais remplacer nini par une variableNmeFile et .txt par une variableNmeExt.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 19 août 2006 à 17:54
Salut Thierry,
Bah en fait je ne sais pas comment tu as déclaré ta variable NmeExt, donc si tu as fait Dim NmeExt As String, il n'y en a pas besoin.
Si tu ne l'a pas déclaré, c'est nécessaire.
CStr est une fonction, pour convertir ta variable en String (si elle est d'un type différent).
Tu peux faire la même chose avec les autres types :
MaVal = CLng(TextBox1.Text) + 10
MsgBox MaNewVal
(j'économise une variable)
Mais tu verras par toi même, qu'il y a mille et une raison de transformer des variables.
Sache que certaine fonction, style Mid, Len, Val, etc... n'accèptent qu'un type bien précis.
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 19 août 2006 à 19:03
Ouhhh làlàlàlà. STOP.
Non tu ne convertie pas ta variable. Si ta variable est un numérique, elle reste un numérique
Dans le cas de ton exemple, admettons que NmeFile est un numérique (ce qui est absurde ici, j'en conviens).
L'instruction Open attend une chaine de caractère, pas un numérique, donc Open NmeFile ne doit pas marcher théoriquement.
Il faut donc faire Open Cstr(NmeFile), ça s'appele un cast (très utilisé en C) ou conversion explicite. Dans ce cas NmeFile est un numérique et reste un numérique. Cstr renvoi une variable (généré automatiquement en mémoire) de type string qui contient la représentation sous forme texte de ta variable numérique. C'est ce texte qui est transmis à la fonction Open.
Subtilité de VB6, si tu ne fais pas la conversion, VB6 sait faire certaines conversions de lui même. On appelle cela convertion implicite. Dans le cas présent, Open NmeFile qui ne devrait pas marcher, marchera car vb6 sait automatiquement la conversion en string.
Mais comme il n'est pas parfait, je te recommende de faire des convertions explicites, ça limite les bugs, et le code est plus clair lorsque tu dois le reprendre plusieurs mois voire plusieurs années après.
Sevyc64 (alias Casy)
<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
cs_zedude33
Messages postés38Date d'inscriptionmardi 1 août 2006StatutMembreDernière intervention 9 juillet 2013 19 août 2006 à 18:49
Hello,
Ok, j'ai saisi.
Je déclare toujours mes variables comme ça (depuis pas longtems puisque ça fait quelques semaines que je bricolle):
Dim MaVariable (Quand je ne sais pas)
ou
Dim MaVariable As String (Quand je veux du Texte)
ou
Dim MaVariable As Long (ou As Integer) (Quand je veux du numérique)
ou
Dim MaVariable As Boolean (Quand je veux du deux états)
Je ne sais pas si c'est top mais ça fonctionne pour l'instant.
Je ne savais pas non plus que l'on pouvais transformer une variable par une simple fonction au beau milieu d'un programme. Le Basic semble très puissant et souple comparé au ASM (utilisé pour la programmation des microcontrôleurs PIC). Remarque tout est relatif.... Je suppose qu'il y a plus puissant.
Mais alors encore une question :
Quel est l'ineret de convertir les variables en plein milieu d'un programme ? A quoi cela peut-il bien servir. D'autant plus que la limite du nombre de variable semble de taille, non? Bizarre...
cs_zedude33
Messages postés38Date d'inscriptionmardi 1 août 2006StatutMembreDernière intervention 9 juillet 2013 19 août 2006 à 19:22
Donc grosso-modo, si j'ai bien compris, la convertion sert à l'interprétation de VB6:
1234 Integer sera interprété numérique
alors que
1234 String sera interprété comme une simple chaine de caractères.
D'où l'intéret defaire les convertions dans certains cas de figure.