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 :

Probleme de tableau..


Sujet :

Langage Delphi

  1. #1
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    748
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 748
    Points : 500
    Points
    500
    Par défaut Probleme de tableau..
    Bonjour a tous.

    Le poste de travail est : OS XP et delphi 7.

    Voici un problème que je n'arrive pas à cerner. Notamment que cela a fonctionner durant des années et que ce bug doit surgir d'une recompilation.

    Nous avons 1 record qui comprend entre autres choses 2 tableaux (Tmin/Tmax) dimensionnés de [1..40] of real : ces tableaux contiennent les valeurs de butée min/max pour détecter des erreurs.
    Un 3éme tableau (Tvalue) dimensionné de [1..20] of real : ce tableaux comprend les valeurs valeurs saisies.

    le but étant de s'assurer que les valeurs saisies se trouvent bien dans l'espace autorisé. Rien de bien spécial et comme je le disais cela n'a jamais posé de problème jusqu’à une compilation ou ce bug a surement été crée.

    mon problème est sur le traitement du tableau par delphi.
    1° Quand je visualise son contenu avec le débogueur les valeurs à l'intérieur des tableaux sont normales.
    2° Quand je visualise les contenus de tableau à l'instant de la comparaison les valeurs sont correctes, mais pas le résultat :
    Par exemple : Tmax[15]=10 et Tvalue[15]=10 si je teste ces deux valeurs (if Tvalue > Tmax then exit) ben j’exécute le "Exit" alors que les deux valeurs sont égales.
    3° en anticipant j'ai essayé de stocker le contenu de chaque index des tableaux dans des variables locales et là surprise sur un des tableau (le Tmax) il me croise le contenu des valeurs (oui c'est pas clair) d’où le petit schéma dessous.

    pour un tableau de 5 éléments numérote de A à E

    Index tableau..............contenu tableau...............affectation variable locale

    1.......................................A .............................=> E
    2.......................................B..............................=> D
    3.......................................C..............................=> C
    4.......................................D..............................=> B
    5.......................................E..............................=> A

    Je savais que parfois le compilation pour des optimisations lit les tableau dans un sens plutôt que dans l'autre, mais là !!!
    Les deux tableaux comparait ne sont pas lus dans le même sens.
    et pour finir dans cette procédure de fait plusieurs tests comparatifs ( Tmax, Tmin, real.. ) et seul le test du Tmax est erroné.

    Quelqu'un a t il une idée sur ce genre de problème ?? directive de compilation... ou je ne sais quoi ... !!
    Bye et bon code...

    Ce n'est pas tant l'aide de nos amis qui nous aide , mais notre confiance dans cette aide .

  2. #2
    Membre chevronné

    Homme Profil pro
    au repos
    Inscrit en
    Février 2014
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2014
    Messages : 429
    Points : 1 884
    Points
    1 884
    Par défaut
    Bonjour,

    Peux-tu nous fournir la déclaration de ton type Record, ainsi que le code d'initialisation des valeurs dans les tableaux TMax, TMin ?

    Cordialement
    Thierry

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 310
    Points
    310
    Par défaut
    Habituellement les erreurs de tableau sont occasionnés soit par une allocation trop grande des ressources disponibles.

    Soit, et plus fréquemment, quand une dimension d'un tableau dynamique déborde de son champ déclaré.

    Donc surveille, si tu ne dépasses pas les limites déclarées de dimension des tableaux.

    C'est le genre de bogue qui prend un temps fou à trouver si tu ne fais que vérifier l'algorithme

  4. #4
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Points : 1 946
    Points
    1 946
    Par défaut
    Citation Envoyé par petitcoucou31 Voir le message
    2° Quand je visualise les contenus de tableau à l'instant de la comparaison les valeurs sont correctes, mais pas le résultat :
    Par exemple : Tmax[15]=10 et Tvalue[15]=10 si je teste ces deux valeurs (if Tvalue > Tmax then exit) ben j’exécute le "Exit" alors que les deux valeurs sont égales.
    Bonjour,

    C'est donc que ces valeurs ne sont pas égales, tu indiques que ces valeurs sont des real, il y a peut être une différence entre ces deux valeurs due à la précision.

  5. #5
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    Citation Envoyé par free07 Voir le message
    Bonjour,

    C'est donc que ces valeurs ne sont pas égales, tu indiques que ces valeurs sont des real, il y a peut être une différence entre ces deux valeurs due à la précision.
    +1

    2 petites infos pour gérer les real:
    • Utiliser CompareValue pour gérer la précision de la comparaison
    • Dans l'évaluateur, tu peux évaluer
      Tmax[15],f18
      pour afficher 18 chiffres en précision

  6. #6
    Membre averti

    Homme Profil pro
    ingénieur, retraité
    Inscrit en
    Février 2007
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur, retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 230
    Points : 332
    Points
    332
    Par défaut
    Bonjour,

    dans ce cas on calcule l'erreur relative, ici la différence, qu'on peut accepter en % :

    Abs( (Valeur - NouvValeur) / Valeur * 100 ) < N%

    pour tendre vers une différence nulle N sera très petit, 1/1000 ou plus suivant le résultat à obtenir.

    PL

Discussions similaires

  1. [CR8.5] Probleme de tableau
    Par Sto59 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 21/02/2007, 15h07
  2. Probleme de tableau paramétrable
    Par jamah dans le forum Composants VCL
    Réponses: 4
    Dernier message: 29/11/2005, 12h47
  3. jolie probleme de tableau
    Par racoon971 dans le forum C++
    Réponses: 2
    Dernier message: 04/03/2005, 11h31
  4. probleme de tableau dynamique
    Par El Krotal dans le forum C
    Réponses: 9
    Dernier message: 25/06/2004, 17h00
  5. [C#] Probleme de tableau
    Par djsbens dans le forum Windows Forms
    Réponses: 8
    Dernier message: 08/06/2004, 14h04

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