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

[Résolu]
Signaler
Messages postés
102
Date d'inscription
jeudi 29 mai 2003
Statut
Membre
Dernière intervention
23 juin 2008
-
Messages postés
21
Date d'inscription
mardi 14 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2006
-
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

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

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 112 internautes nous ont dit merci ce mois-ci

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

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 112 internautes nous ont dit merci ce mois-ci

Messages postés
102
Date d'inscription
jeudi 29 mai 2003
Statut
Membre
Dernière intervention
23 juin 2008
4
c'est bien dommage



en tout cas merci!
Messages postés
1788
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
11 mars 2006
26
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
Messages postés
102
Date d'inscription
jeudi 29 mai 2003
Statut
Membre
Dernière intervention
23 juin 2008
4
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
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
27
Quelle est la finalite recherché ? Pourquoi as-tu besoin de pointeur ?

Christophe R
Messages postés
102
Date d'inscription
jeudi 29 mai 2003
Statut
Membre
Dernière intervention
23 juin 2008
4
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)
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
27
Ben le tableau semble corerspondre exactement à ce que tu cherches à faire

Christophe R
Messages postés
102
Date d'inscription
jeudi 29 mai 2003
Statut
Membre
Dernière intervention
23 juin 2008
4
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
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
27
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
Messages postés
21
Date d'inscription
mardi 14 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2006

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....