cs_DoudouBidou
Messages postés102Date d'inscriptionjeudi 29 mai 2003StatutMembreDernière intervention23 juin 2008
-
4 mars 2005 à 13:29
les french texans
Messages postés21Date d'inscriptionmardi 14 juin 2005StatutMembreDernière intervention23 octobre 2006
-
14 juil. 2005 à 23:08
Bonjour,
je voudrais savoir comment on crée et on utilise une variable dynamique sous Visual Basic
je voudrais faire qqc comme ça :
exemple :
a = "toto"
p = pointeur_vers(a)
p = "tata"
et donc a = "tata"
ça doit bien être possible, si qqn peut m'aider c'est un peu urgent...
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 4 mars 2005 à 14:16
en Vb il n'y a pas de pointeur.
tu peux avoir l'adresse d'une variable avec VarPtr() puis lire ou modifier la variable en utilisant RtlMoveMemory mais c'est pas très pratique et ça n'apporte rien de plus que d'utiliser la variable directement.
pour une chaîne c'est pire encore, l'adresse de la variable peut varier en cours du temps.
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 6 mars 2005 à 01:54
si tu veux voir comment on utilise les pointeurs en VB, c'est pas évident.
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Dim x As Long
Dim v As Long
Dim px As Long
Dim s As String
Dim c As String
Dim ps As Long
' une variable numérique
x = 0
' un pointeur pour la variable numérique
px = VarPtr(x)
v = 123
' on modifie la variable x avec le pointeur
CopyMemory ByVal px, v, 4
MsgBox x
' une variable chaîne
s = "abcd"
' un pointeur pour la variable chaîne
ps = StrPtr(s)
' attention les chaînes VB sont en unicode
c = StrConv("efgh", vbUnicode)
' on modifie la chaîne avec le pointeur
CopyMemory ByVal ps, ByVal c, 8
MsgBox s
jpleroisse
Messages postés1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 mars 200627 4 mars 2005 à 21:44
Private Sub Command1_Click()
Dim a, p, St1 As String, St2 As String, St3 As String
a = "Toto"
p = "a"
St1 = Left(a, 1)
St2 = St1 + p
St3 = St2 + St2
Text1 = St3
End Sub
jpleroisse
Vous n’avez pas trouvé la réponse que vous recherchez ?
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 6 mars 2005 à 01:31
Alors elle devrait quitter le VB pour faire du C, car des pointeur en VB, c'est pas simple (voir msg de Gobillot), mais en meme temps, cela me parait presque inutile !!!
Pourquoi les pointeurs existe-t-il en C ? Parce que le C ne sait passer ces arguments que apr valeur et que c'était bien pratique de pouvoir modifier la valeur d'un paramètre transmis depuis une fonction. C'est pour cela que Kernigham et Ritchie on inventé les pointeurs en C ! Pour rien d'autre ! Et en VB, on peut faire du transfert de paramètres à une sub/function par valeur ou par référence : dans ce dernier cas, VB passe en fait un pointeur hein !!! Tu te retrouve alors en clone de M Jourdain !!
les french texans
Messages postés21Date d'inscriptionmardi 14 juin 2005StatutMembreDernière intervention23 octobre 2006 14 juil. 2005 à 23:08
Bonjour,
Quitte a parraitre idiot, (je le fait paraitre sur ce forum) mais, j'arrive pas a utiliser : RtlMoveMemory .... la machine me dit toujours : Sub or Function not defined .....