Page 1 sur 1

Simplifier l'initialisation de valeur dans un tableau

Publié : sam. 14/juil./2007 16:05
par nico
Fonctionne aussi pour les listes chainées.

Vous savez combien c'est pénible d'initialiser, comme par exemple:

Code : Tout sélectionner

Structure Personne
    Nom.s
    Prenom.s
    Age.l
EndStructure

Global Dim Personne.Personne(4)

Personne(0)\Prenom="Nico"
Personne(1)\Prenom="Dobro"
Personne(2)\Prenom="Comtois"
Personne(3)\Prenom="Flype"
Personne(4)\Prenom="Kwai chang caine"
Je vous propose une macro qui simplifie la travail.

Code : Tout sélectionner

Macro liste(Tableau,chaine,Option=0)
   count=CountString(chaine,",")
   For b=1 To count+1
      a=b-1+Option
      Texte.s=StringField(chaine,b,",")
      tableau=Texte
    Next b
EndMacro

Structure Personne
    Nom.s
    Prenom.s
    Age.l
EndStructure

Global Dim Personne.Personne(4)

;/Je rempli le premier index
Personne(0)\Prenom="Nico"

;/Avec la macro je rempli le tableau à partir de l'index 1
liste(Personne(a)\Prenom,"Dobro,Comtois,Flype,Kwai chang caine",1)

;/On teste le résultat
Debug "------------"
For a=0 To 4
  Debug Personne(a)\Prenom
Next a

Publié : lun. 16/juil./2007 11:06
par lionel_om
Met le caractère séparateur en paramètre de ta Macro. Ca sera plus propre comme ça !

Lio :P

Publié : lun. 16/juil./2007 11:14
par Backup
va vraiment que je m'intéresse au Macro moi :D

j'ai meme pas encore regarder a quoi ça sert !! :lol: :lol:

Publié : lun. 16/juil./2007 16:07
par nico
Ok j'ai rajouté le séparateur et la possibilité de mettre des guimmets sans se fouler!:D

Code : Tout sélectionner

Macro liste(Tableau,chaine,Separateur,Option=0)
   count=CountString(chaine,Separateur)
   For b=1 To count+1
      a=b-1+Option
      Texte.s=StringField(chaine,b,",")
      Texte=ReplaceString(Texte,"'",Chr(34))
      tableau=Texte
    Next b
EndMacro

Structure Personne
    Nom.s
    Prenom.s
    Age.l
EndStructure

Global Dim Personne.Personne(4)

;/Je rempli le premier index
Personne(0)\Prenom="Nico"

;/Avec la macro je rempli le tableau à partir de l'index 1
liste(Personne(a)\Prenom,"Dobro,Comtois,'Flype',Kwai chang caine",",",1)

;/On teste le résultat
Debug "------------"
For a=0 To 4
  Debug Personne(a)\Prenom
Next a