IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Mon programme ignore certaines instructions


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 10
    Par défaut Mon programme ignore certaines instructions
    Bonjour à tous!

    J'ai un soucis ... Mon programme a un squelette qui ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
     
    static void Main(string[] args)
    {
         Procédure BlaBla1();
         Procédure Blabla2(var1);
         foreach (string s in Liste)
         {
              Procédure Blabla3(var2, var3);
              switch (casSwitch)
              {
                   case 1:
                       // Instructions avec des if imbriqués
                       break;
                   case 2:
                       // Instructions avec des if imbriqués
                       break;
              }
          Procédure Blabla4;
         }
    }
    Le problème, c'est que lorsqu'il parcourt l'ArrayListe Liste, il ne fonctionne que pour le premier élément s de cet ArrayList. Ce qu'il fait ensuite, c'est qu'il exécute les procédures, entre dans le foreach, exécute la procédure du foreach, mais saute le switch pour passer directement à la procédure/instructions finales

    Help!

    Merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2003
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 311
    Par défaut
    Donne le code complet plutôt qu'un vague squelette. Comment veux-tu qu'on trouve une quelconque solution avec les maigres élèments que tu nous donnes?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 10
    Par défaut
    Voici un peu plus de code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
            static void Main(string[] args)
            {
                Date = DateTime.Today;
     
                SPLITTING_FICHIER_DATA(@"G:\WORK\Programme\Liste_Entreprises_Test.txt");
                LISTER_NUMERO_ENTREPRISES(Liste);
                foreach (string NumE in Liste_Num_Entreprises)
                    {
                    switch (OBTENIR_FREQUENCE_ENTREPRISE(NumE))
                        {
                            case "Hebdomadaire":
                                if (OBTENIR_JOUR_AUJOURDHUI() == OBTENIR_JOUR_ENVOI(NumE))
                                    {
                                    OBTENIR_NUM_JOUR(Date);
                                    for (I = OBTENIR_NUM_JOUR(Date_Debut_Rapport); I <= OBTENIR_NUM_JOUR(Date_Fin_Rapport); I++)
                                        {
                                        if (File.Exists(@"G:\WORK\Programme\DATA\" + NumE + "." + I) == true)
                                            {
                                            Nom_Fichier_DATA = NumE + "." + I;
                                            VENTILATION(Nom_Fichier_DATA);
                                            }
                                        }
                                    }
                                break;
     
                        case "Mensuelle":
                            if (PREMIER_DU_MOIS() == 19)
                                {
    DEFINIR_PERIODE_RAPPORT(OBTENIR_FREQUENCE_ENTREPRISE(NumE));
                                 for (I = OBTENIR_NUM_JOUR(Date_Debut_Rapport); I <= OBTENIR_NUM_JOUR(Date_Fin_Rapport); I++)
                                    {
                                    if (File.Exists(@"G:\WORK\Programme\DATA\" + NumE + "." + I) == true)
                                        {
                                        Nom_Fichier_DATA = NumE + "." + I;
                                        VENTILATION(Nom_Fichier_DATA);
                                        }
                                    }  
                                }
                                break;
                        case "":
                                Console.WriteLine("vide");
                                break;
                        default:
                            Console.WriteLine("default");
                            break;
                        } // switch  
                    ARCHIVAGE();
                    } // foreach
            } // static void Main
    Après avoir parcouru le premier élément de l'ArrayList, le sous-programme OBTENIR_FREQUENCE_ENTREPRISE() ne renvoie que "vide" par la suite.


  4. #4
    Max
    Max est déconnecté
    Expert confirmé

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Par défaut
    Salut.

    Il faudrait que tu donnes encore plus d'éléments : que contient Liste_Num_Entreprises au moment de lancer le foreach (par exmeple, au débuggeur elle contient combien d'éléments) ? Que fait la fonction OBTENIR_FREQUENCE_ENTREPRISE (en gros il faudrait des éléments de code) ?

    Et puis au passage, tu peux remplacer tes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (File.Exists(...) == true)
    par des
    (Ça fait vraiment cracra ce genre de test )

    Bon courage

    PS: et
    par

  5. #5
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Et qu'est-ce que vaut NumE à la 2e itération ?
    Et qu'est-ce qui se passe dans OBTENIR_FREQUENCE_ENTREPRISE() avec cette 2e valeur ???

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 10
    Par défaut
    => eusebe19
    - Je changerai tout ça Merci!
    - Liste_Num_Entreprise est un ArrayList contenant des numéros d'entreprises. Cette liste est extraite d'un fichier txt. Il y a 10 int dans cet ArrayList (ex : 99991, 99992, 99993, etc ...).
    - OBTENIR_FREQUENCE_ENTREPRISE() est un sous-programme permettant de récupérer la valeur d'une variable Frequence (string), à partir de la lecture d'un fichier txt.
    Le code donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    /* Cette procédure prend en entrée un code entreprise (string). Elle va
    parcourir un ArrayList Liste (contenant toutes les informations de toutes 
    les entreprises) et récupérer la fréquence (le but final du programme 
    est de générer des rapports selon une fréquence qu'une entreprise aura 
    choisie) grâce à son numéro d'entreprise */
     
            public static string OBTENIR_FREQUENCE_ENTREPRISE(string Un_Num_Entreprise)
            {
                foreach (string[] Entreprise in Liste)
                {
                    if (Un_Num_Entreprise == Entreprise[0])
                        {Frequence = Entreprise[13]; }
                }
                return Frequence;
            }
    => ppphil
    - Tout se passe bien pour NumE, il prend bien successivement toutes les valeurs de l'ArrayList Liste_Num_Entreprises
    - Le NumE est utilisé comme paramètre dans le sous-programme OBTENIR_FREQUENCE_ENTREPRISE() afin de trouver la fréquence d'une entreprise grâce à son numéro

    J'espère avoir été assez claire Sinon, n'hésitez pas à redemander

  7. #7
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Dans OBTENIR_FREQUENCE_ENTREPRISE, Frequence est définie où ????

    De plus, là tu ne retourne que la dernière occurrence de Liste !! Il se passe quoi si tu as plusieurs Entreprises qui correspondent à ta condition ???

Discussions similaires

  1. Instruction point-virgule dans mon programme.
    Par katcha95 dans le forum Débuter
    Réponses: 8
    Dernier message: 28/11/2009, 15h06
  2. Réponses: 2
    Dernier message: 19/07/2008, 17h06
  3. Réponses: 16
    Dernier message: 04/11/2007, 13h51
  4. [Dev-Pascal] Mon programme se ferme trop vite après la dernière instruction
    Par am002r dans le forum Autres IDE
    Réponses: 4
    Dernier message: 08/05/2007, 10h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo