Emandhal
Messages postés194Date d'inscriptiondimanche 2 mars 2003StatutMembreDernière intervention10 octobre 20063 2 nov. 2004 à 12:30
alvaro :
Ton code est plus rapide que le miens, c'est vrai. Mais elle a pas du tout le même comportement que la mienne.
Le fait que j'ai utilisé le '/' me permet de pouvoir me servir de cette fonction autrepart que dans une recherche de fichier, et ça j'en avais besoin.
jerimanea :
Tu as tout a fait compris le principe, mais spécifier un ordre (??* par exemple) n'aurait pas changé beaucoup le code je pense, donc j'ai laissé comme ça :)
Pour la recherche en spécifiant les caractères, j'y ai pensé, et je travaille sur une version quand même plus précise (permet de ne pas spécifier caractères par caractères). J'avais vu une source pascal l'utilisant mais le code m'a pas plus et elle était lente alors je vais refaire la mienne :)
Merci des ces remarques interessantes.
cs_alvaro
Messages postés6Date d'inscriptionvendredi 18 avril 2003StatutMembreDernière intervention 3 mars 2011 31 oct. 2004 à 22:40
Je pense que ce type de recherche évolulée, n'est pas notre objectif. En tout cas pour moi.
Par contre une recherche syntaxique très poussée, est possible avec les expressions régulière du php!
Le php est un langage serveur internet, et je m'etone que vous n'ayez pas trouvé de site permettant une telle recherche syntaxique en ligne.
jerimanea
Messages postés1Date d'inscriptiondimanche 31 octobre 2004StatutMembreDernière intervention31 octobre 2004 31 oct. 2004 à 14:52
Bonjour,
Si je peux me permettre de faire quelques remarques par rapport à votre description (je vous précise que je n'ai pas de pratique en codage) :
-on peut dire que "? " intervient en tant que quantificateur de nombre de caractères
-"*", dans ce que vous avez fait, signifierait plutôt :
-la chaîne a un nombre quelconque de caractères, quand il n'est pas utilisé avec "?"
-la chaîne a un nombre de caractères > ou au nombre de "?", quand il est utilisé avec "?".
> en tous cas, c'est très pertinent d'utiliser la combinaison * et ? .
-pourquoi ne pas définir une structure unique quand le "*" vient en complément de "?"
par exemple, le "?" toujours en 1er, le "*" en second, ce qui donnerait :
?* : la chaîne doit faire au moins 1 caractère
???* : la chaîne doit faire au moins 3 caractères
Je ne vois pas dans votre description les recherches suivantes :
-recherche sur la présence d'un caractère pouvant prendre plusieurs valeurs. Un "?" peut prendre les valeurs a, e, i, o ([aeio])
-recherche sur l'absence d'un caractère pouvant prendre plusieurs valeurs. Un "?" ne doit pas prendre les valeurs m, n ([^ mn])
En fait, je n'invente rien, je me suis simplement référé aux résultats qu'on trouve sur le site suivant :
nb : je ne suis pas développeur, mais je recherchais ces derniers temps un site qui permette de faire de la recherche syntaxique sur un dictionnaire. Et je suis tombé sur Delphi et vos travaux via moteur de recherche.
Veuillez ne pas prendre en compte mon commentaire si vous estimez qu'ils sont déplacés. Vous avez fait du bon travail, et je ne tiens pas à vous en rajouter.
Mais peut-être le trouverez-vous intéressant et souhaiterez-vous en tenir compte.
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 15 oct. 2004 à 00:25
Les 3 formules sont :
- version avec le premier code ci-dessus
- version avec le code ASM
- fonction MatchesMask fournie avec Delphi
Emandhal
Messages postés194Date d'inscriptiondimanche 2 mars 2003StatutMembreDernière intervention10 octobre 20063 14 oct. 2004 à 21:04
Je te remercie Delphiprog.
Je voudrai savoir si c'est normal que ma modification soit encore pas appliquée? (ça fait 1h30 maintenant)
Quelle est la 3ème formule que tu veux tester?
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 14 oct. 2004 à 15:01
Je précise également que ma remarque n'enlève absolument rien à la qualité de ton code qui est un des meilleurs depuis quelques temps.
Contrairement à ce que j'ai pu lire très récemment, les commentaires facilitent bien la compréhension et la maintenance.
Du travail de pro : 10/10.
Je vais procéder à des tests unitaires (avec Dunit) et je vous tiens au courant des performances respectives des trois formules proposées. Que le meilleur gagne !
Emandhal
Messages postés194Date d'inscriptiondimanche 2 mars 2003StatutMembreDernière intervention10 octobre 20063 14 oct. 2004 à 14:45
Je ne savais pas pour la fonction de l'unité Masks (J'ai du mal faire mes recherche sur ce sujet).
Je me suis lancé dans une rapide comparaison histoire de savoir si j'ai perdu mon temps (ou pas) et/ou valoriser ma fonction (Oui des fois je cherche les points forts) :)
La fonction MatchesMask permet plus de choses que la mienne, c'est un fait. Il y a quand même un point que j'aimerai soulever : la vitesse
Oui bon je dois passer mon un maniac de la rapidité, mais j'avais besoin de quelquechose de très rapide et là ma fonction surpasse très largement celle fourni par Delphi.
Dans l'aide de Delphi il est bien stipulé en remarque que la function MatchesMask ne s'applique pas forcément qu'au traitement de fichier. La mienne non plus.
Je suis donc assez soulage de ne pas avoir fait ça pour rien. La prochaine fois j'essaierai de mieux chercher au cas où ;o)
Je te remercie Delphiprog pour cette remarque pertinente.
Cet exemple de code que j'ai fait peut servir d'exemple à l'utilisation des PChar et de la récurcivité.
S'il y en a un qui a un code plus performant je ne suis pas contre son étude pour améliorer mon codage :)
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 14 oct. 2004 à 12:39
Delphi fournit, dans l'unité Masks, une fonction très performante qui se nomme MatchesMask et qui remplit la même fonction que le code ci-dessus :
function MatchesMask(const Filename, Mask: string): Boolean
Contrairement à ce que l'on pourrait croire, cette fonction n'est absolument pas réservée au traitement des noms de fichiers.
J'ai déjà eu l'occasion, à plusieurs reprises de parler de cette fonction sur le forum.
Dommage pour Emandhal...mais c'était un bon exercice quand même. ;o)
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 13 oct. 2004 à 19:05
J' ai fait la meme fonction mais sans les points d' interrogation. Je regarderai mieux le code demain!
taye78
Messages postés106Date d'inscriptionmardi 18 juin 2002StatutMembreDernière intervention13 janvier 2007 13 oct. 2004 à 17:15
2 nov. 2004 à 12:30
Ton code est plus rapide que le miens, c'est vrai. Mais elle a pas du tout le même comportement que la mienne.
Le fait que j'ai utilisé le '/' me permet de pouvoir me servir de cette fonction autrepart que dans une recherche de fichier, et ça j'en avais besoin.
jerimanea :
Tu as tout a fait compris le principe, mais spécifier un ordre (??* par exemple) n'aurait pas changé beaucoup le code je pense, donc j'ai laissé comme ça :)
Pour la recherche en spécifiant les caractères, j'y ai pensé, et je travaille sur une version quand même plus précise (permet de ne pas spécifier caractères par caractères). J'avais vu une source pascal l'utilisant mais le code m'a pas plus et elle était lente alors je vais refaire la mienne :)
Merci des ces remarques interessantes.
31 oct. 2004 à 22:40
Par contre une recherche syntaxique très poussée, est possible avec les expressions régulière du php!
cf (ecrit en php justement)
http://www.commentcamarche.net/php/phpreg.php3
Le php est un langage serveur internet, et je m'etone que vous n'ayez pas trouvé de site permettant une telle recherche syntaxique en ligne.
31 oct. 2004 à 14:52
Si je peux me permettre de faire quelques remarques par rapport à votre description (je vous précise que je n'ai pas de pratique en codage) :
-on peut dire que "? " intervient en tant que quantificateur de nombre de caractères
-"*", dans ce que vous avez fait, signifierait plutôt :
-la chaîne a un nombre quelconque de caractères, quand il n'est pas utilisé avec "?"
-la chaîne a un nombre de caractères > ou au nombre de "?", quand il est utilisé avec "?".
> en tous cas, c'est très pertinent d'utiliser la combinaison * et ? .
-pourquoi ne pas définir une structure unique quand le "*" vient en complément de "?"
par exemple, le "?" toujours en 1er, le "*" en second, ce qui donnerait :
?* : la chaîne doit faire au moins 1 caractère
???* : la chaîne doit faire au moins 3 caractères
Je ne vois pas dans votre description les recherches suivantes :
-recherche sur la présence d'un caractère pouvant prendre plusieurs valeurs. Un "?" peut prendre les valeurs a, e, i, o ([aeio])
-recherche sur l'absence d'un caractère pouvant prendre plusieurs valeurs. Un "?" ne doit pas prendre les valeurs m, n ([^ mn])
En fait, je n'invente rien, je me suis simplement référé aux résultats qu'on trouve sur le site suivant :
http://www.montefiore.ulg.ac.be/~bronne/pivot/trucs.html
Cordialement
nb : je ne suis pas développeur, mais je recherchais ces derniers temps un site qui permette de faire de la recherche syntaxique sur un dictionnaire. Et je suis tombé sur Delphi et vos travaux via moteur de recherche.
Veuillez ne pas prendre en compte mon commentaire si vous estimez qu'ils sont déplacés. Vous avez fait du bon travail, et je ne tiens pas à vous en rajouter.
Mais peut-être le trouverez-vous intéressant et souhaiterez-vous en tenir compte.
15 oct. 2004 à 00:25
- version avec le premier code ci-dessus
- version avec le code ASM
- fonction MatchesMask fournie avec Delphi
14 oct. 2004 à 21:04
Je voudrai savoir si c'est normal que ma modification soit encore pas appliquée? (ça fait 1h30 maintenant)
Quelle est la 3ème formule que tu veux tester?
14 oct. 2004 à 15:01
Contrairement à ce que j'ai pu lire très récemment, les commentaires facilitent bien la compréhension et la maintenance.
Du travail de pro : 10/10.
Je vais procéder à des tests unitaires (avec Dunit) et je vous tiens au courant des performances respectives des trois formules proposées. Que le meilleur gagne !
14 oct. 2004 à 14:45
Je me suis lancé dans une rapide comparaison histoire de savoir si j'ai perdu mon temps (ou pas) et/ou valoriser ma fonction (Oui des fois je cherche les points forts) :)
La fonction MatchesMask permet plus de choses que la mienne, c'est un fait. Il y a quand même un point que j'aimerai soulever : la vitesse
Oui bon je dois passer mon un maniac de la rapidité, mais j'avais besoin de quelquechose de très rapide et là ma fonction surpasse très largement celle fourni par Delphi.
Dans l'aide de Delphi il est bien stipulé en remarque que la function MatchesMask ne s'applique pas forcément qu'au traitement de fichier. La mienne non plus.
Je suis donc assez soulage de ne pas avoir fait ça pour rien. La prochaine fois j'essaierai de mieux chercher au cas où ;o)
Je te remercie Delphiprog pour cette remarque pertinente.
Cet exemple de code que j'ai fait peut servir d'exemple à l'utilisation des PChar et de la récurcivité.
S'il y en a un qui a un code plus performant je ne suis pas contre son étude pour améliorer mon codage :)
14 oct. 2004 à 12:39
function MatchesMask(const Filename, Mask: string): Boolean
Contrairement à ce que l'on pourrait croire, cette fonction n'est absolument pas réservée au traitement des noms de fichiers.
J'ai déjà eu l'occasion, à plusieurs reprises de parler de cette fonction sur le forum.
Dommage pour Emandhal...mais c'était un bon exercice quand même. ;o)
13 oct. 2004 à 19:05
13 oct. 2004 à 17:15