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

Langage Java Discussion :

[Language] Utilisation d'une variable en globale, incohérent


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 47
    Points : 20
    Points
    20
    Par défaut [Language] Utilisation d'une variable en globale, incohérent
    Bonjour,
    J'ai un soucis avec des variables définies en globale, je m'explique :

    J'ai méthode qui lit un fichier XML et qui l'inscrit en base....
    Des variables sont définies en globales en public

    Mais que le parseur (SAX) se met en fonction, ces méthodes ne veulent pas aller lire le contenu des variables dont j'ai parlé précédemment...

    Voici mon code simplifié :

    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
    public class LireXML2 extends HandlerBase {
    /////////////////////////////////////////////
    // DEFINITION VARIABLES GLOBALES UTILISEES //
    /////////////////////////////////////////////
    	public int X = 99;
    	public String Y = "100";
     
    /////////////////////////
    // PROGRAMME LireXML : //
    /////////////////////////
     
    	public LireXML2()
    	{
    		baseben = new GestionBDD();
    		baseben.OuvertureBase(URL,Utilisateur,Password);		
    	}
     
    	// Démarrage de votre programme
    	public void LireXML2 (String url)
    	{
    		url2 = url;
     
    X = 1;  //Là je calcule les variables X et Y : pour simplifier je mets ici
    Y = "2"; // des constantes
    		System.out.println("Avant SAXParser")	;
    		System.out.println("variable X :"+X+",variable Y: "+Y);
    		SAXParserFactory factory = SAXParserFactory.newInstance();
    		try
    		{
    			SAXParser saxParser = factory.newSAXParser();
    			saxParser.parse( url , new LireXML2() );
    		}
    		System.out.println("Après SAXParser")	;
    		System.out.println("variable X :"+X+",variable Y: "+Y);
    Voici un bout de mon code parseur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //////////////////
    // END DOCUMENT //
    //////////////////
    	public void endDocument () throws SAXException
    	{
     
    		X1 = X;
    		Y1 = Y;
    		System.out.println("Dans SAXParser")	;
    		System.out.println("variable X1 :"+X1+",variable Y1: "+Y1);
    	}
    Vous l'aurez compris, j'ai simplifié beaucoup de trucs....

    Voici ce qui s'affiche :
    Avant SAXParser
    variable X :1,variable Y: 2

    Dans SAXParser
    variable X1 :99,variable Y1: 100

    Après SAXParser
    variable X :1,variable Y: 2
    Alors qu'il devrait afficher :
    Avant SAXParser
    variable X :1,variable Y: 2

    Dans SAXParser
    variable X1 :1,variable Y1: 2

    Après SAXParser
    variable X :1,variable Y: 2
    Là je sèche total, auriez vous une idée?
    Merci

  2. #2
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Ton code n'est pas clair, mais si je ne me trompe pas : ta méthode endDocument() n'est pas au courant de ce qu'il y a dans LireXML2(), et notamment des éventuelles affectations que tu y fais. endDocument() va donc chercher tes variables définies en tête de classe, donc 99 et 100. Pour éviter ce genre de comportement, n'utilise pas de variables de classes quand ce n'est pas nécessaire, passe tes variables en paramètres des procédures et des fonctions.

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 47
    Points : 20
    Points
    20
    Par défaut
    Merci de ta réponse, j'ai pas tout compris...

    Mais le soucis c'est que la méthode EndDocument n'est pas instanciée par mes soins : elle appartient au parseur SAX, donc je ne peux pas lui passer les variables en paramètres....
    Et j'ai oublié de le signaler, mais la méthode EndDocument est une méthode de classe de la classe LireXML2 ....

  4. #4
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    bonjour

    remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    saxParser.parse( url , new LireXML2() );
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    saxParser.parse( url , this );
    Vive la POO...

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 47
    Points : 20
    Points
    20
    Par défaut
    Ah trop cool!!

    Merci beaucoup!

    Moi le galère avec la POO !

    Merci, à bientôt!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 15
    Dernier message: 27/03/2009, 13h37
  2. Réponses: 3
    Dernier message: 31/12/2008, 12h50
  3. utilisation d'une variable global
    Par poula dans le forum Forms
    Réponses: 1
    Dernier message: 06/01/2007, 03h14
  4. Utilisation d'une Variable(Vb) dans d'autre language
    Par cach dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 22/02/2005, 12h00
  5. utilisation d'une variable globale
    Par ZZ dans le forum ASP
    Réponses: 3
    Dernier message: 03/12/2003, 19h11

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