Variable dynamique / Pointeur ??? A l'aide !!!!

Résolu
cs_DoudouBidou Messages postés 102 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 23 juin 2008 - 4 mars 2005 à 13:29
les french texans Messages postés 21 Date d'inscription mardi 14 juin 2005 Statut Membre Dernière intervention 23 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...

Merci

11 réponses

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

Ps: désolé pour le bug précédent

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

Daniel
cs_DoudouBidou Messages postés 102 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 23 juin 2008 5
4 mars 2005 à 14:38
c'est bien dommage



en tout cas merci!
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
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 ?

Posez votre question
cs_DoudouBidou Messages postés 102 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 23 juin 2008 5
5 mars 2005 à 09:16
jpleroisse



ce que je veux faire c'est pas de la manipulation de chaine de caractère...

et puis tu as fait très compliqué pour rien, autant changé directement
le contenu de la variable au lieu de faire 3 opérations inutiles....



moi je cherchais à accéder aux variables de manière dynamique avec un pointeur..

merci quand même
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
5 mars 2005 à 22:59
Quelle est la finalite recherché ? Pourquoi as-tu besoin de pointeur ?

Christophe R
cs_DoudouBidou Messages postés 102 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 23 juin 2008 5
6 mars 2005 à 00:21
et bien actuellement je passe par un tableau mais ce n'est pas vraimment ce que je voulais

je voudrais pouvoir accéder à des variables dont les noms ont une
racine commune suivi d'un chiffre qui change à chaque variable en
faisant une boucle



Exemple :

var1 = "klk"

var2 = "444sg5"

var3 = "lksdg5"

i =1

while i<3 do

t = pointeur vers("var"+i)

t = nouvellevaleur

i = i+1



(je sais que la syntaxe n'est pas bonne mais je developpe pas sous vb
et l'info n'est pas pour moi en fait, c'est juste un exemple de
principe)
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
6 mars 2005 à 01:05
Ben le tableau semble corerspondre exactement à ce que tu cherches à faire

Christophe R
cs_DoudouBidou Messages postés 102 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 23 juin 2008 5
6 mars 2005 à 01:11
oui mais je ne connais pas l'application en détail et connaissant la
personne, si elle a besoin de pointeur c'est que les tableaux ne sont
pas adaptés



Merci à vous
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
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 !!

Christophe R
les french texans Messages postés 21 Date d'inscription mardi 14 juin 2005 Statut Membre Dernière intervention 23 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 .....

please, help me....
Rejoignez-nous