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

C++Builder Discussion :

Formatage données avec sprintf


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 163
    Par défaut Formatage données avec sprintf
    Bonjour,

    Je dois formater des données, en ansi string dans une variable char avec la fonction sprintf. Si les variables que j'introduit dans mon formatage son des variable entières, aucun soucis pour le formatage, tout se passe correctement. Par contre, si je lui donne des variable en AnsiString, ce n'est plus le cas, il concatène le tout mais il ne les formate pas au nombre de caractères que j'ai décidé. Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      sprintf(cInscription,"%s\tTemp:%05s\tPression:%05s\tVitesse:%05s\tHumidité:%05s\t Ensoleillement:%06s\tDirection du vent:%05s",
      asDateHeure,iTemp,iPression,iVent,iHumidite,iSoleil,iDirVent);
    Merci de votre aide et à bientôt !

  2. #2
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Si je comprend bien tu dis que tout les variables suivantes sont des AnsiString: asDateHeure, iTemp, iPression, iVent, iHumidite, iSoleil, iDirVent ???

    Si tu veux les transformer en char pour les utiliser un sprintf il faut mettre un .c_str() à la devant chacun d'eux, ex:
    Comme expliquer ici: http://cpp.developpez.com/faq/bcb/?p...es#chainescstr

  3. #3
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Si tu cherches à prendre une partie d'une AnsiString il faut utiliser SubString:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	AnsiString Original = Edit1->Text;
    	AnsiString SubOne = Original.SubString(9, 4);
    	Edit2->Text = SubOne;
    Si tu es intéressé à la manipulation d'AnsiString va voir le site Web suivant: http://www.functionx.com/bcb/topics/strings.htm

  4. #4
    Membre Expert
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par défaut
    On n'utilise plus trop la vieille fonction sprintf, on utilise plutôt Format.

    Vous montrez une instruction assez longue sans nous dire le type des variables ni celle qui pose problème. Vous devriez préciser.

    À bientôt
    Gilles

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 163
    Par défaut
    Ce sont toutes des variables AnsiString qui doivent être formatées et concatennées dans la variable char "cInscription".

    Si je lui donne une variable entière a la fonction et que le formatage est as 05 et que la valeure est 20 par exemple. Après les formatage de cette variable, j'aurais la valeure "00020". Mais avec les variables AnsiString cela ne fonctionne pas et je dois le faire ! Je ne sais pas si avec la fonction "Format" citée par Gilles cela fonctionne...

    Merci

  6. #6
    Membre Expert
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par défaut
    Vous ne pouvez pas traiter des AnsiStrings comme des entiers. Si ce sont des AnsiString, ce sera à vous d'ajouter ces zéros. Si ce sont des entiers, vous pouvez imposer un formtage avec des zéros à conditions de traiter ces données comme des entiers.

    Voici un exemple avec l'instruction Format.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    AnsiString A;
    int n1,n2,n3;
    TVarRec args[3];
     
    n1=50;
    n2=4;
    n3=1234;
    args[0] =n1;
    args[1] =n2;
    args[2] =n3;
    A=Format("%8.5d %8.5d %10.5d", args, 2);
    args contient les valeurs (c'est un tableau qui peut contenir n'importe quoi). Vous le remplissez. %8.5d indique que c'est un entier (d=décimal), 8 indique l'espace (8 caractères d'espace) et 5 le nombre de chiffres à écrire dont 20 donnera 00020. le 2 final indique le dernier indice du tableau args, il est égal au nombre de valeurs de ce tableau moins un.

    À bientôt
    Gilles

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

Discussions similaires

  1. Formatage de données dans sprintf
    Par raplapente dans le forum Débuter
    Réponses: 2
    Dernier message: 17/07/2009, 16h17
  2. formatage de données avec sprintf
    Par hunter001 dans le forum C
    Réponses: 10
    Dernier message: 18/08/2006, 08h05
  3. Modifier le nom d'une base de donnée avec erreur sy
    Par mmn dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/11/2003, 10h12
  4. PB : affichage de données avec accent sous delphi 6
    Par kinda dans le forum Débuter
    Réponses: 3
    Dernier message: 03/07/2003, 13h19
  5. Réponses: 13
    Dernier message: 20/03/2003, 08h11

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