djdiabolik
Messages postés56Date d'inscriptionmardi 23 avril 2002StatutMembreDernière intervention20 avril 2007
-
9 août 2006 à 12:47
djdiabolik
Messages postés56Date d'inscriptionmardi 23 avril 2002StatutMembreDernière intervention20 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.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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