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

Free Pascal Discussion :

Hint: "Converting the operands to DWord before doing the add could prevent overflow errors"


Sujet :

Free Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Par défaut Hint: "Converting the operands to DWord before doing the add could prevent overflow errors"
    Bonjour,

    voici le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var
      a, b, c, d: cardinal;
    begin
      a := buf[0];  b := buf[1];  c := buf[2];  d := buf[3];
     
      Inc(a, cvn[0]  + MD5_TRSF[0]  + (d xor (b and (c xor d))));
    Lorsque je le compile, FPC me dit :
    Hint: Converting the operands to "DWord" before doing the add could prevent overflow errors.
    Je n'arrive pas à comprendre comment résoudre le problème.
    Si je me souviens bien, un cardinal et un DWord, c'est la même taille et les mêmes intervalles, non ?
    Comment modifier le code pour supprimer ce message ?

    Merci

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    8 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 8 049
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    La taille du type Cardinal dépend du mode de compatibilité et de l'architecture pour laquelle le code est compilé. Sa taille n'est donc pas forcément identique au DWord.

    La question est donc : quelle est l'architecture-cible et quel mode de compatibilité est éventuellement utilisé ?
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  3. #3
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Par défaut
    C'est du calcul 32 bit. Donc, effectivement DWord est mieux.

    J'ai modifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var
      a, b, c, d: DWord;
    begin
      a := buf[0];  b := buf[1];  c := buf[2];  d := buf[3];
     
      Inc(a, cvn[0]  + DWord(MD5_TRSF[0])  + (d xor (b and (c xor d))));
    Mais même message.

    En fait, si j'essaye ç :
    Si g est un DWord, j'ai le message, si g est un QWord, je n'ai pas le message.
    En fait, ça vient du fait que si on addition 2 fois le maximum, effectivement on a un overflow.

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/05/2008, 14h49
  2. Réponses: 2
    Dernier message: 21/02/2007, 09h00
  3. Réponses: 1
    Dernier message: 27/04/2006, 10h56
  4. [VB6>VB.NET] Comment coder "break on all errors"
    Par RiiiDD dans le forum VB.NET
    Réponses: 5
    Dernier message: 07/03/2006, 12h53

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