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

 Delphi Discussion :

TobjectList problème d'occurrence


Sujet :

Delphi

  1. #1
    Membre régulier
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2010
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2010
    Messages : 207
    Points : 108
    Points
    108
    Par défaut TobjectList problème d'occurrence
    Bonjour,

    je suis en train de créer un fichier xml en delphi.

    pour cela j'utilise TObjectList , chaque nœud est un objet de ma TObjectList.

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <a>
          <b>
                <c />
                <d>
                      <e />
                      <f />
                </d>
          </b>
    </a>
    Donc les balises b,c,d,e,f font toutes partie de TObjectList, la racine a n'en fait pas partis.
    Lorsque je crée un nœud dépendant d'un autre comme je dois passer en référence le nœud parent, donc pour crée le nœud c je dois lui passer en référence le nœud b; jusque la aucun souci j'utilise la méthode last de TObjectList.
    Le problème survient avec f ou là je ne peux utiliser la méthode last puisque sinon cela créera un arbre comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    []
    <e>
          <f />
    </e>
    []
    D'ou ma question comment faire pour avoir la référence de l’occurrence d ?


    Autre problème lors de l’exécution de mon code j'ai une violation d’accès à la mémoire lors du passage dans mon destructor qui fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
              destructor Tc_xml.Destroy;
              begin
                  Flnode.Free;
     
              end;
    j'ai pourtant bien passer la variable OwnsObject à true dans mon constructor :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Flnode.OwnsObjects := True

  2. #2
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 562
    Points
    3 562
    Par défaut
    Salut
    Si tu as mis OwnsObject à True, tu n'as pas besoin d'appeler Flnode.Free dans ta surchage du destructeur (dans le quel tu as oublié l'instruction inherited destroy; ).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     destructor Tc_xml.Destroy;
    begin
        inherited destroy; //<-- appel du code standard de "destruction" du 
                               // TObjectList, comprenant la libération des objets
                               // si Ownsobjetc est égal à true
     
        //autres traitements
    end;
    Ownsobject:=True, fait en sorte que ton TObjectList détruira et libèrera automatiquement les objects que tu lui as rattaché.

    Pour le reste, je n'ai rien compris

  3. #3
    Membre régulier
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2010
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2010
    Messages : 207
    Points : 108
    Points
    108
    Par défaut
    merci.

    (j'ai trouvé tout seul pour le reste)

  4. #4
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Euh... Pour faire des XML on a déjà inventé le IXMLDOMDocument et le TXMLDocument

  5. #5
    Membre régulier
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2010
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2010
    Messages : 207
    Points : 108
    Points
    108
    Par défaut
    Citation Envoyé par sjrd Voir le message
    Euh... Pour faire des XML on a déjà inventé le IXMLDOMDocument et le TXMLDocument
    possible… mais je suis en delphi 5 et je dois utiliser janXMLParser2
    celui-ci étant un poil chiant à utiliser j'ai donc surchargé la classe pour facilité l'utilisation.

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

Discussions similaires

  1. TObjectList Problème Indice
    Par BuzzLeclaire dans le forum Langage
    Réponses: 5
    Dernier message: 11/10/2012, 21h59
  2. Problème d'occurrence !
    Par thom's dans le forum Débuter
    Réponses: 9
    Dernier message: 11/12/2011, 15h16
  3. Réponses: 4
    Dernier message: 30/03/2006, 19h14

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