salut Yannick, maintenant  que tout le monde a compris que je suis chiant, je 
vais une nouvelle fois ajouté  une pierre à mon édifice ..
Sachant l'étendue de ma paresse, je pensais que  tu allais faire juste une 
fonction  qui remplacerait tes 4 fonction !
Int Function match (string sText, string sPattern, int blGlobal, int 
blIgnoreCase, int blMultiline,
object ByRef dico)

;ton code

return dico.count

endFunction

comme tu vois,

j'ai ajouté

object ByRef dico

qui permet de retrouver le résultat

et la fonction renvoie finalement la taille du dico

avec toute les versions  de jaws cela fonctionnne .

et pour récupérer selon la position :

dico.item ("1")

à la limite  tu pourrais juste renvoyer le dico,

puisque au finale, il n'y a que 2 méthode à connaitre  pour celui qui utilisera 
le code:

count et item

mais  bon,je comprends qu'il y en a certains qui préfère avoir plusieurs 
fonctions, et d'autre avoir une fonction avec plus de paramètre .

mais bon, moi, j'en ajoute un seul !








  ----- Original Message -----
  From: Yannick Youalé
  To: [email protected] ; JawsScript
  Sent: Monday, May 12, 2014 12:59 PM
  Subject: [progliste] Re: JawsScript- Fonction de recherche de texte utilisant 
les expressions régulières PCRE


  Coucou homonyme !

  C'est fait !

  Comme le roi Salomon, j'ai coupé le bébé en deux. Bon il ne l'a pas vraiment 
fait, mais ça c'est un autre débat.

  Je propose ci-dessous trois nouvelles fonctions, en plus de la première 
envoyée. Il s'agit de :

  * RegCount pour compter le nombre d'occurences;

  * RegSearch pour trouver la ènième occurence;

  * et RegSearchToDictionary pour envoyer les occurences trouvées dans un objet 
dictionary.

  Voici les fonctions

  Début du code JawsScript

  Int Function RegCount (string sText, string sPattern, int blGlobal, int 
blIgnoreCase, int blMultiline)

  ; Recherche avec regexp

  ; renvoi le nombre d'occurence trouvées par le pattern.

  var

  int i,

  object reg,

  object found

  ; création d'un objet regexp des expressions régulières

  let reg = CreateObjectEx ("vbscript.regexp", false)

  ; la recherche est-elle globale ?

  if blGlobal > 0 then

  let reg.Global = -1 ; équivaut à true

  else

  let reg.Global = 0 ; équivaut à false

  EndIf

  ; la recherche ignore-t-elle la cass ?

  if blIgnoreCase > 0 then

  let reg.IgnoreCase = -1

  else

  let reg.IgnoreCase = 0

  EndIf

  ; La recherche est-elle multiligne ?

  if blMultiline > 0 then

  let reg.Multiline = -1

  else

  let reg.Multiline = 0

  EndIf

  ; Assignation du pattern de l'expression régulière (PCRE)

  let reg.Pattern = sPattern

  ; exécution de la recherche

  let found = reg.Execute(sText)

  ; renvoi du nombre d'occurence

  let i = found.Count

  return i

  EndFunction


  String Function RegSearch (string sText, string sPattern, int iReturn, int 
blGlobal, int blIgnoreCase, int blMultiline)

  ; Recherche avec regexp

  ; renvoi le nombre d'occurence trouvées par le pattern.

  var

  String s,

  object reg,

  object found

  ; création d'un objet regexp des expressions régulières

  let reg = CreateObjectEx ("vbscript.regexp", false)

  ; la recherche est-elle globale ?

  if blGlobal > 0 then

  let reg.Global = -1 ; équivaut à true

  else

  let reg.Global = 0 ; équivaut à false

  EndIf

  ; la recherche ignore-t-elle la cass ?

  if blIgnoreCase > 0 then

  let reg.IgnoreCase = -1

  else

  let reg.IgnoreCase = 0

  EndIf

  ; La recherche est-elle multiligne ?

  if blMultiline > 0 then

  let reg.Multiline = -1

  else

  let reg.Multiline = 0

  EndIf

  ; Assignation du pattern de l'expression régulière (PCRE)

  let reg.Pattern = sPattern

  ; exécution de la recherche

  let found = reg.Execute(sText)

  ; on trouve l'occurence à la position donnée

  let s = FormatString("%1", found(iReturn-1).Value)

  ; renvoi

  return s

  ; return found(iReturn-1).Value

  EndFunction



  Object Function RegSearchToDictionary (string sText, string sPattern, int 
blGlobal, int blIgnoreCase, int blMultiline)

  ; Recherche avec regexp

  ; et renvoi les occurences trouvées dans un objet dictionary

  var

  int i,

  object dict,

  object reg,

  object found

  ; création d'un objet dictionary

  let dict = CreateObjectEX ("scripting.dictionary",0)

  ; création d'un objet regexp des expressions régulières

  let reg = CreateObjectEx ("vbscript.regexp", false)

  ; la recherche est-elle globale ?

  if blGlobal > 0 then

  let reg.Global = -1 ; équivaut à true

  else

  let reg.Global = 0 ; équivaut à false

  EndIf

  ; la recherche ignore-t-elle la cass ?

  if blIgnoreCase > 0 then

  let reg.IgnoreCase = -1

  else

  let reg.IgnoreCase = 0

  EndIf

  ; La recherche est-elle multiligne ?

  if blMultiline > 0 then

  let reg.Multiline = -1

  else

  let reg.Multiline = 0

  EndIf

  ; Assignation du pattern de l'expression régulière (PCRE)

  let reg.Pattern = sPattern

  ; exécution de la recherche

  let found = reg.Execute(sText)

  ; transfert des occurences dans l'objet dictionary

  if found.Count > 0 then

  let i = 1

  While(i<=found.count)

  dict.add (i, found(i-1).Value)

  let i = i+1 ; incrémentation

  EndWhile

  EndIf

  ; renvoi

  return dict

  EndFunction



  Int Function RegTest (string sText, string sPattern, int blGlobal, int 
blIgnoreCase, int blMultiline)

  ; Recherche avec regexp

  ; renvoi true si le pattern est trouvé dans le texte donné.

  var

  int i,

  object reg

  ; création d'un objet regexp des expressions régulières

  let reg = CreateObjectEx ("vbscript.regexp", false)

  ; la recherche est-elle globale ?

  if blGlobal > 0 then

  let reg.Global = -1 ; équivaut à true

  else

  let reg.Global = 0 ; équivaut à false

  EndIf

  ; la recherche ignore-t-elle la cass ?

  if blIgnoreCase > 0 then

  let reg.IgnoreCase = -1

  else

  let reg.IgnoreCase = 0

  EndIf

  ; La recherche est-elle multiligne ?

  if blMultiline > 0 then

  let reg.Multiline = -1

  else

  let reg.Multiline = 0

  EndIf

  ; Assignation du pattern de l'expression régulière (PCRE)

  let reg.Pattern = sPattern

  ; recherche si présence et renvoi de résultat

  if reg.Test (sText) == -1 then

  return true

  else

  return false

  EndIf

  EndFunction



  Fin du code JawsScript

  Bon faut que je retourne au boulot !


  Yannick Daniel Youalé




    ----- Original Message -----
    From: yannick<
    To: [email protected]
    Sent: Monday, May 12, 2014 10:44 AM
    Subject: [progliste] Re: JawsScript- Fonction de recherche de texte 
