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 :

Utilisation de la commande Format


Sujet :

Langage Delphi

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 139
    Par défaut Utilisation de la commande Format
    Bonjour à tous,
    j'utilise la commande 'Format' pour pouvoir afficher du code en hexa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    str := str + Format('%02x', [Buffer[i]]) + ' ';
    Lorsque j'ai une valeur entre 0 et 9, au lieu de m'écrire '00'..'09', il m'écrit '0'..'9'.
    Comment le forcer à mettre sur 2 chiffres ?
    Merci

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    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 089
    Par défaut
    %x ne fonctionne pas ?

    sinon, normalement, on doit lui passer un integer ... et non pas un char ... (Buffer chaine ou tableau de byte ?)
    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

  3. #3
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    Tu peux toujours ecrice ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Format('%s', [IntToHex(Ord(Buffer[i], 2))
    Autre chose : JE comprends pas pourquoi tu rajoute une chaine vide apres ?

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    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 089
    Par défaut
    il doit vouloir transformer dans une boucle '012345789' en '00 01 02 03 ...', un truc du genre

    sinon

    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

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Par défaut
    En faite, Format remplis les digits non présent par un espace
    et il te revois: ' 0'..' 9'

    utilise plutôt IntToHex()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    str := str +IntToHex(Buffer[i],2);
    À l'inverse, si tu as besoin de reconvertir un chiffre en Hex vers un integer,
    le plus simple c'est d'utiliser StrToInt de cette façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Function HexToInt(HexNum: String): LongInt;
    Begin
      Result := StrToInt('$' + HexNum);
    End;
    //== ou bien son ami... ==
    Function HexToInt64(HexNum: String): int64;
    Begin
      Result := StrToInt64('$' + HexNum);
    End;
    Bon Dev
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  6. #6
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    Sinon j'ai une petite fonction que je retranscrit de memoire ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Function IntToZeroStr(Value : Integer; Digits : Integer) : String;
    Var i : Integer;
    Begin
    REsult := IntToStr(Value);
    For i := Length(Result)+1 to Digits do
      REsult := '0'+REsult;
    End;

  7. #7
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    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 089
    Par défaut
    Voici des variantes de IntToZeroStr de Clorish

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function IntToZeroStr(Value : Integer; Digits : Integer) : String;
    begin
      Result := Format(Format('%%.%dd', [Digits]), [Value]); 
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function IntToZeroStr(Value : Integer; Digits : Integer) : String;
    begin
       Result := IntToStr(Value);
       if Length(Result) < Digits then
          Result := StringOfChar('0', Digits - Length(Result)) + Result;
    end;
    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

  8. #8
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function IntToZeroStr(Value : Integer; Digits : Integer) : String;
    begin
      Result := Format(Format('%%.%dd', [Digits]), [Value]); 
    end;
    Y sont fout chez Borland ! Y sont fout !!

  9. #9
    Expert confirmé

    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 : 35
    Localisation : Suisse

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function IntToZeroStr(Value : Integer; Digits : Integer) : String;
    begin
      Result := Format(Format('%%.%dd', [Digits]), [Value]); 
    end;
    Oserais-je dire mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function IntToStr0(Value, Digits: Integer): string;
    begin
      Result := Format('%.*d', [Digits, Value]);
    end;
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  10. #10
    Expert confirmé
    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 : 62
    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
    Par défaut
    Salut

    Je reprends la question initialement posée:

    Citation Envoyé par steph_1 Voir le message
    Bonjour à tous,
    j'utilise la commande 'Format' pour pouvoir afficher du code en hexa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    str := str + Format('%02x', [Buffer[i]]) + ' ';
    Lorsque j'ai une valeur entre 0 et 9, au lieu de m'écrire '00'..'09', il m'écrit '0'..'9'.
    Comment le forcer à mettre sur 2 chiffres ?
    Merci
    Comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      str := str + Format('%.2x', [Buffer[i]]) + ' ';
    [edit]
    Tu as également cette petite fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function ByteToHex(Value: Byte): string;
    const
      Digits: array[0..15] of char =
        ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
    begin
      Result := Digits[(Value shr 4) and $0F] + Digits[Value and $0F];
    end;

    @+ Claudius

  11. #11
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function ByteToHex(Value: Byte): string;
    const
      Digits: array[0..15] of char =
        ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
    begin
      Result := Digits[(Value shr 4) and $0F] + Digits[Value and $0F];
    end;
    Ou "comment faire compliqué quand on peut faire simple"
    marche tres bien

  12. #12
    Expert confirmé
    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 : 62
    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
    Par défaut
    Citation Envoyé par Clorish Voir le message
    Ou "comment faire compliqué quand on peut faire simple"
    Ouiiin ! Clorish il est méchant avec moi Ouiin !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    IntToHex(AByte, 2);
    Mais bon tu as raison

    @+

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

Discussions similaires

  1. Retour d'erreur avec l'utilisation de la commande For en VBS
    Par genialk2000 dans le forum VBScript
    Réponses: 3
    Dernier message: 30/03/2005, 18h45
  2. Problème avec l'utilisation de la commande system awk
    Par vbcasimir dans le forum Linux
    Réponses: 3
    Dernier message: 05/10/2004, 16h18
  3. Récupérer un fichier suite à l'utilisation de la commande rm
    Par Kimael dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 02/10/2004, 18h34
  4. Utilisation d'images au format png
    Par chtiot dans le forum Langage
    Réponses: 2
    Dernier message: 24/10/2003, 15h56
  5. [TP][Graphique]Utilisation de la commande Setviewpost
    Par repairman dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 09/07/2003, 13h26

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