Aller au contenu


[résolu] :  Eliminer doublon


  • Vous ne pouvez pas répondre à ce sujet
3 réponses à ce sujet

#1 dga

    Ceinture Blanche

  • Members
  • 5 messages

Posté 15 juillet 2010 - 01:33

Bonjour, simple pour certains et hard pour d'autres...bref

je désire éliminer les doublons mais n'y arrive pas


global gGrandRepertoireModeles

on enterframe me

-- le champ texte "f_text_1" contient toutes les données sources qui servent à constituer les listes

set gGrandRepertoireModeles = list()
repeat with c = 1 to member("f_text_1").linecount

-- je ne veux pour l'instant que 1(un) item par ligne de ce champ pour ma liste
gGrandRepertoireModeles.add(item 2 of line c of field "f_text_1")
    end repeat
    gGrandRepertoireModeles.sort()

-- ensuite je compare...mais cela ne fonctionne pas bien
set dd = gGrandRepertoireModeles.count
  repeat with d = dd to 1
    if gGrandRepertoireModeles.getAt(d) <> item 2 of line d of field "f_text_1" then
    put gGrandRepertoireModeles.getAt(d) into line d of field "f_MaListeFinale"
end if
end repeat


Merci pour l'aide.

#2 glurp

    Modérateur

  • Moderateur
  • 1 249 messages

Posté 15 juillet 2010 - 02:35

Bonjour dga,

Il y a plus facile pour repérer un élément dans une liste : getOne()

Tu pourrais donc directement dans la première boucle vérifier qu'il n'existe pas déjà le même élément dans la liste avant de l'ajouter ;)

#3 dga

    Ceinture Blanche

  • Members
  • 5 messages

Posté 15 juillet 2010 - 03:44

Je débute...peux-tu svp me donner un exemple. Merci.

#4 glurp

    Modérateur

  • Moderateur
  • 1 249 messages

Posté 15 juillet 2010 - 03:58

Et bien si je reprends ton code, ça ressemblerait à ceci :


global gGrandRepertoireModeles

on enterframe me

   -- le champ texte "f_text_1" contient toutes les données sources qui servent à constituer les listes

   gGrandRepertoireModeles = []
   tNbLines = member("f_text_1").line.count
   repeat with c = 1 to tNbLines

      -- je ne veux pour l instant que 1(un) item par ligne de ce champ pour ma liste
      tValue = member("f_text_1").line[c].item[2]
      if gGrandRepertoireModeles.getOne(tValue) = 0 then
         gGrandRepertoireModeles.add(tValue )
      end if

   end repeat

   gGrandRepertoireModeles.sort()

 

C'est plus simple, non ?

Note que j'ai remplacé la "vieille" syntaxe que tu utilisais par la syntaxe en point (le verbose, c'est lourd :P).
J'ai aussi utilisé une variable pour spécifier le nombre de lignes du textes, parce que sinon le processeur perd du temps à chaque fois pour refaire le calcul ;)

Attention que j'ai écrit ce code directement sur le forum, je ne l'ai donc pas testé sous Director (je précise si jamais il y a des fautes de frappe).





1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS - Tel. 0826 466 613 - Fax. 01 72 70 31 38

FFP