Ajouter 1 à une chaine de caractères?

Résolu
djdiabolik Messages postés 56 Date d'inscription mardi 23 avril 2002 Statut Membre Dernière intervention 20 avril 2007 - 9 août 2006 à 12:47
djdiabolik Messages postés 56 Date d'inscription mardi 23 avril 2002 Statut Membre Dernière intervention 20 avril 2007 - 9 août 2006 à 16:00
Voilà mon problème est simple, mais plutôt que de réinventer la roue, je voudrais savoir si quelqu'un a déjà résolu ce genre de problèmatique. Si non, je ferai mon propre code...

Voici donc :

J'ai une chaine codé sur 3 caractères du type 'XXX'.
Je veux faire une fonction qui récupère en paramètre cette chaine, pour sortir la chaine qui suit dans l'ordre alphabétique.

Quelques exemples :

Entrée :'AAA', Sortie 'AAB'
Entrée 'AFA', Sortie 'AFB'
Avec ces règles de gestion quand on arrive en bout d'alphabat pour l'un des trois caractères de la chaine.
1) Si on est à Z alors on incrémente le caractère à gauche et le caractère entré à Z devient A (ex : Entrée 'AAZ', Sortie 'ABA')
1) Si on est à 'ZZZ' alors on passe à 'AAA'

Voilà, si qqn a déjà fait ceci, merci de m'indiquer une source, perso je n'en ai pas trouvé, sinon je ferai une zoli fonction pour ça.

Merci d'avance

---------------------------------------------------------------------------

Pourquoi faire simple quand on peut faire compliqué?????That is the question

2 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
9 août 2006 à 14:52
Salut,


Le code qui suit est en VB6 mais tu peux l'adapter.








Private Function GetNextChaine(StrChaine As String) As String 

'Tabelau contenant les code ascii des trois caracteres
Dim AscC(0 To 2) As Integer 
'Variable permettant de savoir si l 'on doit arreter la boucle
Dim StopBoucle As Boolean 
'Variable de boucle
Dim i As Integer 
     'Pour etre sur de travailler avec des majuscules
    StrChaine = Ucase (StrChaine)
    For i  = 1 To 3 
        'Recuperation des codes ascii des trois caractere
        AscC(i - 1) =   Asc (Mid(StrChaine, i, 1)) 
    Next 

    'Boucle en comencant du dernier code
    For i  = 2 To 0 Step -1 
        'Si on doit arreter la boucle alors on sort
        If StopBoucle Then Exit For 
        'On ajoute 1 au code ascii (lettre suivante)
        AscC(i) = AscC(i) + 1 
        'Si le code obtenu est 91 (asc("Z") + 1)
        If AscC(i) > vbKeyZ Then 
            'Le code redeviens 65 (asc("A"))
            AscC(i) = vbKeyA 
        Else 
            'Sinon on arrete la boucle car aucune autre
            'operation ne doit etre faite
            StopBoucle = True 
        End If 
    Next 

    GetNextChaine = vbNullString 

    For i = 0 To 2 
        'Reforme la chaie de sortie
        GetNextChaine = GetNextChaine & Chr(AscC(i)) 
    Next 
End Function 

 







<small> Coloration syntaxique automatique [AFCK]</small>

       















@+, Julien
Pensez:
3
djdiabolik Messages postés 56 Date d'inscription mardi 23 avril 2002 Statut Membre Dernière intervention 20 avril 2007
9 août 2006 à 16:00
Merci beaucoup pour ton aide. Je vais adapter ça vite fait bien fait pour mon application.


Je posterai quand j'aurai terminé.


 


Encore merci et à plus !


 


--------------------------------------------------------

Pourquoi faire simple quand on peut faire compliqué?????That is the question
0
Rejoignez-nous