• Advertisement

Comparer Chaine de Caracteres

Tout ce qui concerne la version 11 & plus récentes de windev

**Windev est une marque déposée de Pcsoft**

Comparer Chaine de Caracteres

Messagepar rourke » Sam Oct 15, 2011 6:53 am

Bonjour

Je cherche un moyen de comparer rapidement deux chaines de caractères et récupérer le nombre de différences. (un peu comme le mastermind - bon et bien placé)

je dois comparer beaucoup de chaine. La comparaison caractères par caractères ralenti énormément le programme.

peut être avez vous une solution .....

par exemple :
chaines1 = 02rez45e
chaines2 = 03rez45
retour 2

Merci par avance

Rourke
rourke
Nouveau Membre
 
Messages: 3
Inscription: Sam Oct 15, 2011 6:42 am

Advertisement

Re: Comparer Chaine de Caracteres

Messagepar Samifred » Sam Oct 15, 2011 8:42 am

Bonjour,

Quel code ou algo utilisez-vous actuellement comme comparateur ?
Cordialement, en espérant que ma collaboration soit profitable. Fred Image
PS: Il est important d'indiquer, dans la question, la version WD utilisée.
Note: Pas de question par MP, merci.
Avatar de l’utilisateur
Samifred
 
Messages: 3550
Inscription: Sam Nov 26, 2005 12:16 pm
Localisation: 128.0.0.0

Re: Comparer Chaine de Caracteres

Messagepar emidev » Sam Oct 15, 2011 10:51 am

bonjour,

voir l'aide de chaineCompare
une erreur peut s'avérer exacte ! il suffit que celui qui la commise se soit trompé...

Bon dev
@+

Firetox
http://www.Emidev.fr

[PS] je ne repond pas au message privé[/PS]
emidev
Membre Confirmé
 
Messages: 622
Inscription: Lun Nov 16, 2009 10:05 am
Localisation: GRENOBLE

Re: Comparer Chaine de Caracteres

Messagepar rourke » Ven Fév 17, 2012 9:17 am

Bonjour

Je reviens sur mon souci quelques moi plus tard .....

Merci pour vos reponses.

Si j'ai bien lu (et j'espere bien compris), la fonction Chainecompare renvoie -1 ou 0 ou 1 mais pas le nombre de difference.

Je souhaite recuperer le nombre de difference entre les deux chaines.

En vous remerciant encore

Rourke
rourke
Nouveau Membre
 
Messages: 3
Inscription: Sam Oct 15, 2011 6:42 am

Re: Comparer Chaine de Caracteres

Messagepar emidev » Ven Fév 17, 2012 12:07 pm

Bonjour,

voici une procédure qui fait cela et qui est rapide
elle renvoie le nombre de caractères en différence entre les 2 chaines
Code: Tout sélectionner
PROCEDURE Difference2chaines(LOCAL _szSt1 est une chaîne,LOCAL _szSt2 est une chaîne)

// compare le nombre de caractères en différence mais aussi par rapport a leur place
// renvoie le nombre de caractères pas a leur place ou différent

lLongStr1       est un entier
ct             est un entier
lLongStr2       est un entier
lReponse       est un entier

// variables locale pour traitement des 2 parametres et eviter de les modifier
szStr1          est une chaîne = " "+_szSt1
szStr2          est une chaîne = " "+_szSt2

// recuperation de la taille des 2 parametres envoyés
lLongStr1= Taille(szStr1)
lLongStr2= Taille(szStr2)

// on regarde combien de cracteres sont différents en comprarant la place et le caractere
DMatrix est un tableau de lLongStr1 par lLongStr2 entier   
POUR i = 2 A lLongStr1
   DMatrix[i, 1] = i-1
   POUR j = 2 A lLongStr2
      DMatrix[1, j] = j-1
      ct = szStr1[[i]] = szStr2[[j]] ? 0 SINON 1
      DMatrix[i,j] = Min((DMatrix[i,j-1]+1),( DMatrix[i-1,j]+1),(DMatrix[i-1,j-1]+ct))
   FIN
FIN
lReponse =  DMatrix[lLongStr1,lLongStr2]

// renvoie de la valeur
RENVOYER lReponse


a tester car j'ai enlever des modifications specifiques au traitment
et voir si plus rapide (pour mes traitement cela n'a pas d'importance)

pour l'utilisation
nb est un entier = Difference2chaines(MachaineNumero1, maChainenumero2)
une erreur peut s'avérer exacte ! il suffit que celui qui la commise se soit trompé...

Bon dev
@+

Firetox
http://www.Emidev.fr

[PS] je ne repond pas au message privé[/PS]
emidev
Membre Confirmé
 
Messages: 622
Inscription: Lun Nov 16, 2009 10:05 am
Localisation: GRENOBLE

Re: Comparer Chaine de Caracteres

Messagepar rourke » Ven Fév 17, 2012 8:18 pm

Merci beaucoup

je vais tester cela et vous tiens au courant

encore merci

Rourke
rourke
Nouveau Membre
 
Messages: 3
Inscription: Sam Oct 15, 2011 6:42 am

Re: Comparer Chaine de Caracteres

Messagepar wd55 » Mar Mai 08, 2012 12:39 pm

Bonjour à tous,

Salut Emidev,
Je viens de tester ton code.
Pas mal, mais je ne comprends pas bien cette ligne :
ct = szStr1[[i]] = szStr2[[j]] ? 0 SINON 1

et le résultat étant faux je pense qu'il s'agit d'une erreur de frappe.
Peux-tu me confirmer ?
Merci
wd55
Membre
 
Messages: 63
Inscription: Lun Aoû 22, 2011 1:24 pm

Re: Comparer Chaine de Caracteres

Messagepar Daniel-Québec » Mar Mai 08, 2012 1:16 pm

Bonjour,

Emidev a quitté ce forum.

Daniel.
Avatar de l’utilisateur
Daniel-Québec
Membre Confirmé
 
Messages: 833
Inscription: Mer Sep 10, 2008 2:24 pm
Localisation: Saint-Luc-de-Bellechasse (Qc)

Re: Comparer Chaine de Caracteres

Messagepar wd55 » Mar Mai 08, 2012 2:23 pm

Suis-je bête ?
Merci Daniel de me remettre en phase.
Pour ceux que ça branche :
Il faut faire
si szStr1[[i]] = szStr2[[j]]
ct=0
sinon
ct=1
fin
wd55
Membre
 
Messages: 63
Inscription: Lun Aoû 22, 2011 1:24 pm



  • Advertisement

Retourner vers Forum windev 11 & plus récentes

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités