Forums Développement Multimédia

Aller au contenu

[résolu] :  Eliminer doublon

Director

3 réponses à ce sujet

#1 dga

    Ceinture Blanche

  • Members
  • Pip
  • 5 messages

Posté 15 July 2010 - 14:33 PM

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 donnes 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
  • PipPipPipPipPipPipPipPip
  • 1260 messages

Posté 15 July 2010 - 15:35 PM

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
  • Pip
  • 5 messages

Posté 15 July 2010 - 16:44 PM

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

#4 glurp

    Modérateur

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1260 messages

Posté 15 July 2010 - 16:58 PM

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


global gGrandRepertoireModeles

on enterframe me

   -- le champ texte "f_text_1" contient toutes les donnes 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

FFP