[VB] petit defi : récuperer le nom d'une variable dans un TYPE

petit defi : récuperer le nom d'une variable dans un TYPE [VB] - VB/VBA/VBS - Programmation

Marsh Posté le 09-01-2004 à 12:54:33    

bon, voici un bon petit remu-meninge, dans la mesure ou il est possible de le realiser.
 
Quelqu'un connaitrait-il une astuce permettant de recuperer sous forme de String le nom d'un champ dans un UDT (User defined type) ?
 
Exemple:
 

Code :
  1. Type test
  2.    chaine1 as string*4
  3.    chaine2 as string*8
  4.    nombre1 as integer
  5. end type
  6. public sub zzz()
  7. dim MagicVar as string
  8. dim recordTest as test
  9.    MagicVar = LaFonctionMagique(RecordTest, index_du_champ_dans_le_type)
  10. end sub


 
ici, on donnerais l'index de position dans le type (genre index 1 : chaine1, index 2: chaine2, index 3: chaine3)
 
ainsi apres un MagicVar = LaFonctionMagique(RecordTest , 3), MagicVar contiendrais "nombre1"
 
merci de votre collaboration ;)
 
Je propose un index, mais si quelqu'un a une autre solution je suis preneur (genre remplir une collection avec tout les nom des champs d'un type, ou autre... )
 
PS: je sais, c'est un peu tordu, mais ca pourrait m'etre TERRIBLEMENT utile :)


Message édité par ixemul le 09-01-2004 à 12:54:51
Reply

Marsh Posté le 09-01-2004 à 12:54:33   

Reply

Marsh Posté le 10-01-2004 à 02:05:57    

Code :
  1. ' Je sais pas si c'est que tu veux mais bon ...
  2. Private Const MAX_VARIABLE = 3
  3. Private Type variables
  4.      chaine1 As String * 4
  5.      chaine2 As String * 8
  6.      nombre1 As Integer
  7. End Type
  8. Private Type nomVariable
  9.     chaine(1 To MAX_VARIABLE) As String
  10. End Type
  11. Dim test As nomVariable
  12. Private Sub initVariableName()
  13.    
  14.     test.chaine(1) = "chaine1"
  15.     test.chaine(2) = "chaine2"
  16.     test.chaine(3) = "nombre1"
  17. End Sub
  18. Private Function getVariableName(ByVal index As Long)
  19.     If index > MAX_VARIABLE Then Exit Function
  20.     getVariableName = test.chaine(index)
  21. End Function
  22. Private Sub Form_Load()
  23. Dim retVal As String
  24.     Call initVariableName
  25.     retVal = getVariableName(1)
  26.     MsgBox retVal
  27. End Sub

Reply

Marsh Posté le 10-01-2004 à 11:25:51    

c'est une solution valable en effet, la seule chose qui me chagrine dedans, c'est d'etre obligé de définir 2 fois les champs de ma structure, j'aimerais une solution plus "évoluée" pour retrouver ces nom de variables (je sais, je suis chiant la  :lol: )

Reply

Marsh Posté le 10-01-2004 à 13:28:50    

en effet

Reply

Marsh Posté le 10-01-2004 à 20:37:22    

Euh ... je les définit qu'une fois la, il n'y a pas de moyen pour connaitre les noms de variables sans les initialiser au moins une fois car définir les variables et définir le NOM des variables sont deux choses différentes.

Reply

Marsh Posté le 28-04-2004 à 16:35:16    

je sais pas si ca peut aider mais regarde la fonction callbyname dans l'aide en ligne

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed