Variable "indirecte"

Résolu
fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 - 2 mars 2006 à 21:14
moutonjr Messages postés 65 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 5 juin 2012 - 23 déc. 2007 à 16:24
Bonsoir tout le monde,

Ca y'est j'ai trouvé comment formuler mon problème.
Voilà : j'ai par exemple une variable strChemin as string.
Je lit dans un fichier externe une chaine de caractaire "strChemin=une chaine de caractère"
En lisant cette ligne, je voudrais affecter automatiquement le texte "une chaine de caractère" dans ma variable strChemin.
Le but du jeu est de faire ça sans forcement savoir que dans le fichier texte strChemin est mentionnée... donc pas de instr, mid... car je voudrais globaliser tout ça pour 57 variables...

Je suis sure qu'il y a une solution...
Merci d'avance.

Fiko ;-)

13 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
3 mars 2006 à 15:49
" et la relecture, beh on boucle jusqu'à ce que la gauche soit la string recherchée (valant alors pour variable)."



toi tu regardes dans une simple variable multi-col vide si ...... si rien, çà n'a aucun sens.



voici un exemple en VB6




Option Explicit

'

Private Type ExterVar

NomVar As String

Valeur As Long

End Type

'

Dim Mytab(1 To 57) As ExterVar

'

'

Private Sub Form_Load()

' init un peu..

Mytab(1).NomVar = "Coucou"

Mytab(1).Valeur = 70



Mytab(2).NomVar = "strTest"

Mytab(2).Valeur = 40



Mytab(5).NomVar = "Machin"

Mytab(5).Valeur = 187

End Sub

Private Sub Form_Unload(Cancel As Integer)

Erase Mytab

End Sub

'

'

Private Sub Command1_Click()

Call TestVar

End Sub

'

'

Private Sub TestVar()

' on veux récupérer le long pour "strTest"

Const sSearch As String = "strTest"

Dim i As Integer

'

For i = 1 To 57

If Mytab(i).NomVar = sSearch Then Exit For

Next i



' on a quitté trop tard, donc non trouvé

If i = 58 Then

MsgBox "Fausse variable non-trouvée"

Else

' trouvé, on a l'indice

MsgBox "La variable cherchée est '" & sSearch & "'" & vbCrLf & _

"Elle est en " & i & "è position du tableau" & vbCrLf & _

"Sa valeur est de '" & CStr(Mytab(i).Valeur) & "'"

End If

End Sub




<small> Coloration
syntaxique automatique [AFCK]</small>
3
troxsa Messages postés 553 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 2 octobre 2016 1
2 mars 2006 à 22:12
Bonsoir,

Sa reste quand meme pas tres clair ton probleme :)

http://www.troxsa.info/Code VB.net
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
3 mars 2006 à 00:00
salut,

voici ce que j'ai compris :





je travaille en Cobol ???

j'ai un fichier de 57lignes contenant "nom_de_la_variable" "=" "valeur_a_affecter"



je vais inventer dynamiquement 57 variables qui vont soudainement et
par magie être renommées par la partie de gauche (avant le "="), et
initialisées avec la partie de droite.

tout çà de surcroît, sans même chercher la position du "=" (pas de mid$, ni instr)



et je n'ai pas de question.





umm, il doit y avoir une sacré erreur d'interprétation de ma part, je l'espère du moins...

++

PCPT [AFCK]
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
3 mars 2006 à 00:32
Salut tout le monde.
Pcpt j'ai compris la meme chose
Dans ce cas les chances d'une erreur d'interprétation s'en sont envollées
Ma réponse sera : il n'est pas possible de créer des variables dynamiquement
Mais peut-etre que je me trompe.....enfin j'ai jamais vu ce genre de code
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
3 mars 2006 à 00:50
je confirme

VB n'est pas PHP !!!!

si les noms sont importants ou utiles, on créé un tableau.

perso je préfère un tableau de type, sinon un classique bi-dimentionnel.

redimentionné ensuite au nombre de lignes du fichier .txt, la permière
colonne ou le 1er type reçoit la gauche, puis 2 pour droite.

et la relecture, beh on boucle jusqu'à ce que la gauche soit la string recherchée (valant alors pour variable).



++
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
3 mars 2006 à 08:52
tu peux, au pire du pire utiliser un dictionnary (Microsoft Scripting Runtime)



ou simplement un tableau de Type (Nom/Valeur)



par contre, j'ai pas saisi ton histoire de "pas de Instr"

