Page 1 sur 1

Une petite fonction CompareString

Publié : sam. 11/févr./2012 16:41
par MLD
Il est quelque fois bien utile de comparer deux chaines. En natif ce serait le pied. :lol:

Re: Une petite fonction CompareString

Publié : sam. 11/févr./2012 18:35
par dayvid
Explique toi stp :)

Re: Une petite fonction CompareString

Publié : dim. 12/févr./2012 14:54
par MLD
@David
Tu ne comprends pas se que veut dire le mot compare! 8O
chaine1$ = "A"
chaine2$ ="A"
CompareString(chaine1,chaine2$) Résultat 0 c'est pareil
chaine1$ = "A"
chaine2$ ="B"
CompareString(chaine1,chaine2$) Résultat 1 c'est pas pareil
toi yen a compris :mrgreen:

Re: Une petite fonction CompareString

Publié : dim. 12/févr./2012 14:57
par dayvid
:lol: Si je sais ce que cella voulais dire, je comprenais pas le reste lol
ça > En natif ce serait le pied

Re: Une petite fonction CompareString

Publié : dim. 12/févr./2012 15:01
par kernadec

Re: Une petite fonction CompareString

Publié : dim. 12/févr./2012 15:54
par lepiaf31
heu mais ptite question débile:

Code : Tout sélectionner

a$ = "abcd"
b$ = "abcd"
if a$ = b$
...
endif
Ca ne suffit pas ? ^^

Re: Une petite fonction CompareString

Publié : dim. 12/févr./2012 16:21
par dayvid
Mouais :?

Re: Une petite fonction CompareString

Publié : dim. 12/févr./2012 17:56
par Ar-S
L’intérêt d'une procédure dans ce cas précis est de pouvoir pousser la comparaison.
Sinon un if a$<>b$ suffit effectivement :)

Code : Tout sélectionner

Procedure.s CompareString(StringA.s,StringB.s,ModeCompare = 1)
  Shared ReZult.s
  #COMP_Basic = 1
  #COMP_Lenght = 2
  
  If ModeCompare <1 Or ModeCompare >2
    ProcedureReturn "Erreur de mode"
  EndIf
  
  Select ModeCompare
       
     
      
    Case #COMP_Basic
      If StringA = StringB
        ReZult = "Identique"
      Else
        ReZult = StringA +" <> "+ StringB
      EndIf
      
    Case #COMP_Lenght
      LA = Len(StringA)
      LB = Len(StringB)
      
      If LA > LB
        ReZult = StringA + " > " + StringB
      ElseIf LB > LA
        ReZult = StringB + " > " + StringA
      ElseIf LA = LB
        If StringA = StringB
          ReZult = "Identique"
        Else
          ReZult = "Longueur identique mais mots différents"
        EndIf

      EndIf
      
  EndSelect
  
  ProcedureReturn ReZult
  
EndProcedure

Debug "test 1"
Debug CompareString("Toto","Tutu" , #COMP_Basic)

Debug "test 2"
Debug CompareString("Toto","Tutu" , #COMP_Lenght)

Debug "test 3"
Debug CompareString("Toto","Toto" , #COMP_Basic)

Debug "test 4"
Debug CompareString("Toto","Toto" , #COMP_Lenght)
On pourrait ajouter plein d'autres Flag comme #COMP_Case pour montrer que les 2 termes sont identiques mais pas la Case etc...

Re: Une petite fonction CompareString

Publié : dim. 12/févr./2012 19:37
par nico
Il y a déjà CompareMemoryString qui existe, vois pas l'utilité d'un code!

Re: Une petite fonction CompareString

Publié : lun. 13/févr./2012 8:43
par MLD
Rien de plus a ajouter
@nico la doc indique pour programmeurs expérimentés seulement :wink:
Bonne journée a tous

Re: Une petite fonction CompareString

Publié : jeu. 16/févr./2012 17:01
par Guimauve
MLD a écrit :@nico la doc indique pour programmeurs expérimentés seulement :wink:
Et parce que c'est indiqué pour programmeurs expérimentés, on touche pas ?

Je vous dirais : Arrêter d'essayé de faire de la programmation et faite-le ! Arrêter d'être des amateurs et soyez des pros.

A+
Guimauve

Re: Une petite fonction CompareString

Publié : jeu. 16/févr./2012 20:36
par dayvid
:)

Complètement d'accord avec toi !

Re: Une petite fonction CompareString

Publié : ven. 24/févr./2012 9:38
par MLD
@ Guimauve
Je ne parlais pas pour moi. Mais pourquoi faire simple quand on peut faire compliquer :mrgreen: