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 :

Sortie format� continue


Sujet :

C++Builder

  1. #1
    Membre confirm�
    Homme Profil pro
    Administrateur syst�mes et r�seaux
    Inscrit en
    Novembre 2007
    Messages
    128
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Administrateur syst�mes et r�seaux
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 128
    Par d�faut Sortie format� continue
    Salut,

    Je voudrait une sortie avec toujours exactement le m�me nombre de caract�re. J'ai se bout de code pour commancer :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    String ligne;
    ...
    ligne="8010000"+IntToStr(nannee)+IntToStr(nmois);
    Maleureusement nmois contient le mois qui est donc sur 1 ou 2 chiffre, je voudrait donc que ligne conti�ne par exemple :
    en f�vrier "80100002008 2" et en octobre "8010000200810".

  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

  3. #3
    Membre confirm�
    Homme Profil pro
    Administrateur syst�mes et r�seaux
    Inscrit en
    Novembre 2007
    Messages
    128
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Administrateur syst�mes et r�seaux
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 128
    Par d�faut
    Merci pour ta r�ponse, mais sa ne marche pas.
    Ces fonctions son faite pour les float, je ne trouve pas leur similaire en int...

  4. #4
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    Si �a passe pour les float, �a passe aussi pour le int, vu que le float est plus grand que le int

  5. #5
    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

  6. #6
    Membre confirm�
    Homme Profil pro
    Administrateur syst�mes et r�seaux
    Inscrit en
    Novembre 2007
    Messages
    128
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Administrateur syst�mes et r�seaux
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 128
    Par d�faut
    Je vien de retester, la fonction marche (m�me si set bizar d'utilliser FloatToStrF pour convertire un int...)
    J'ai tester comme sa :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    ligne="8010000"+IntToStr(nannee)+FloatToStrF(nmois, ffFixed , 2, 0);
    Mais sa ne fait pas se que je veux.
    Je veux juste que � la place d'afficher "2" il affiche " 2" (ESPACE2), mais qu'il puis afficher aussi "10"

  7. #7
    Membre �clair� Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    AnsiString asTmp;
     
    if(  (nmois > 0) &&  (nmois < 10) )
    {
         asTmp = " " + IntToStr(nmois);
    }
    else
        asTmp = IntToStr(nmois);
     
    ligne="8010000"+IntToStr(nannee)+asTmp;
    cordialement Baxter

  8. #8
    Membre confirm�
    Homme Profil pro
    Administrateur syst�mes et r�seaux
    Inscrit en
    Novembre 2007
    Messages
    128
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Administrateur syst�mes et r�seaux
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 128
    Par d�faut
    Merci Baxter67, j'avais penser � cette solution; mais elle ne convien pas � la suite de mon programme (ou allor de facon forte lourde): apres le mois, je vais devoire m�tre des temp�rature, je vais avoire donc de 1 � 3 chifffre, avec par fois des valleur n�gative.
    Je doit enfaite avoire, par exemple, sa au final :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    "80201032002 11    -8    -5    10    12   125"

  9. #9
    Membre �clair� Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Par d�faut
    C'est pour un affichage dans quoi comme tyde de composant ?

    Memo ? Label ? RichEdit?

    Cordialement Baxter

  10. #10
    Membre confirm�
    Homme Profil pro
    Administrateur syst�mes et r�seaux
    Inscrit en
    Novembre 2007
    Messages
    128
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Administrateur syst�mes et r�seaux
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 128
    Par d�faut
    En voila un peut plus sur le contexte :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    TStringList *Fichier = new TStringList();
    String ligne,file;
    int nannee, nmois;
     
    ...
     
    Fichier->LoadFromFile(file);
     ligne="8010000"+IntToStr(nannee)+IntToStr(nmois);   //doit encore rajouter les vaiable avec les température quand le mois marchera
     ShowMessage(ligne);  //pour tester doit disparaitre
     Fichier->Add(ligne);
     Fichier->SaveToFile(file);
    Le but est donc de m�tre celle ligne dans un fichier text.

    Je suis obliger de respecte de facon stricle la structure du fichier, car ce fichier sera lut par un programme qui existe d�jat (et don je n'ai pas les source)

  11. #11
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 412
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 412
    Par d�faut
    Salut !

    Il faudrait sans doute demander � un sp�cialiste du stdio !
    Je pense qu'avec printf, strcat ... (�a a du �tre format� avec) donc on serait plus dans le langage C (bien que...)

    Par contre, avec BCB, le formatage reste possible � l'aide d'AnsiString !
    Il faudrait savoir si on proc�de par concat�nations syst�matiques (donc on formaterait l'ensemble) et si on se donne de quoi modifier juste un champ...

    Ca peut effectivement para�tre lourd, mais en fait, ici on se place plus du cot� concepteur que du cot� utilisateur donc on a le droit de faire ce que l'on veut et comme on le veut ! On risque m�me de d�velopper une classe qui sera tr�s sympa � utiliser !

    Si tu peux en dire plus sur la nature des champs...

    A plus !

  12. #12
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 412
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 412
    Par d�faut
    Salut !

    Sinon, on peut remplir par la gauche :

    Pour le mois :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    Ansistring N = IntToStr(Mois);
    if(N.Length() == 1) N = "0" + N;
    Ligne = Ligne + N;
    Pour d'autres valeurs, on suppose par exemple de -999 � 999.
    On a donc un champ de 5 caract�res : 1 s�parateur + 4 caract�res max

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    Ansistring N = IntToStr(Valeur);
    while(N.Length() < 5) N = " " + N;
    Ligne = Ligne + N;
    A plus !

  13. #13
    Membre confirm�
    Homme Profil pro
    Administrateur syst�mes et r�seaux
    Inscrit en
    Novembre 2007
    Messages
    128
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Administrateur syst�mes et r�seaux
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 128
    Par d�faut
    Merci henderson, j'ai trouver se qu'il me faliat dans ton 2�me post.

    j'ai cr�e une petite fonction :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    String __fastcall TForm1::IntToStrF(int v, int l)
    {
     String N = IntToStr(v);
     while(N.Length() < l) N = " " + N;
     return N;
    }
    Se qui fait que je n'ai plus qu'� l'appeler dans ma ligne :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    ligne="8010000"+IntToStr(nannee)+IntToStrF(nmois,2);
    Sa marche super.

    Encore merci.

  14. #14
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    159
    D�tails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2007
    Messages : 159
    Par d�faut
    Bonjour,

    Je me permets d'ajouter mon commentaire :
    Ton probl�me est simplement de formater ton entier sur une largeur fixe, cadr� � droite avec un espace �ventuellement � gauche, si j'ai bien compris.

    Voici ce que j'ai essay� :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    	String c = " " + IntToStr(nmois);
    	String d = c.SubString(c.Length()-2,2);
    Si nmois vaut 3 alors d vaut " 3",
    Si nmois vaut 10 alors d vaut "10".
    Et tu pourras donc ajouter d � ta ligne sans probl�me de cadrage de la suite de l'enregistrement.

    Cordialement,
    Marc

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Salaire sortie formation DI AFPA (BAC+2) ?
    Par TSalm dans le forum Etudes
    R�ponses: 23
    Dernier message: 01/07/2009, 19h13
  2. Formation continue pour non d�veloppeurs
    Par SophieD dans le forum Access
    R�ponses: 2
    Dernier message: 14/06/2007, 20h44
  3. R�ponses: 1
    Dernier message: 30/05/2007, 11h55
  4. R�ponses: 2
    Dernier message: 29/01/2007, 12h38
  5. Cherche Formation continue diplomante
    Par McTavish dans le forum Etudes
    R�ponses: 4
    Dernier message: 24/10/2006, 21h52

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