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 :

array byte string hexadecimal


Sujet :

Delphi

  1. #1
    Membre émérite
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    991
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 991
    Par défaut array byte string hexadecimal
    bonjour, je suis un peu perdu j'ai une valeur hexa FE FD 00 que je transforme en string pour la transmettre avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function HexToString(H: String): String;
    var I : Integer;
    begin
      Result:= '';
      for I := 1 to length (H) div 2 do
        Result:= Result+Char(StrToInt('$'+Copy(H,(I-1)*2+1,2)));
    end;
    ce que je cherche a faire c'est d'envoyer un array of byte avec ma valeur hexa et c'est la que je coince hexa byte quelqu'un peut m'expliquer?
    0X00 EN hexa c'est null en byte je trouve pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.Button1Click(Sender: TObject);
    var
      t: array of Byte;
    Begin
      SetLength(t, 3);
      t[0] := 0xFE;
      t[1] := 0xFD;
      t[2] := 0x00;
    end;
    merci d'avance pour votre aide

  2. #2
    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
    mes deux fonctions magique :

    http://www.developpez.net/forums/d86...e/#post4930922


    la syntaxe 0xnn c'est en C, en delphi un nombre en representation hexa c'est $nn
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    C -> Delphi
    0xFF -> $FF
    0x00 -> $00
    0xFFFE00 -> $FFFE00

    si tu n'as que 3 ou 4 octets à transmettre tu peut ecrire un paquet :

    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
      TPacket = packed record
        case integer of
          0: (kLL, kLH, kHL, kHH: byte);
          1: (kLong : LongWord);
          2: (kArray : array[0..3] of byte);
      end;
     
    begin
      Packet.kLL := 1;
      Packet.kLH := 2;
      Packet.kHL := 3;
      Packet.kHH := 4;
     
      Packet.kLong := $04030201;
     
      for N := 0 to 3 do
        Packet.kArray[N] := N + 1;
     
      Send(@Packet, SizeOf(TPacket));
      Send(@Packet, 3); // send kLL, kLH, kHL or kArray[0..2]
      Send(@Packet, 2); // send kLL, kLH or kArray[0..1]
      Send(@Packet, 1); // send kLL or kArray[0]
    [ 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!

  3. #3
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 055
    Par défaut
    Euh, BinToHex et HexToBin, c'est par défaut en Delphi ...

    Ici un code pour éliminer espace et casse, cela écrit dans un fichier mais une fois HexaBuffer buffer obtenu, on peut en faire ce que l'on veut !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Membre émérite
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    991
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 991
    Par défaut
    merci à vous, sa fonctionne comme sa

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    type
      TIdBytes = array of Byte;
    var
      t:TIdBytes;
    begin
        SetLength(t, 4);
        t[0] := $FE;
        t[1] := $FD;
        t[2] := $00;
        t[3] := $43;
    ...
    par contre j'arrive pas a créer une constante de ce type, la c'est bon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      t: array[0..4] of Byte                       = ($FF, $FF, $FF, $FF, $02);
    mais pour le type TIdBytes je trouve pas

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 055
    Par défaut
    Normal, c'est un type dynamique, tu ne peux pas initialisé ce type de tableau !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Membre émérite
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    991
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 991
    Par défaut
    donc du coup a l'initialization de l'unité je remplis mes var avec mes constantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    const
      GSQ_GAMESPY2: Array[0..9] Of Byte = ($FE, $FD, $00, $04, $05, $06, $07, $FF, $FF, $00); 
    var
      GSQ_GAMESPY2_IdB:        TIdBytes;
     
    ....
    begin
      For I := Low(GSQ_GAMESPY2) To High(GSQ_GAMESPY2) Do
        GSQ_GAMESPY2_IdB[I] := GSQ_GAMESPY2[I];
    end;
    sa fait bricolage sa non, en tout cas sa fonctionne bien merci à vous j'ai tous passé avec des buffer de byte plutot que des string qui fonctionne sur 1 serveur sur 2

  7. #7
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 055
    Par défaut
    Pour faire encore plus bricolage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    begin
      SetLength(GSQ_GAMESPY2_IdB, Length(GSQ_GAMESPY2);
      CopyMemory(@GSQ_GAMESPY2_IdB[0], @GSQ_GAMESPY2, SizeOf(GSQ_GAMESPY2));
    end;
    Cela fonction parce que c'est des Bytes !

    J'ai déjà eu aussi le besoin d'avoir un tableau dynamique qui selon un paramètre prenait une constante différente, au final, je suis passé via un Pointeur ... j'avais au début essayé de jouer avec la mémoire, mais très très mal, voir Tableau Dynamique pointant sur Tableau Statiques mais avec la dernière remarque de Montor pour l'Affectation à nil avec Transtypage en Pointeur, mon idée farfelu est viable !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

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

Discussions similaires

  1. [D6] Conversion Array of String en String
    Par wizdom dans le forum Delphi
    Réponses: 2
    Dernier message: 23/05/2006, 17h01
  2. [FreePascal] Array of string
    Par w0lf dans le forum Free Pascal
    Réponses: 3
    Dernier message: 21/01/2006, 18h46
  3. Conversion byte [] -> String
    Par MiJack dans le forum Langage
    Réponses: 3
    Dernier message: 20/10/2005, 18h16
  4. [CONVERSION] String -> HEXADECIMAL ...
    Par tripop dans le forum Langage
    Réponses: 9
    Dernier message: 13/01/2005, 09h42
  5. TStringList en array of string
    Par JediKerian dans le forum Langage
    Réponses: 2
    Dernier message: 20/03/2003, 15h37

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