utilisant les expressions régulières PCRE


    oh malheureux ,
    il ne faut jamais posé la question :
    "Selon toi, ça te plairait ? "
    parce que sur les listes de discussion,il y a bien plus de gens pour te 
décourager
    que de te donner envie de continuer !
    cela m'interesse ...
    mais  au sujet des colections,  inutil de te casser la tête,
    tu pourrais dans n'importe quelle version de jaws uti`liser un activex 
adéquat .
    tu pourrais peut être utiliser l'objet dictionary ..
    et la fonction retournerais cette objet ..
    en guise de clé, tu utiliserais une numérotation ..
    ce que j'ai dans ma cave :
    Scripting.Dictionary
    Ajoute une paire clé/élément à un objet Dictionary
    option Explicit
    dim  dico
    set dico = createObject ("Scripting.Dictionary")
    dico.add "ville","paris"
    count
    Renvoie le nombre d'éléments d'un objet Dictionary
    option Explicit
    dim  dico, Clef
    set dico = createObject ("Scripting.Dictionary")
    dico.add "ville","paris"
    dico.add "pays","France"
    dico.add "rue","arnaudVidal"
    msgBox dico.Count
    item
    Définit ou renvoie un élément pour un argument key spécifié dans un objet 
Dictionary
    renvoie la valeur d'une clé
    option Explicit
    dim dico, i
    set dico = createObject ("Scripting.Dictionary")
    dico.add "ville","paris"
    dico.add "rue","arnaud vidal"
    dico.add "numero","33"
    msgBox dico.item ("ville")
    'affiche paris
    dico.item ("ville")="Toulouse"
    ' change la valeur de ville
    on peut aussi ajouter une nouvelle clé :
    dico.item ("nom")="yannick"
    msgBox dico.item ("nom")


    msgBox dico.item ("ville")



    option Explicit
    dim  dico, Clef , text
    set dico = createObject ("Scripting.Dictionary")
    dico.add "ville","paris"
    dico.add "pays","France"
    dico.add "rue","arnaudVidal"
    dico.item ("ville")="toulouse"
    msgBox dico.item ("ville")




    .....
    add,,CompareMode,Count,,Exists,Item,Items,Key,Keys,,Remove,RemoveAll












      ----- Original Message -----
      From: Yannick Youalé
      To: [email protected]
      Sent: Monday, May 12, 2014 10:54 AM
      Subject: [progliste] Re: JawsScript- Fonction de recherche de texte 
utilisant les expressions régulières PCRE


      Salut homonyme !

      Début de citation

      pourquoi n'avoir pas renvoyé tout simplement la chaine retrouvé ?

      Fin de citation

      Cette fonction appelée RegTest est simplement une fonction de test de la 
