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, 06h21
eddymaue
atoutfox.public.association

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

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