tu pourra pas y couper....

Renfield
Admin CodeS-SourceS - MVP Visual Basic
0
fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 3
3 mars 2006 à 13:56
Merci pour votre conviction à vouloir comprendre quelque chose qui n'est pas clair.
A la limite le instr est indispensable effectivement.

Je veux simplement pouvoir détecter si dans mon fichier texte j'ai une variable qui est déclaré à mon application (je peux éventuellemnt envisager de mettre une marque devant ma variable pour détécter si il faut en réaliser l'affectation : exemple
"#strChemin=une chaine de caractère" ici le # me permettra de détecter qu'un variable est à effecter et ensuite je veux faire automatiquement l'affectation la variable après le # de sa valeur après le égale...

J'avoue que c'est pas encore bien claire mais je compte sur vous pour m'éclairer

Fiko ;-)
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
3 mars 2006 à 14:45
tu ne peux pas récupérer le nom d'une variable.



dim i as long, tu peux avoir son contenu, savoir si elle n'est pas initialisée, son type, mais pas "i".

2e fois : soit un tableau bi-dimentionnel, soit un tableau de type pour stoquer une string qui servira de référence



donc MonTab(0,0) = "i"

MonTab(0,1) = 3



ou MonTab(0).tLib = "i"

MonTab(0).tVal = 3
0
fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 3
3 mars 2006 à 15:23
En fait je viens de voir qu'il y a une fonction pseudo-equivalente dans Excel : c'est "INDIRECT". Elle permet de pointer sur une celulle en fonction du calcul réalisée dans "INDIRECT"...

En fait je voudrais pointer sur une variable de mon code en fonction de la valeur d'une autre variable par exemple :
J'ai essayé ça mais ça ne marche pas :

Private Type ExterVar
NomVar As String
Valeur As Long
End Type


Private Sub TestVar()
Dim Mytab As ExterVar
Dim strTest As String

strTest = "NomVar"
Mytab.(strTest) = "test" '--> ça marche pas

End Sub

Tant pis... Merci encore pour votre aide.

Fiko ;-)
0
fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 3
3 mars 2006 à 16:17
L'idée est très bonne mais ceci nécessite de renseigner toutes mes variables dans un tableau.
Je trouve pas très parlant dans un code d'utiliser un tableau unique qui regroupe toute mes variables.
Je prefert appeler strTest dans une ligne de code que Mytab(2).NomVar... surtout qu'en il y en a 57...
D'autre part, mon idée était de pouvoir exploiter ce code pour toute les variables de mon appli

Mais j'ai bien l'impression que ce que je veux faire est irréalisable...
En tout merci à tous. Ce forum est super !!!

Fiko ;-)
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
3 mars 2006 à 17:25
c'est un petit peu ce qu'on te dit depuis le début. VB n'est pas PHP !!!


et ce n'est pas "toutes tes variables" mais "tout ton fichier texte" dont la conception est plus qu'étrange....
0
fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 3
3 mars 2006 à 17:27
Ok merci ... Sacré combat... |o|
J'adopte la solution de PCPT (Admin CS)

Fiko ;-)
0
moutonjr Messages postés 65 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 5 juin 2012
23 déc. 2007 à 16:24
Bonjour à tous,
Pourtant je suis peut-être stupide à lier, mais je n'ai pas compris comme vous.
On dirait que le fichier externe possède comme des lignes de code VB
genre dans le fichier texte il y a écrit :
String1 =  "Bonjour"
String2 = "Coucou"
Dans le code du programme il y a :

Sub m ()
Dim String1, String2 as String
...
End sub
Et fiko81 cherchait à donner (une seule fois, pas dynamiquement) "Bonjour" et "Coucou" auxdites String.

En effet on ne peut pas avoir le nom d'une variable (la mettre dans Une String)
Tu peux toujours créer un Array MesStrings(57,1) as string
ensuite : Messtrings(0,0) = "String1"
MesStrings(1,0) = "String2" und so weiter jusqu'à 57...
et après un module (lent) qui cherche dans ton fichier externe chacunes des valeurs.
une fois la bonne ligne trouvée : MesStrings(i,1) Mid(ligne, Len(Messtrings(i,0) + 3) 'le 3 représente les caractères " " dans ton fichier texte
Enfin voilà c'est compliqué et je ne suis meme pas sur d'avoir compris...

Comme quoi, vraiment rien n'est impossible...
0
Rejoignez-nous