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 Delphi Discussion :

Composant perso défaillant après passage de Tokyo à RIO


Sujet :

Langage Delphi

  1. #1
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 487
    Points : 3 120
    Points
    3 120
    Par défaut Composant perso défaillant après passage de Tokyo à RIO
    Bonjour

    J'ai un composant basé sur TEdit auquel j'ai ajouté différentes propriétés et méthodes.
    Entre autres, une propriété Value de type Single à laquelle on peut assigner la valeur NaN.
    Sous Delphi Tokyo, tout fonctionnait sans problème.
    L'éditeur de propriété affiche NAN pour Value.

    Nom : 2019-03-28_134525.png
Affichages : 197
Taille : 18,9 Ko

    L'application se lance sans problème.

    Nom : 2019-03-28_134652.png
Affichages : 162
Taille : 1,4 Ko

    Si j'affiche le FMX, Value n'est pas renseigné.

    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
     
      object EditNumeric1: TEditNumeric
        Touch.InteractiveGestures = [LongTap, DoubleTap]
        TabOrder = 1
        FilterChar = '0123456789-.,'
        TextSettings.HorzAlign = Center
        Position.X = 40.000000000000000000
        Position.Y = 32.000000000000000000
        StyledSettings = [Family, Size, Style]
        VarValue = Null
        IsNull = True
        HighMaxLocked = False
        HighMinLocked = False
        Decimals = 0
        SpinEditVisible = False
        DisplayHint = False
      end

    J'ouvre maintenant le projet avec RIO.
    L'éditeur affiche toujours NAN

    Nom : 2019-03-28_134925.png
Affichages : 170
Taille : 14,0 Ko

    Je lance le projet :

    Nom : 2019-03-28_135031.png
Affichages : 171
Taille : 4,2 Ko

    ---------------------------
    Notification des exceptions du débogueur
    ---------------------------
    Le projet Project1.exe a déclenché la classe d'exception EReadError avec le message 'Erreur lors de la lecture de EditNumeric1.Value: Valeur de propriété incorrecte'.
    ---------------------------
    Arrêter Continuer Aide
    ---------------------------

    Si je regarde le FMX, je vois que RIO a enregistré NAN

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      object EditNumeric1: TEditNumeric
        Touch.InteractiveGestures = [LongTap, DoubleTap]
        TabOrder = 1
        FilterChar = '0123456789-'
        TextSettings.HorzAlign = Center
        Position.X = 40.000000000000000000
        Position.Y = 32.000000000000000000
        StyledSettings = [Family, Size, Style]
        Value = NAN
        VarValue = Null
        IsNull = True

    Et là ça me pose un problème parce que mon projet utilise ce composant à plein d'endroits.
    Si dès que j'ouvre un TForm et que je l'enregistre, ça me fout le bazar, je ne vais pas pouvoir continuer ce projet avec RIO.

    Le seul contournement que j'ai est de mettre la propriété à 0 en Design mais mais ça m'impose de repasser sur chaque oncreate pour réinitialiser à NaN quand c'est nécessaire.

    Une idée de génie pour corriger ça ?

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 764
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 764
    Points : 13 386
    Points
    13 386
    Par défaut
    property Value :single read ... write ... stored FALSE ?

  3. #3
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 487
    Points : 3 120
    Points
    3 120
    Par défaut
    Comme d'hab', je reste pantois.
    Dans Kaamelott, Gauvain disait: "Venez le vois dehors, vous serez encore plus pantois" .

    Tu m'as sorti d'une grosse galère.

    Après, pour ma défense, c'est le second composant que j'ai fait dans ma vie. Je suis très nul dans ce domaine.

    Merci beaucoup grand manitou

  4. #4
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 487
    Points : 3 120
    Points
    3 120
    Par défaut
    J'ai quand même une question complémentaire au cas où tu aurais le fin mot de l'histoire.

    Dans l'inspecteur d'objet, ma valeur de propriété est affublée du symbole "animation" et si je clique sur la valeur, Delphi me propose de créer un TFloatAnimation

    Nom : 2019-03-28_150617.png
