ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

Forum AtoutFox : Re: Chaînes de caractères: Une chaîne est la suite de la précédente ?   

Sujet

rss Flux RSS des derniers messages

Vous devez vous identifier pour pouvoir poser une question ou répondre.

dim. 10 décembre 2017, 06h22
eddymaue
atoutfox.public.association

Re: Chaînes de caractères: Une chaîne est la suite de la précédente ?

#define vrai .t.
#define faux .f.

Declare serie(4)
serie(1) = "v125ba"
serie(2) = "v125bb"
serie(3) = "v125bc"
serie(4) = "v125bf"

? 'serie(2) '
IF TestSerie(serie(1),serie(2))
?? 'suit '
Else
?? 'ne suit pas '
endif
?? 'serie(1)'

? 'serie(4) '
IF TestSerie(serie(3),serie(4))
?? 'suit '
Else
?? 'ne suit pas '
endif
?? 'serie(3)'




Procedure testSerie(s1,s2)

Local lcAlphaMin, lcAlphaMaj,lcNum1, lcAphaNum
lcAlphaMin = 'abcdefghijklmnopqrstuvwxyz'
lcAlphaMaj = Upper(m.lcAlphaMin)
lcNum1 = '0123456789'
lcNum2 = '1234567890'

* un jeu de caractère s'offre
* et je vais me résumer à un choix
*Set Step On
m.lcAphaNum = m.lcNum1 + m.lcAlphaMin &&
'0123456789abcdefghijklmnopqrstuvwxyz'

success = .t.

DO CASE
CASE Len(s1) # Len(s2)
* "cette serie ne peut se suivre"
success = faux
Case left(s1,Len(s1)-1) # left(s2,Len(s2)-1)
* "cette serie ne se suivre"
success = faux
Otherwise
* autrement il ne reste qu'a comparer le dernier caractere
c1 = Substr(s1,Len(s1),1)
c2 = Substr(s2,Len(s2),1)

* compare la position de c1 dans la liste m.lcAphaNum
* a la position de c2 dans cette meme liste
If At(c1,m.lcAphaNum) = At(c2,m.lcAphaNum)-1
Else
success = faux
EndIf

Return success
ENDCASE




eddymaue a exposé le 2017-12-10 :
> il ne répond qu'en partie... trier la série soumise...

> question :

> est-ce que cette série comporte toujours le meme nombre de caractere ?

> si c'es le cas pourquoi faire compliquer

> de "v125ba" à "v125bb"

> voila


#define vrai .t.
#define faux .f.

Declare serie(4)
serie(1) = "v125ba"
serie(2) = "v125bb"
serie(3) = "v125bc"
serie(4) = "v125bf"

'serie(2) '
IF TestSerie(serie(1),serie(2))
?? 'suit '
Else
?? 'ne suit pas '
endif
?? 'serie(1)'

'serie(4) '
IF TestSerie(serie(3),serie(4))
?? 'suit '
Else
?? 'ne suit pas '
endif
?? 'serie(3)'

Procedure testSerie(s1,s2)

Local lcAlphaMin, lcAlphaMaj,lcNum1, lcAphaNum
lcAlphaMin = 'abcdefghijklmnopqrstuvwxyz'
lcAlphaMaj = Upper(m.lcAlphaMin)
lcNum1 = '0123456789'
lcNum2 = '1234567890'

* un jeu de caractère s'offre
* et je vais me résumer à un choix

*Set Step On

m.lcAphaNum = m.lcNum1 + m.lcAlphaMin &&
'
0123456789abcdefghijklmnopqrstuvwxyz'

success = .t.

DO CASE
CASE Len(s1) # Len(s2)
* "cette serie ne peut se suivre"

success = faux
Case left(s1,Len(s1)-1) # left(s2,Len(s2)-1)
* "cette serie ne se suivre"

succes = faux
Otherwise
* autrement il ne reste qu'a comparer le dernier caractere

c1 = Substr(s1,Len(s1),1)
c2 = Substr(s2,Len(s2),1)

* compare la position de c1 dans la liste m.lcAphaNum
* a la position de c2 dans cette meme liste

If At(c1,m.lcAphaNum) = At(c2,m.lcAphaNum)-1
Else
success = faux
EndIf

Return success
ENDCASE




> Après mûre réflexion, Marc Thivolle a écrit :
>> Eddy,

>> Si je comprends bien ton code tu proposes une méthode "simple" pour trier
>> des valeurs alphanumériques. Une autre solution, tout aussi simple, est
>> d'alimenter un tableau à une dimension et d'utiliser ensuite la fonction
>> ASCAN().

>> La question de départ est : "comment savoir si deux numéros de série ne
>> sont séparés que d'une unité". C'est du moins comme cela que je l'ai
>> interprétée. Et ton code ne répond absolument pas à cette question.

>> Mais comme dit le vieux renard : "Le compréhensible peut se réaliser si
>> l'on a tout simplement pris le temps d''analyser l’incompréhensible."

--
a+ Eddy
L'incompréhensible se réalise toujour avant le compréhensible parce que
tout simplement on ne l'a pas encore assimilé
Permalink : http://www.atoutfox.org/nntp.asp?ID=0000018670
20 088 messages dans le forum • Liste complète des messages

Publicité

Les pubs en cours :

www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2024.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0-SP2-HF3