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

EDI Delphi Discussion :

[D10.4.2][Android] Des TListbox qui n'affichent plus rien


Sujet :

EDI Delphi

  1. #1
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2017
    Messages
    1 398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : octobre 2017
    Messages : 1 398
    Points : 4 694
    Points
    4 694
    Par défaut [D10.4.2][Android] Des TListbox qui n'affichent plus rien
    Bonjour,

    La rétrocompatibilité est vraiment un gros mot chez Embarcadero!!!!!!!!!!!!!!

    Une app Android avec des TListBox développée sous Delphi10.3.3 qu'il faut compiler sous Delphi10.4.2

    Résultat?

    La compilation se passe bien mais...

    La totalité des TListBox de l'app reste "vide", plus rien ne s'affiche!


    Même résultat avec une compilation sous Delphi 11.2!

    J'ajoute des lignes à ma liste à l'aide de la proc suivante:

    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
    procedure TForm1.AddListBoxItem(myListBox:TListBox;Definition, Qty1, Qty2:string;BackColor:integer);
    var
     ListBoxItem : TListBoxItem;
     ItemText : TText;
     
    begin
     myListBox.BeginUpdate;
     
     try
      ListBoxItem:= TListBoxItem.Create(myListBox);
      ListBoxItem.Parent:= myListBox;
      ListBoxItem.Height:=30;
     
     
      if BackColor=0 then
       begin
        if Odd(myListBox.Items.count) then ListBoxItem.StyleLookup:='ListBoxMapStyle'
         else
          ListBoxItem.StyleLookup:='ListBoxMapStyleKhaki';
        end
      else
       if BackColor=1 then ListBoxItem.StyleLookup := 'ListBoxMapStyleTitle';
     
     
      ListBoxItem.ApplyStyleLookup;
     
      ListBoxItem.StylesData['Reference.text']:=Definition;
      ListBoxItem.StylesData['Qty1.text']:=Qty1;
      ListBoxItem.StylesData['Qty2.text']:=Qty2;
     
     finally
      ListBoxitem.Free;
      myListBox.EndUpdate;
     end;
    Est-ce que quelqu'un a déjà été confronté à ce problème?

    Est-ce que quelqu'un à une solution à proposer?

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    novembre 2002
    Messages
    8 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2002
    Messages : 8 761
    Points : 28 517
    Points
    28 517
    Par défaut
    ListBoxitem.Free; ???

    Patrick, rappelle moi dans quelle version ARC a été supprimé ? que Free est redevenu un vrai Free ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2002
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : mai 2002
    Messages : 3 287
    Points : 5 531
    Points
    5 531
    Par défaut
    Salut

    Comme le dit Paul, la destruction de ton objet n'a rien à faire ici à moins que tu crées une copie de celui-ci dans l'autre, ce qui n'est pas le cas ici.

    Lors de la destruction, celui-ci sera automatiquement libéré car le Owner dans le Create est renseigné, ce qui met ce composant dans une liste qui sera détruite à la libération du conteneur.
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  4. #4
    Membre expert Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    juin 2013
    Messages
    1 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2013
    Messages : 1 681
    Points : 3 158
    Points
    3 158
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    ListBoxitem.Free; ???

    Patrick, rappelle moi dans quelle version ARC a été supprimé ? que Free est redevenu un vrai Free ?
    En 10.3 Rio.

  5. #5
    Membre expert Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    juin 2013
    Messages
    1 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2013
    Messages : 1 681
    Points : 3 158
    Points
    3 158
    Par défaut
    Citation Envoyé par anapurna Voir le message
    salut

    comme le dit Paul la destruction de ton objet n'a rien à faire ici
    à moins que tu crées une copie de celui-ci dans l'autre ce qui n'est pas le cas ici

    lors de la destruction celui-ci sera automatiquement liberé car le Owner dans le Create est renseigné
    ce qui met ce composant dans une liste qui sera détruite à la libération du conteneur
    Ce qui est étrange, c'est que ce code ait fonctionné avant.

    D'une manière générale, tout composant FMX auquel on attache des éléments prend la propriété du composant et s'occupera de sa libération. Il ne faut surtout pas la faire nous-même.

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2017
    Messages
    1 398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : octobre 2017
    Messages : 1 398
    Points : 4 694
    Points
    4 694
    Par défaut
    Vous êtes bien gentil avec vos conseils sur le .free ou pas!

    Si je croise le mec à l'origine de ce code, je n'hésiterai pas un instant à lui tirer les oreilles et à le remettre sur le droit chemin!

    Mais franchement là, je suis pas sûr que cela règle mon problème!

    Par acquis de conscience, je vais virer ce .free et recompiler le tout, mais cela m'étonnerait beaucoup que soudainement les TListbox se mettent à fonctionner... Pour les miracles, c'est habituellement Lourdes et pas le bureau d'un développeur Delphi

    Je ferai part ici du résultat de l'opération... Miracle ou pas? Le suspense est intenable...

  7. #7
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    novembre 2002
    Messages
    8 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2002
    Messages : 8 761
    Points : 28 517
    Points
    28 517
    Par défaut
    homme de peu de foi, pourquoi as-tu douté ?
    Matthieu 14:22-33
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  8. #8
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2017
    Messages
    1 398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : octobre 2017
    Messages : 1 398
    Points : 4 694
    Points
    4 694
    Par défaut
    Chapeau bas, Messieurs!

    Je vais de ce pas contacter le Vatican... Il y a une nouvelle destination concurrente de Lourdes... Mon bureau!!!!!!!!!!!!!!!!!!!!!!!!

    Plus de .free et les TListBox fonctionnent!

    Question qui restera sans réponse: Pourquoi est-ce que cela fonctionnait avec Delphi Rio 10.3.3? Je suis trop content pour que cette question m'empêche de bien dormir ce soir.

    Merci encore pour votre aide à tous.

  9. #9
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    12 976
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2006
    Messages : 12 976
    Points : 23 618
    Points
    23 618
    Par défaut
    Pourtant la réponse a été donné, le temps que l'ARC disparaisse de tous les compilateurs pour FMX, cela a commencé en 10.3 pour Linux (Comptage de références mémoire dans le compilateur Linux) et continuer en 10.4 pour Android et iOS : Gestion de la mémoire unifiée

    Le Free ne fait rien en cas d'ARC, c'est juste décoratif ... suffit de lire le code, la directive AUTOREFCOUNT vide complétement le code de sa substance ... la directive a du changer de nom je suis encore en 10.0 et en VCL ... pourtant je connais l'hérésie de l'ARC introduite pour le support de multi-plateforme ... on ne parle même pas du délire des chaines 0-based.

    l'affectation à nil décremente le compteur de référence (comme on en a l'habitude pour un TInterfacedObject par exemple) ... tout cela pouvait rendre difficile de partager du code non OS dépendant entre VCL et FMX, uniquement à base de la RTL, par exemple, des fonctions de manipulation de chaine.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  10. #10
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2017
    Messages
    1 398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : octobre 2017
    Messages : 1 398
    Points : 4 694
    Points
    4 694
    Par défaut
    Effectivement ShaiLeTroll, je viens de tomber sur un blog qu'il parle d'un changement intervenu à partir de Delphi Sydney 10.4... Cela expliquerait pourquoi le code fonctionnait encore sur Delphi Rio...

  11. #11
    Membre expert Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    juin 2013
    Messages
    1 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2013
    Messages : 1 681
    Points : 3 158
    Points
    3 158
    Par défaut
    Citation Envoyé par pprem Voir le message
    Ce qui est étrange, c'est que ce code ait fonctionné avant.
    Et c'est là que je réalise que ma mémoire est vraiment trop sélective et se met à jour au fil des versions en effaçant l'historique pour ne pas s'encombrer. Effectivement .Free en FMX ne faisait rien selon les plateformes avant la 10.4 Sydney.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/07/2008, 15h57
  2. Réponses: 3
    Dernier message: 31/01/2007, 10h03
  3. des recordsets qui ne sont plus acceptés
    Par boss_gama dans le forum ASP
    Réponses: 2
    Dernier message: 02/08/2006, 10h51
  4. Réponses: 4
    Dernier message: 03/05/2006, 01h04
  5. Redirection sur des fichiers qui n'existent plus
    Par gaia_dev dans le forum Apache
    Réponses: 3
    Dernier message: 03/02/2006, 20h09

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