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.

lun. 11 décembre 2017, 18h12
eddymaue
atoutfox.public.association

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


* regarde ce que code de t'ai fourni hier elle donne ceci
* liste alphabetique pour la position de chaque caractere
* '0123456789abcdefghijklmnopqrstuvwxyz'
* s1 = "v125ba" && 'a' est à la 11ieme position dans la chaine
* s2 = "v125bb" && 'b' est 12ieme
*
* Les questions qui se posent pour résoudre ton probleme sont les suivantes
*
* est-ce que s1 est de meme longueur que s2
* si oui
* est-ce que s1:"v125b?" = s2 :"v125b?"
* si oui
* est-ce que s1:"????a"
* est d'une position antérieure à s2:"????b"
* si oui
* success = vrai
* si non
* success = faux
* si non
* success = faux
* si non
* success = faux

* voila c'est simple
* dans la chaine de caracteres 'lcAphaNum' tu peux ajouter ce que tu veux sans modifier quoi que ce soit à la procedure TestSerie

#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
* Liste de caractere a comparer qui donne 36 position
m.lcAphaNum = m.lcNum1 + m.lcAlphaMin && '0123456789abcdefghijklmnopqrstuvwxyz'

success = .t.

DO CASE
* est-ce que s1 est de meme longueur que s2
CASE Len(s1) # Len(s2)
* "cette serie ne peut se suivre"
success = faux
* en excluant le dernier caractere de chaque serie
* les chaines sont égales
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

--
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=0000018672
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