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

  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