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 :

Est ce que je peux utiliser Bit1:=mavar[1]


Sujet :

Langage Delphi

  1. #1
    Membre habitué Avatar de aliwassem
    Inscrit en
    Janvier 2004
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 293
    Points : 157
    Points
    157
    Par défaut Est ce que je peux utiliser Bit1:=mavar[1]


    j'ai une variable de type string[8]....

    comment je peux donner un nom pour chaque bit de ces variables

    par example

    Bit1 := mavariable[1];
    .
    .
    .
    Bit8 := mavariable[8];

    alors je veux utiliser les noms Bit1..... Bit8 au lieu d'utiliser mavariable[1]..

    est ce que je peux faire ca dans la declaration des variables et ce n'est dans une Function ou Procedure..

    d'avance

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    c'est un peu confus ce que vous voulez faire mais bon. Déjà il faudrait savoir si vous voulez récupérer les bit ou les octets de la chaîne (1 octet = 8 bits) néanmoins je pense qu'il y a confusion de voter part avec le mot anglais byte (octet) donc je vais partir du principe que vous voulez récupérer les octets de la chaîne.

    En fait pour ça il suffit de déclarer 8 variables de type Char et faire des Char1 := mavariable[1]; ... Char8 := mavariable[8];

  3. #3
    Membre habitué Avatar de aliwassem
    Inscrit en
    Janvier 2004
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 293
    Points : 157
    Points
    157
    Par défaut
    Citation Envoyé par Aka Guymelef Voir le message
    Bonjour,

    c'est un peu confus ce que vous voulez faire mais bon. Déjà il faudrait savoir si vous voulez récupérer les bit ou les octets de la chaîne (1 octet = 8 bits) néanmoins je pense qu'il y a confusion de voter part avec le mot anglais byte (octet) donc je vais partir du principe que vous voulez récupérer les octets de la chaîne.

    En fait pour ça il suffit de déclarer 8 variables de type Char et faire des Char1 := mavariable[1]; ... Char8 := mavariable[8];


    pour ma variable moi j'utilise des valeurs binaire comme 11001100 et je le sauvgarder dans ma variable...

    alors comme vous avez dit est ce que je peut declarer ca dans la partie des variable au debut de l'unit...

    encore

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Oui c'est possible à faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    interface
     
    var
      Car1: Char;
      Car2: Char;
      Car3: Char;
      Car4: Char;
      Car5: Char;
      Car6: Char;
      Car7: Char;
      Car8: Char;
    Néanmoins j'avoue que je comprend de moins en moins le but mais bon...

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    Si tu veux travailler avec des valeurs binaires, pourquoi ne pas le faire comme tout le monde, en utilisant des masques et des opérateurs bit à bit ? Un truc du genre :

    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
    18
    19
    function BitValue(const AByte: Byte; const ABitNum: Byte): Byte;
    var
      LMask: Byte;
    begin
      Result := 0;
      LMask := 1;
      if ABitNum > 0 then
        LMask := LMask shl ABitNum;
      if (AByte and LMask) > 0 then
        Result := 1;
    end;
     
    procedure TForm4.Button1Click(Sender: TObject);
    var
      X: Byte;
    begin
      X := $2;
      MessageDlg(Format('Le troisième bit vaut %d', [BitValue(X, 2)]), mtWarning, [mbOK], 0);
    end;

  6. #6
    Membre habitué Avatar de aliwassem
    Inscrit en
    Janvier 2004
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 293
    Points : 157
    Points
    157
    Par défaut


    je suis desole peut etre mal explique mais voila ce que j'utilise comme code et je veux une autre chose

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    type   REGISTRES = String[8];
     
    var  
      OPTION :REGISTRES;
      APDU,CSEL,IRQE,DLY,CME,CR1,CR0 : String[1];
     
    implementation
    {$R *.dfm}
    procedure TForm1.Bit();
    begin
    APDU := OPTION[1];
    CSEL := OPTION[2];
    IRQE := OPTION[3];
    DLY  := OPTION[4];
    CME  := OPTION[5];
    CR1  := OPTION[7];
    CR0  := OPTION[8];
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    OPTION:= Edit1.Text; // ex.  =10010101
    Bit;
    ShowMessage(CSEL); // resultat = 0 
    end;
    alors ici comme vous voyez j'utilise un Procedure est ce que je peux declarer ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    APDU := OPTION[1];
    CSEL := OPTION[2];
    IRQE := OPTION[3];
    DLY  := OPTION[4];
    CME  := OPTION[5];
    CR1  := OPTION[7];
    CR0  := OPTION[8];
    avec les variables au lieu de le mettre dans un procedure

    d'avance

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Désolé mais je ne comprends vraiment pas où tu veux en venir exactement mais je vais quand même essayer quelque chose :

    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
    18
    19
    20
    21
    22
    23
    interface
     
    var
      APDU,CSEL,IRQE,DLY,CME,CR1,CR0 : Char;
     
    implementation
     
    procedure ExplodeBit( AStr: String );
    begin
      APDU := AStr[1];
      CSEL := AStr[2];
      IRQE := AStr[3];
      DLY  := AStr[4];
      CME  := AStr[5];
      CR1  := AStr[7];
      CR0  := AStr[8];
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ExplodeBit( Edit1.Text ); // ex.  =10010101
      ShowMessage(CSEL); // resultat = 0 
    end;

  8. #8
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 173
    Points
    4 173
    Par défaut
    Je vois ce que tu veux faire.

    Je peux te proposer deux solutions s'en approchant, sans être tout à fait ce que tu veux non plus :

    Solution 1 :
    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
    18
    19
    20
    21
    22
    23
     
    type rec = packed record
             len : byte; // Les SortString commencent pas un octet qui indique la longueur de la chaine.
             APDU : char;
             CSEL : char;
             IRQE : char;
             DLY : char;
             CME : char;
             option6 : char; 
             CR1 : char;
             CR0 : char;
          end;
     
          REGISTRES = String[8];
     
    var 
      OPTIONS : REGISTRES;
      Reg : rec absolute OPTIONS;
     
    begin
      // Maintenant, si on affecte options, ça modifie également la variable Reg car les deux variables sont logées à la même adresse mémoire !
      options := '12345678'; // Ici on écrit options comme une chaine.
      // On a aussitot :  Reg.APDU = '1', Reg.CSEL = '2', ...
    Le principe de cette solution, c'est de dire que les deux variables OPTIONS et Reg se trouvent physiquement à la même adresse mémoire (ce qui revient à dire que c'est la même variable, avec un nom et un type différent).


    Autre solution qui revient un peu au même :
    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
    18
    19
    20
    21
    22
    23
    24
     
    type
      REGISTERS = record
         case integer of
      0 : (All : string[8];);
      1 : (Len : byte;
            APDU : char;
            CSEL : char;
            IRQE : char;
            DLY : char;
            CME : char;
            option6 : char; 
            CR1 : char;
            CR0 : char;)
        end;                    
     
    var
      OPTIONS : REGISTERS;
     
    begin
      // Maintenant on a deux façon de manipuler OPTIONS :
      OPTIONS.All := '12345678';
     
      // Ca a le même effet : on a maintenant OPTIONS.ADPU = '1', OPTIONS.CSEL ='2' ....
    EDIT:
    Tiens encore une autre en utilisant bêtement des pointeurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var
      options : string[8];
      APDU : pchar = @options[1];
      CSEL : pchar = @options[2];
      IRQE : pchar = @options[3];
      DLY : pchar = @options[4];
      CME : pchar = @options[5];
      CR1 : pchar = @options[7];
      CR0 : pchar = @options[8];
    De cette façon, tu dois pouvoir manipuler APDU, CSEL... directement, comme s'il s'agissait de simple CHAR grace à la gestion automatique des pointeurs de Delphi.

  9. #9
    Membre habitué Avatar de aliwassem
    Inscrit en
    Janvier 2004
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 293
    Points : 157
    Points
    157
    Par défaut
    beaucoup pour tous et a vous Franck SORIANO


    exactement qu'est ce que je vous...


    encore

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

Discussions similaires

  1. est ce que je peux utilise step de rechercher dans mon cas?
    Par helene0618 dans le forum kettle/PDI
    Réponses: 2
    Dernier message: 04/05/2009, 09h42
  2. Est-ce que je peux utiliser des WebForm ?
    Par twitty20 dans le forum ASP.NET
    Réponses: 10
    Dernier message: 09/01/2008, 18h16
  3. Est-ce que je peux utiliser certain symbole dans le nom de dossier
    Par pierrot10 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 24/09/2007, 20h45
  4. Est-ce que je peux utiliser les mêmes variables pour javascript et PHP?
    Par sparil dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 01/07/2007, 13h23
  5. Réponses: 2
    Dernier message: 06/04/2006, 17h44

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