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 :

Formater un AnsiString


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Invit�(e)
    Invit�(e)
    Par d�faut Formater un AnsiString
    salut a tous!

    encore un petit problem que je n'arrive pas a resoudre!
    j'ai un ansistring au format 00023.xyz et je voudrais pouvoir l'incrementer par exemple 00024.xyz.

    mais je probleme c'est que je n'arrive pas a recuperer le format en 000xx.xxx! Comment faire?

    le truc important a savoir c'est qu'il n'est pas toujours sous la meme forme!
    je vous donne plusieurs exemple de ce que je peux recuperer:
    021.xyz , 0001.xyz, 0123546.xyz.....

    si qq a une astuce, se serait cool de m'aider!

  2. #2
    Membre chevronn�


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par d�faut
    Bonjour,

    pourquoi ne pas extraire les 2 parties de ta cha�ne (en utilisant les m�thodes AnsiPos pour la recherche de la position du caract�re '.' et SubString pour l'extraction) ? Il te suffirait d'incr�menter ta partie num�rique et de reconstituer ta cha�ne.

    Cordialement

    Eric

  3. #3
    Invit�(e)
    Invit�(e)
    Par d�faut
    merci de ta reponse!
    mais c'est pas ce truc qui m'embete!
    c'est qd j'ai recupere 0023 si j'incremente je recupere 24!
    comment faire pour recuperer le 0 ou 00 ou 000 ?
    pour recuperer 0024 ou 00024 suivant les cas!

    exemple si je commence avec 00150.xyz faut que je recupere 00008.xyz
    ou 486.xyz faut que je recupere 002.xyz!

  4. #4
    Membre chevronn�


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par d�faut
    Excuse moi, je n'avais pas fait attention � cela.

    Voici ce que je peux te proposer :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
       AnsiString ancien = "00099.re";
       int l1 = ancien.Length();
       int j = ancien.AnsiPos(".");
       AnsiString nouveau = ancien.SubString(j,l1-j+1);
       int temp = 1 + StrToInt(ancien.SubString(0,j-1));
       nouveau = IntToStr(temp) + nouveau;
       int l2 = nouveau.Length();
       for(int i = 0; i< l1-l2; i++) // on complète avec les 0 pour avoir la même taille de chaîne
       {
          nouveau = "0" + nouveau;
       }
    Tu remarqueras que cela fonctionne pour un cas 'sp�cial' comme 99.

    En esp�rant que cela te convienne.

    Eric

  5. #5
    Invit�(e)
    Invit�(e)
    Par d�faut
    merci Ricky81!

    c'est une bonne solution!
    je pensais qu'il y avait une fonction qui fait cela!
    je me souviens avant ss DOS on pouvais formater un texte d'une maniere bien specifique!

    je ne ferme pas le tag! au cas ou qq pourrais me confirmer le contraire!

    en tout cas ton code marche a merveille!

  6. #6
    Membre chevronn�


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par d�faut
    Salut,

    voila peut-�tre quelquechose de mieux :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
       AnsiString ancien = "00099.re";
       int l1 = ancien.Length();
       int j =  ancien.AnsiPos(".") - 1;
       AnsiString nouveau = ancien.SubString(j+1,l1-j);
       TVarRec args[3] = {j,1 + StrToInt(ancien.SubString(0,j)),nouveau} ;
       nouveau = Format("%0.*d%s",args,2);
    Cela repose sur la m�thode Format pour laquelle tu trouveras des renseignements dans l'aide. Peut-�tre que tu trouveras quelquechose d'encore plus efficace.

    Bon courage

    Eric

  7. #7
    Invit�(e)
    Invit�(e)
    Par d�faut
    yes, prefere cette solution!

    encore merci pour ton aide Ricky81!

Discussions similaires

  1. [VB6] [Flexgrid] Format d'affichage des numériques
    Par yansolo dans le forum VB 6 et ant�rieur
    R�ponses: 5
    Dernier message: 19/10/2002, 21h00
  2. convertir un nom long (win32) en format dos (8+3)
    Par kylekiller dans le forum Langage
    R�ponses: 2
    Dernier message: 30/08/2002, 13h34
  3. Format d'un exe pour DOS et pour Windows
    Par Alfhiger dans le forum Assembleur
    R�ponses: 4
    Dernier message: 12/06/2002, 11h57
  4. lire une image au format RAW
    Par Anonymous dans le forum OpenGL
    R�ponses: 5
    Dernier message: 20/05/2002, 00h11
  5. R�ponses: 3
    Dernier message: 06/05/2002, 18h24

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