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 :

variable globale et portée


Sujet :

C#

Vue hybride

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

    Informations forums :
    Inscription : Février 2010
    Messages : 10
    Par défaut variable globale et portée
    Bonjour,
    j'ai un problème de portée de mes variables, je m'explique;
    j'ai un programme qui traite un fichier ligne par ligne et j'aimerai qu'à la fin du traitement il appelle une autre fonction qui va prendre en paramettre le fichier traité (dans un string); donc voila mon 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
     
    static void fonction1(files)
    {
    string sCra;
     
    foreach (string filename in files)
                {
                    StreamReader sR = new StreamReader(filename);
                    Regex r = new Regex(@"\[([^:]+).*");
     
                    string line;
     
                    while ((line = sR.ReadLine()) != null)
                    {
                        if (line.Contains("grep"))
                        {
                            string[] _split = line.Split(' ');
     
                            sCra = _split[4];
     
                            if (r.IsMatch(sCra))
                            {
                                string grp = r.Match(sCra).Groups[1].Value;
                                sCra = grp;
                            }
     
                            sCra += "\t"+ _split[9];
     
                        }
     
                    }
     
                }
                fonction2(sCra);
    }
    J'ai une erreur du type:
    utilisation variable sCra non assignée.
    j'ai essayé plusieurs trucs sans succès. ce que je ne comprend pas:
    1. ma variable est déclarée au niveau de la fonction donc devrait être utilisable partout au sein de la fonction.
    2. quand j'appelle ma variable juste après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sCra += "\t"+ _split[9];
    (pour un affichage en console) cela marche bien sauf que si j'appelle ma fonction2 à cet endroit, je risque de faire un appel à chaque itération (chaque traitement de ligne).

    merci pour vos réponses.

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Ta variable est à l'extérieur du foreach et tu ne lui donnes pas de valeur car tu ne fais que la déclarer.

    L'appel de ta fonction est après le foreach. Le compilateur détecte que si tu ne rentres pas dans le foreach tu vas appeler ta méthode avec une variable non initialisée et c'est ce qu'il indique.

    Initialise ta variable avec une valeur par défaut et ça ira mieux

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

    Informations forums :
    Inscription : Février 2010
    Messages : 10
    Par défaut
    Merci pour ta réponse rapide.
    oui en effet, ça je l'avais compris . mon problème c'est que je veux passer en paramettre de la fonction2 la valeur de ma variable sCra qui passe dans le foreach ! je ne sais pas si je suis claire
    en gros:
    je declare ma variable je passe dans le foreach et la ma variable est assignée (sCra+), et c'est précisement cette variable modifiée que je veut passer à la fonction2.

    Y'at-il une solution?

  4. #4
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Initialise ta variable dès le début (en la mettant à null ou string.Empty) et appelle ta fonction lorsqu'il faut c'est tout ce que tu as à faire. Ou alors je ne comprends vraiment pas le problème.

  5. #5
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    StormimOn a raison

    tu déclares "string sCra;". Se faisant, tu crée une variable mais à ce stade ne lui affecte pas de valeur.
    Comme le dis StormimOn, lorsque le compilateur analyse ton code il voit que si "files" ne contient aucun élément tu feras appel à une variable non initialisée, ce qui provoquera une exception.

    Un simple "string sCra = string.Empty" règle donc ton problème.

Discussions similaires

  1. Réponses: 7
    Dernier message: 15/04/2011, 18h41
  2. Portée variable - variable globale
    Par Nicolas123 dans le forum GLUT
    Réponses: 2
    Dernier message: 11/05/2009, 16h42
  3. Problème de portée de variable globale
    Par draudrau dans le forum C
    Réponses: 16
    Dernier message: 06/11/2007, 09h27
  4. portée des variables globales dans un fichier js
    Par crakazoid dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 14/04/2006, 16h49
  5. Portée d'une variable globale
    Par Giill dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 27/12/2005, 10h13

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