Affichages : 166
Taille : 2,9 Ko

    Quel rapport avec le type Single de ma propriété ?

  5. #5
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 764
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 764
    Points : 13 386
    Points
    13 386
    Par défaut
    Ça c'est un truc purement FMX. Je ne peux pas te répondre, je n'ai encore jamais mis les mains dedans

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 119
    Points : 41 252
    Points
    41 252
    Billets dans le blog
    63
    Par défaut
    Même si moi aussi je commence à toucher a des composants jusqu'à présent je suis cantonné à des Strings ou des TFileName (il me pose quelques soucis celui-là)
    Bref je n'ai jamais touché à une propriété numérique il doit y avoir encore une option non documentée (ou peu) c'est peut-être à cause du type
    Le fait de nommer la propriété Value influe peut-être (perso j'aurais évité)

  7. #7
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    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 : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 614
    Points
    3 614
    Par défaut
    Bonjour

    Si Value est un single, il ne devrait pas pouvoir avoir la valeur NAN ou NaN (en tout cas pas avant l'introduction des nullable types qui sera probablement pour la prochaine version majeure).

    Si tu indiques "stored false" sur la déclaration de ta variable, quel est l'intérêt de l'afficher dans l'inspecteur de propriétés ? Tu peux te contenter de la mettre dans "PUBLIC" au lieu de "PUBLISHED".

    Serais curieux de voir comment tu gères les non valeurs dans ton code source.

  8. #8
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 487
    Points : 3 120
    Points
    3 120
    Par défaut
    Tout ce que je sais est que ça fonctionnait avec Tokyo et que le problème est apparu avec RIO.
    Et la seule différence est le stockage automatique de NaN dans le FMX dès que j'ouvre mon TForm (ou TFrame dans le cas présent).

    Mettre cette propriété en published n'a effectivement pas grand intérêt si je compare aux valeurs qui servent à borner la saisie.
    Je pourrais effectivement changer la portée.

    Quand au code, il prend en compte plein d'autres choses.
    Selon la valeur saisie (ou modifiée par code), la couleur change, le hint est modifié, etc.

    En fait, tout est parti d'un besoin qui consistait à avoir un composant de saisie numérique qui pouvait être vide et à ce moment là renvoyer NaN comme valeur (Value).

  9. #9
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 487
    Points : 3 120
    Points
    3 120
    Par défaut
    J'oubliais :

    Serais curieux de voir comment tu gères les non valeurs dans ton code source.
    Tout simplement, si Text = '' alors Value = NaN
    ça permet d'avoir les possiblités

    valeur non renseignée
    valeur à 0
    valeur <> 0

    Pour données à prendre en compte dans le logiciel c'est primordial.

  10. #10
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 586
    Points : 25 262
    Points
    25 262
    Par défaut
    Euh ... NaN fonctionne très bien pour un Single (testé en XE2 et exploité en D7 en 2007 mais j'ai préféré passé au Variant pour gérer l'absence de données différente d'un zéro)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var
      S: Single;
    begin
      S := NaN;
      ShowMessage(Format('%f', [S]));
    end;

  11. #11
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 487
    Points : 3 120
    Points
    3 120
    Par défaut
    Le variant est aussi une solution mais avec plus de place mémoire pour chaque variable non ?

    Et aujourd'hui, avec les helper, j'aime bien les

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if EditKs.Value.IsNan then

  12. #12
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    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 : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 614
    Points
    3 614
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Euh ... NaN fonctionne très bien pour un Single (testé en XE2 et exploité en D7 en 2007 mais j'ai préféré passé au Variant pour gérer l'absence de données différente d'un zéro)
    ok, il faut que je révise alors, j'ai complètement zappé ça

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/10/2005, 09h37
  2. [C#]Problème sur composant perso (Bouton Transparent)
    Par SLE dans le forum Windows Forms
    Réponses: 1
    Dernier message: 06/10/2005, 00h12
  3. Composant perso disparaît lors du redimensionnement du composant parent
    Par GENERYS dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 05/10/2005, 22h07
  4. Rendre un composant perso Scrollable
    Par GENERYS dans le forum Composants
    Réponses: 2
    Dernier message: 26/09/2005, 14h36
  5. Réponses: 1
    Dernier message: 08/07/2005, 02h46

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