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 :

Condition correcte ou non ?


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 582
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 582
    Par défaut Condition correcte ou non ?
    Bonjour à toutes et à tous,

    Je me demandais si cette condition (qui fonctionne !) est logiquement écrite.

    Je teste si la hauteur de l'écran est plus petite que 767 alors mon checkBox est enabled sinon pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if inttostr(screen.height) <inttostr(767) then cb5.Enabled := true
     else cb5.Enabled := false;
    Merci à tous.

    @+,

    Cincap

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Pourquoi ne serait elle pas logique ?

    Sinon tu peux même en réduire l'écriture

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cb5.Enabled := (inttostr(screen.height) <inttostr(767));
    ca fera exactement la même chose sans le if else
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 582
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 582
    Par défaut
    @ Rayek, merci pour ta réponse, cela me semblait drôle au niveau visuel.

    Je tiens naturellement compte de ta suggestion.

    @+,

    Cincap

  4. #4
    Membre éprouvé
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Par défaut
    La question est : est-ce que passé en string est vraiment ce que tu veux faire?
    en effet il me semble que avec ton code un screenHeight de 8 par exemple sera plus grand que 767 car tu fais la comparaison en ayant converti en chaine de caractère (il me semble que dans ce cas la comparaison est faite entre les 1er caractères des deux chaines puis sur les 2e ... du coup '8' > '767' car '8' > '7')

    Il me semble plus normal que tu ais cb5.Enabled := (screen.height<767);

    dans le cas ou tu veux vraiment faire une comparaison entre deux chaines de caractères je veux bien en connaitre l'explication

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 582
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 582
    Par défaut
    @ tenpigs, en fait je détecte la résolution de l'écran actif, dans mon cas je suis en 1024 x 768, mon application s'affiche en entier, mon checkBox ne doit pas être enabled puisqu'il sert uniquement à diminuer la hauteur de ma fiche dans le cas d'un écran ayant une résolution de 1024 x 600 (petit notebook) car dans ce cas, forcément mon application ne s'affiche pas en entier.

    Dans mes essais, j'utilisais un Tedit ou un Tlabel pour inscrire la valeur de 767.

    Maintenant tu as aussi raison puisque ton code fonctionne.

    @+,

    Cincap

  6. #6
    Membre éprouvé
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Par défaut
    Je voulais juste attirer ton attention sur le fait que si tu fait des inttostr() la comparaison sera une comparaison de type alphabétique (donc '8' > '750' comme 'z'>'aspirateur') pour que 8<750 il faut que tu compare deux valeurs numériques (en l'occurence screen.height et 767 sont de type integer et sont déjà des valeurs numériques).

  7. #7
    Membre Expert
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Par défaut
    effectivement, rien ne sert de convertir en chaine, surtout que cela invalide la comparaison, Delphi n'interpretant en rien les chaines représentant des valeurs numérique.

    donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cb5.Enabled := screen.height < 768;
    puisque la résolution N x 767 n'existe pas.
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 582
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 582
    Par défaut
    @ Dr.Who, en effet dans ce cas, mais comme mes essais se faisait à partir d'un TLabel et d'un TEdit, integer et string provoquait une erreur.

    Maintenant en utilisant directement votre code, cela semble fonctionner.

    Merci à vous pour ce complément d'infos.

    @+,

    Cincap

  9. #9
    Membre Expert
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Par défaut
    ah oui d'accord je vois, alors, juste pour info, quand tu as une chaine (label, edit etc) tu peux faire ces combinaisons :

    chaine et chiffre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if TryStrToInt(EditN.Text {string}, V {integer}) then
      B {Boolean} := V < 768
    else
      B := false;
    ou, chaine et chaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if TryStrToInt(EditN.Text, eV) and TryStrToInt(LabelN.Caption, lV) then
      B := eV < lV
    else
      B := false;
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 582
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 582
    Par défaut
    @ Dr.Who, merci pour l'info et bien entendu pour ta présence active sur ce forum.

    @+,

    Cincap

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

Discussions similaires

  1. Proposition d'embauche : correct ou non
    Par 4R416N33² dans le forum Salaires
    Réponses: 9
    Dernier message: 30/04/2009, 10h04
  2. Réponses: 3
    Dernier message: 03/08/2007, 07h36
  3. Réponses: 5
    Dernier message: 21/07/2007, 09h20
  4. [10] Erreur 523 : Condition de groupe non valide
    Par Oncle_Pete dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 06/06/2007, 12h17
  5. Validation CSS correcte ou non ?
    Par mascotte_alex dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 18/04/2007, 02h53

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