Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2611 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Virer les doublons des combobox [erreur inside]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Virer les doublons des combobox [erreur inside]

n°566898
KrzAramis
Help Me
Posté le 14-11-2003 à 16:41:45  profilanswer
 

Salut à toutes et à tous,
 
Voila tout est dans le titre. J arrive pas à virer les doublons dans les comboboxes !
voici mon code:
 

Code :
  1. procedure TForm_Main.FilCmbBx_01(Sender: TObject;
  2.   var Key: Char);
  3. var iTag : integer;
  4.     strtemp : string;
  5.   //sub procedure that cleanse the TStrings from doubles
  6.   procedure DeleteDuplicates(TStrings_out : TStrings);
  7.   var TempList : TStrings;
  8.   begin
  9.     TempList := TStringList.Create;
  10.     try
  11.       TempList.AddStrings(TStrings_out);
  12.       TempList.Sorted := True;
  13.       TempList.Duplicates := dupIgnore;
  14.     finally
  15.       TempList.Free;
  16.     end;//try... finally
  17.   end;// deleteDuplicates
  18. begin
  19.   iTag := 0;
  20.   if ord(key) = VK_RETURN then begin
  21.     iTag := (Sender as TFillcombobox).Tag;
  22.     // modified on the 14/11/2003
  23.     DeleteDuplicates(FFillCmb[iTag].Items);
  24.     end;//if
  25. end;


 
ca suxx hard car j ai lu dans l aide que TStringList implemente une propriétée qui ignore les doublons mais ca ne marche pas la !
 
Antp HELP  :cry:  
 
 
@++


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
mood
Publicité
Posté le 14-11-2003 à 16:41:45  profilanswer
 

n°566930
antp
Super Administrateur
Champion des excuses bidons
Posté le 14-11-2003 à 17:14:11  profilanswer
 

Premier bug de ton truc : tu vires ta TempList et tu ne touches pas à TStrings_out qui n'est donc pas modifié.
Puis tu as dû mal lire l'aide :

Citation :

dupIgnore Ignore attempts to add duplicate strings to the  
[...]
Set Duplicates before adding any strings to the list. Setting Duplicates to dupIgnore or dupError does nothing about duplicate strings that are already in the list.


:o
En fait tu devrais le mettre à DupIgnore _avant_ :D
(et peut-être mettre les chaînes une par une, ça ne sais pas)
Pour enlever les doubles ce que je ferais c'est trier la liste et ensuite la parcourir. Si la chaîne est la même que la précédente je la supprime (en faisant gaffe de le faire de n-1 à 0).
Je pense que pour juste virer les doublons la méthode de tout copier dans une liuste temporaire est fort lourde.


Message édité par antp le 14-11-2003 à 17:14:44

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°566932
KrzAramis
Help Me
Posté le 14-11-2003 à 17:21:08  profilanswer
 

:cry:  
 
je te separes jamais de ton baton hein ????
ok pour les commentaires mais le probleme c est que les proprietes "Sorted" et "Duplicates" ne sont pas reconnues.
 
Tu ne ferais comme ca???? comment alors? Doubles listes, comparaison et suppression des chaines deja trouvees? Si j ai bien compris l'aide (mais je suis fatigué la  :whistle: ) la TStringList le fait toute seule comme une grande !
 
@++


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
n°566933
KrzAramis
Help Me
Posté le 14-11-2003 à 17:26:40  profilanswer
 

Re,
 
évidement quand tu déclares TStringList c est tout de suite mieux  :pt1cable: !

Code :
  1. procedure TForm_Main.FilCmbBx_01(Sender: TObject;
  2.   var Key: Char);
  3. var iTag : integer;
  4.     strtemp : string;
  5.   //sub procedure that cleanse the TStrings from doubles
  6.   procedure DeleteDuplicates(TStrings_out : TStrings);
  7.   var TempList : TStringList;
  8.   begin
  9.     TempList := TStringList.Create;
  10.     try
  11.       TempList.Sorted := True;
  12.       TempList.Duplicates := dupIgnore;
  13.       TempList.AddStrings(TStrings_out);
  14.       TStrings_out.clear;
  15.       TStrings_out.addstrings(TempList);
  16.     finally
  17.       TempList.Free;
  18.     end;//try... finally
  19.   end;// deleteDuplicates
  20. begin
  21.   iTag := 0;
  22.   if ord(key) = VK_RETURN then begin
  23.     iTag := (Sender as TFillcombobox).Tag;
  24.     // modified on the 14/11/2003
  25.     DeleteDuplicates(FFillCmb[iTag].Items);
  26.       end;//if
  27. end;


@++


Message édité par KrzAramis le 14-11-2003 à 17:27:48

---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
n°566936
antp
Super Administrateur
Champion des excuses bidons
Posté le 14-11-2003 à 17:28:58  profilanswer
 

krzAramis a écrit :

Si j ai bien compris l'aide (mais je suis fatigué la  :whistle: ) la TStringList le fait toute seule comme une grande !


 
C'est utile si tu ajoutes de temps en temps des chaînes ; mais pour virer tous les doubles c'est un peu inutile je pense, autant faire une petite boucle comme je l'ai expliqué : ça évite de faire une seconde liste temporaire, et niveau code produit c'est plus léger (quand tu copies tes chaînes de l'une dans l'autre, j'imagine qu'à chaque insertion il regarde si la chaîne existe).


Message édité par antp le 14-11-2003 à 17:29:52

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°566947
KrzAramis
Help Me
Posté le 14-11-2003 à 17:40:23  profilanswer
 

C est exact (cf insertion).
Ok je vais repenser ma procedure .... arf je pensais que ca serai bien comme code[:huit] . Quel dommage.
 
Bon la il faut que je vire le beep lorsque l utilisateur appuye sur 'Entrée' parce que ca me soule !
 
@++


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Virer les doublons des combobox [erreur inside]

 

Sujets relatifs
virer les espaces apres une chaine ......Envoie de mails: Erreur 550 Rejected by final destination
Code d'erreurperl et balisage: un algo? (xml inside)
[VB] problème erreur HELPerreur exécution...
[CSS2] Erreur d'affichage (corrigé)[VB.NET] pointer la valeur de inputbox vers combobox
erreur inconnue[vbscript]erreur de chemin avec shell.run
Plus de sujets relatifs à : Virer les doublons des combobox [erreur inside]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR