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 :

aide pour convertir string en byte ou integer


Sujet :

Langage Delphi

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut aide pour convertir string en byte ou integer
    Bonjour,

    voilà je voudrais savoir s'il est possible de convertir des donées de type string en type Byte ou Integer.

    j'ai éssayé la fonction StrToInt mais celle ci me renvoie un message d'érreur si veux convertir un caractére différent des chiffres de 0 à 9 comme par exemple si je veux convertir la lettre A.

    est ce quelqu'un aurait une iddée de comment je pourrais procéder , merci

  2. #2
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Si tu veux convertir la chaîne Str, écrite en hexadécimal, en entier Integer, il faut utiliser StrToInt('$' + Str).

  3. #3
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 561
    Points : 3 955
    Points
    3 955
    Par défaut
    Bon tu vas rigoler mais une chaîne de caractères c'est déjà du binaire. La raison est simple, tout portion de mémoire est une suite d'octet, en particulier une chaîne de caractère. Ainsi 'ABC' qui semble être une jolie chaîne de caractères toute innocente est en fait en mémoire une redoutable suite d'octets (petits entiers de 8 bits): #$41#$42#$43#$00.

    C'est la façon dont on la traite qui fait la différence. Ton problème consiste à changer la forme d'une chaîne de caractère d'une représentation à une autre. Mon problème, pour pouvoir te répondre, est de savoir ce que tu veux comme représentation finale ?

    Si tu veux convertir un caractère en byte c'est simple, il faut employer Ord : Ord('A') retourne $41 (65 en base 10).

    En employant des pointeurs, il est possible avec Delphi pour Win32, de parcourir une chaîne de caractère vue alors comme une suite d'octets, ce qu'elle est, en fait:

    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
     
    procedure Affiche(const S: String);
    var
      PB: PByte; // Rappel PByte = ^Byte
      msg: String;
    begin
      msg := '';
      PB := PByte(PChar(S));
      while PB^ <> 0 do
      begin
        Msg := Msg + format('#$%.2x',[PB^]);
        Inc(PB);
      end;
      ShowMessage(msg);
    End;
    Si ça peut t'inspirer...

    Cdlt

  4. #4
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Salut,

    Pourquoi de pas essayer :
    integer('A') il te renverra la valeur ASCII de A, tu peux aussi faire Ord ('A')

    A+

  5. #5
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 666
    Points : 643
    Points
    643
    Par défaut
    salut
    je pense que la meilleure solution est de créer dynamiquement un tableau de byte qui a la longueur égale à celle de la chaîne. Une fois que nous avons notre tableau, nous le remplirons avec les valeurs de la chaîne, mais il y aurait certain décalage puisque la représentation ASCII du caractère "1" n'est pas équivalente à 1.
    Voici un exemple de comment on peut retourner un tableau de byte:
    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
     
       ...
    type
    //tableau dynamique de type Array de Byte
       TByteArr = array of byte;
     
       ...
    implementation
     
    function ArrOfByte(AStr: String): TByteArr;
    var
       j: integer;
    begin
       SetLength( Result, Length(AStr)) ;
       for j := 0 to Length(AStr) - 1 do
         Result[j] := ord(AStr[j + 1]) - 48;
    end;
    je ne sais pas si c'est ça que tu cherches à savoir ou si ça peut t'aider.
    A+

Discussions similaires

  1. Réponses: 6
    Dernier message: 23/06/2007, 12h29
  2. Réponses: 4
    Dernier message: 14/08/2006, 15h50
  3. Aide pour un String
    Par Kpone dans le forum Langage
    Réponses: 2
    Dernier message: 21/03/2006, 12h25
  4. Aide pour convertir le C en C++
    Par Guillaume602 dans le forum Windows
    Réponses: 2
    Dernier message: 06/02/2006, 18h35
  5. [C#] Fonction pour convertir string[] vers ArrayList
    Par luimême dans le forum Windows Forms
    Réponses: 6
    Dernier message: 07/04/2005, 13h25

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