Exécuter une fonction différente à chaque tour de boucle

boudafc Messages postés 48 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 18 juillet 2008 - 16 juil. 2008 à 14:04
boudafc Messages postés 48 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 18 juillet 2008 - 18 juil. 2008 à 11:12
Bonjour,

je vous expose mon problème:
Je dispose de 6 méthodes permettant d'accéder à des champs (Text Fields sur une IHM IlogView) de type:
Fonction1();
Fonction2();
...
Fonction6();

Je récupère des informations dans un fichier qui vont permettre de remplir ces champs.
Ce que je souhaiterais c'est que si le nombre d'information dans le fichier est supérieur au nombre de champs, je rempli tout les champs (et donc ignore certaines informations du fichier). Mais par contre, si le nombre de champs à renseigner est supérieur au nombre d'information présent dans le fichier, je ne rempli que le nombre d'information recueilli.
Pour cela, je souhaite faire ça dans une boucle pour automatiser le tout. Par contre je ne sais pas si c'est possible:

si(nombre d'information > 6) alors
   infoMax = 6
sinon
   infoMax = nombre d'info receuilli dans le fichier
fsi

Pour(i = 0; i < infoMax; i++) faire
   Fonction'i'()->setLabel(infoFichier[i]);
Fpour

Merci pour votre aide.

3 réponses

BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
16 juil. 2008 à 14:08
Hello,
Il est possible de passer par un tableau de pointeur, non?

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
16 juil. 2008 à 14:54
Oui c'est possible a condition que les fonctions aient le meme type et le meme nombre d'arguments.
Ex:

typedef void (__stdcall *LPFUNCTION)(void);

void Fonction1(void)
{
printf("Fonction 1\n");
}

void Fonction2(void)
{
printf("Fonction 2\n");
}

void Fonction3(void)
{
printf("Fonction 3\n");
}

void Fonction4(void)
{
printf("Fonction 4\n");
}

int main(void)
{
DWORD i;
LPFUNCTION lpfTab[] = { Fonction1, Fonction2, Fonction3, Fonction4 };
for(i=0; i!=4; i++) lpfTab[i]();
return 0;
}

Neo_Fr
0
boudafc Messages postés 48 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 18 juillet 2008
18 juil. 2008 à 11:12
Bonjour à tous,

merci pour vos réponses, en fait j'avais trouvé aussi ce poly qui parle des pointeurs de fonction/méthode (très bien fait)
http://www.newty.de/fpt/zip/f_fpt.pdf

dans mon cas ça n'a pas voulu bien fonctionner.... j'ai contourné le problème en créant une méthode du style:

void methode(int i) {
   switch(i) {
      case 1: fonction1();
         break;
      case 2: fonction2();
         break;
      etc...
   }
}

merci encore pour votre aide.
0
Rejoignez-nous