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 :

[D2006] EInvalidPointer avec un TObjectList.clear


Sujet :

Delphi

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Par défaut [D2006] EInvalidPointer avec un TObjectList.clear
    Salut,
    Est-ce que quelqu'un sait pourquoi ce code provoque une EInvalidPointer avec le message:'invalid pointer operation' ?:
    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
    program Project1;
     
    {$APPTYPE CONSOLE}
    uses
      SysUtils,
      Contnrs;
     
    Type
     
    C_test=class
    end;
     
    var Test:C_test;
        List:TObjectList;
    begin
    Test:=C_test.Create;
    List:=TObjectList.Create;
    List.Add(Test);
    List.Clear;
    List.Add(Test);
    List.Clear;
      { TODO -oUser -cConsole Main : Insert code here }
    end.
    alors que celui la non:
    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
    program Project1;
     
    {$APPTYPE CONSOLE}
    uses
      SysUtils,
      Contnrs;
     
    Type
     
    C_test=class
    end;
     
    var Test:C_test;
        List:TObjectList;
    begin
    Test:=C_test.Create;
    List:=TObjectList.Create;
    List.Add(Test);
    List.Clear;
    List.Add(Test);
    //List.Clear;
      { TODO -oUser -cConsole Main : Insert code here }
    end.
    N'est-il pas possible de vider une TObjectList, puis de lui ajouter des objets et de la vider encore et ainsi de suite ...???

    Merci de vos reponses.

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Par défaut
    Salut
    Create peut avoir un paramètre OwnsObject qui spécifie ou non si les objets appartiennent à la liste. En d'autres termes, lors d'une suppression de l'objet dans la liste, l'objet lui-même est libéré également.
    Citation Envoyé par L'aide de Delphi
    Si aucun paramètre n'est spécifié, ou si le constructeur est appelé avec AOwnsObjects à true, le nouvel TObjectList est initialisé avec OwnsObjects à true.
    Dans ton cas, donc, OwnsObject est à true
    En fait, lors du premier Clear, La liste fait un Free sur ton objet. Du coup, tu rajoutes un pointeur qui ne pointe sur rien et lorsque tu fais ton Clear, la liste essaie d'effacer l'objet censé être pointé
    Si tu fais comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    var Test:C_test;
        List:TObjectList;
    begin
    Test:=C_test.Create;
    List:=TObjectList.Create(false);
    List.Add(Test);
    List.Clear;
    List.Add(Test);
    List.Clear;
    end.
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Par défaut
    Sois Béni Pédro ! Toi et tous les gars du Forum !
    Ca fait 2 jour que je relis tout mon code et de la lumière du forum émerge la solution.
    Merci du fond du coeur !!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/04/2014, 09h05
  2. [D2006] Pb avec 1 TStringList volatile
    Par qi130 dans le forum Langage
    Réponses: 5
    Dernier message: 09/06/2010, 02h53
  3. tableau 3x3 avec float en clear
    Par SpaceFrog dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 28/01/2009, 16h51
  4. Probleme avec le vector::clear
    Par sylvain.cool dans le forum SL & STL
    Réponses: 4
    Dernier message: 02/06/2008, 16h49
  5. [HTML][Bug] Avec les float/clear, c'est moi ou FF ?
    Par Séb. dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 02/01/2006, 15h56

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