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 :

Comment affecter un byte avec un Tbits[8] ?


Sujet :

Langage Delphi

  1. #1
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 925
    Points : 6 040
    Points
    6 040
    Par défaut Comment affecter un byte avec un Tbits[8] ?
    Tout est dans le titre...

    J'ai un tableau de 8 booléens et je souhaite que ma variable en Byte prenne la valeur correspondante.

    J'ai essayé comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
         tt:=TBits.Create;
         tt.Size:=8;
         for i:=1 to 8 do
            tt.Bits[i-1]:=TCheckBox(FindComponent('ChkBck'+IntToStr(i))).Checked;
         Move(tt,Option,1);
         tt.Free;
    mais avec aucun checkbox coché, Option ne vaut pas 0


  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Et comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var
      I: Integer;
    begin
      Option := 0;
      for I := 0 to 7 do
        if TCheckBox(FindComponent('ChkBck'+IntToStr(I + 1))).Checked then
          Option := Option + 1 shl I;
    end;
    @+ Claudius

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 831
    Points : 13 579
    Points
    13 579
    Par défaut
    Trop rapide ce Claudius

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var
      Option, i :byte;
    begin
      Option := 0;
      for i :=1 to 8 do
        inc(Option, integer(TCheckBox(FindComponent('ChkBck'+IntToStr(i))).Checked) shl (i-1));
    end;
    Move ne peut pas fonctionner. Tu copies un objet (et non son contenu) dans un byte.

  4. #4
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 925
    Points : 6 040
    Points
    6 040
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    Et comme ça ?
    Comme ça, ça marche ! Mais il me faut un Integer

    Et pour l'opération inverse ?

  5. #5
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par qi130 Voir le message
    Mais il me faut un Integer
    Pourquoi un integer, tu cherches bien à alimenter un byte avec tes 8 CheckBox ?

  6. #6
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 925
    Points : 6 040
    Points
    6 040
    Par défaut
    Certes mon ami, mais:
    - j'avais pris un byte pour coller aux 8 bits déclarés pour le TBits
    - la somme des puissances de 2 quand tout est coché fait passer le byte à 0

  7. #7
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par qi130 Voir le message
    - la somme des puissances de 2 quand tout est coché fait passer le byte à 0
    Je viens de faire un test et j'obtiens bien des valeurs comprises entre 0 et 255 !

  8. #8
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par qi130 Voir le message
    Et pour l'opération inverse ?
    J'obtiens ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    var
      I: Byte;
      bChecked: Boolean;
    begin
      for I := 0 to 7 do
      begin
        bChecked := (Option and (1 shl I) > 0);
        TCheckBox(FindComponent('CheckBox'+IntToStr(I + 1))).Checked := bChecked;
      end;
    end;

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 07/04/2008, 11h44
  2. Réponses: 3
    Dernier message: 19/04/2006, 14h28
  3. Réponses: 5
    Dernier message: 18/11/2005, 23h11
  4. [Debutant] comment creer un Executable avec Jbuilder
    Par JavaEli dans le forum JBuilder
    Réponses: 10
    Dernier message: 29/03/2004, 12h22
  5. [TChart] comment remplir un histogramme avec du rouge strié.
    Par :GREG: dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/08/2002, 10h37

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