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 �clair� Avatar de aliwassem
    Inscrit en
    Janvier 2004
    Messages
    293
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 293
    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 Expert

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    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 �clair� Avatar de aliwassem
    Inscrit en
    Janvier 2004
    Messages
    293
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 293
    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 Expert

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    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 Expert

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    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 �clair� Avatar de aliwassem
    Inscrit en
    Janvier 2004
    Messages
    293
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 293
    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 Expert

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    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
    Membre Expert

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    D�tails du profil
    Informations personnelles :
    �ge : 47
    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
    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 �clair� Avatar de aliwassem
    Inscrit en
    Janvier 2004
    Messages
    293
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 293
    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