présence d'un pattern dans une chaîne.

      S'il avait fallut faire une fonction qui renvoi une occurence trouvée 
dans la chaîne à fouiller, la question qu'il faudrait alors se poser ce serait 
quelle occurence ? Etant donnée que plusieurs occurences peuvent être présente.

      Si le JawsScript prenait en charge les tableau ou les collection dans 
toutes ses versions, j'aurais pû renvoyer soit un tableau soit une collection 
par une telle fonction, mais ce n'est pas le cas. Et beaucoup peuvent alors se 
retrouver lésés.

      Autre possibilité cependant, ce serait dans un premier temps de faire:

      * une fonction RegCount qui renvoi le nombre d'occurence d'un pattern 
dans une chaîne;

      * et ensuite une fonction RegSearch dans laquelle on peut indiquer le 
numéro de l'occurence à renvoyer.

      Ce qui pourrait donner un code comme ceci:

      Début du code JawsScript

      var
      string s,
      string sText,
      int i,
      int icount

      ; création de la chaîne dans laquelle faire la recherche
      let sText = "chaine contenant plusieurs fois la lettre a"
      ; recherche du nombre d'occurence de a dans sText
      let icount = RegCount(sText, "a", true, true, true)
      ; parcours de chaque occurence trouvée dans une boucle
      let i = 1
      While (i<=icount)
      ; on capte l'occurence courante
      let s = RegSearch(sText, "a", i, true, true, true)
      ; puis, on fait ce qu'on veut de l'occurence renvoyée

      let i = i+1 ; incrémentation du compteur d'occurence
      EndWhile

      Fin du code JawsScript

      Je rappelle que toutes les fonctions utilisées n'existent pas encore, et 
sont là juste pour évoquer une possibilité.

      Tout ceci n'est pas un modèle d'optimisation, mais peut très bien se 
concevoir et se faire.

      Selon toi, ça te plairait ?

      Tu m'as forcé à y réfléchir, et ça me tente bien de m'y lancer.

      Yannick Daniel Youalé






        ----- Original Message -----
        From: yannick<
        To: [email protected]
        Sent: Monday, May 12, 2014 9:03 AM
        Subject: [progliste] Re: JawsScript- Fonction de recherche de texte 
utilisant les expressions régulières PCRE


        salut Yannick,
        et bien dis  donc, moi aussi j'ai aussi le nez dans les reg exp ..
        désolé, je n'ai pas encore lu en profondeur ou testé, mais
        a priori j'aurais une petite question :
        pourquoi n'avoir pas renvoyé tout simplement la chaine retrouvé ?
        peut être que ce n'est pas faisable, je ne sais pas ....
        tu aurais mis la variable text par référence ....

          ----- Original Message -----
          From: Yannick Youalé
          To: [email protected] ; JawsScript
          Sent: Monday, May 12, 2014 9:44 AM
          Subject: [progliste] JawsScript- Fonction de recherche de texte 
utilisant les expressions régulières PCRE


          Salut à tous !

          J'en avais donné les principes ici il y a quelques temps.

          Aujourd'hui, voici une fonction toute faite de recherche de la 
présence d'une chaîne dans une autre utilisant les expressions régulières.

          Début du code JawsScript

          Int Function RegTest (string sText, string sPattern, int blGlobal, 
int blIgnoreCase, int blMultiline)
          ; Recherche avec regexp
          ; renvoi true si le pattern est trouvé dans le texte donné.
          var
          int i,
          object reg

          ; création d'un objet regexp des expressions régulières
          let reg = CreateObjectEx ("vbscript.regexp", false)
          ; la recherche est-elle globale ?
          if blGlobal > 0 then
          let reg.Global = -1 ; équivaut à true
          else
          let reg.Global = 0 ; équivaut à false
          EndIf
          ; la recherche ignore-t-elle la cass ?
          if blIgnoreCase > 0 then
          let reg.IgnoreCase = -1
          else
          let reg.IgnoreCase = 0
          EndIf
          ; La recherche est-elle multiligne ?
          if blMultiline > 0 then
          let reg.Multiline = -1
          else
          let reg.Multiline = 0
          EndIf
          ; Assignation du pattern de l'expression régulière (PCRE)
          let reg.Pattern = sPattern
          ; recherche si présence et renvoi de résultat
          if  reg.Test (sText) == -1 then
          return true
          else
          return false
          EndIf
          EndFunction

          Fin du code JawsScript

          Chez moi, je l'ai créée pour l'intégrer dans un script de recherche 
rapide à l'intérieur d'un dossier contenant un grand nombre d'éléments.

          Amicalement !

          Yannick Daniel Youalé




------------------------------------------------------------------------
                Ce courrier électronique ne contient aucun virus ou logiciel 
malveillant parce que la protection Antivirus avast! est active.






----------------------------------------------------------------------------
            Ce courrier électronique ne contient aucun virus ou logiciel 
malveillant parce que la protection Antivirus avast! est active.




---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce 
que la protection avast! Antivirus est active.
http://www.avast.com

Répondre à