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

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  [Delphi] comparer deux listbox ?

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Delphi] comparer deux listbox ?

n°1607092
davidmarli
Posté le 01-09-2007 à 14:15:37  profilanswer
 

Bonjour à tous,
 
j'ai un pb avec un petit bout de prog :  
J'ai deux listbox que je remplis et une en attente d'être remplis ! (la listbox1 contient n éléments, la listbox2 n+1)
Ce que je veux faire c'est mettre dans la troisième listbox l'item de la seconde qui n'est pas dans le première  et je n'y arrive pas du tout !!!
 
Si quelqu'un peut m'aider je l'en remercie d'avance.
 
 
 
 
 

mood
Publicité
Posté le 01-09-2007 à 14:15:37  profilanswer
 

n°1607105
HERIBERT
Posté le 01-09-2007 à 17:29:05  profilanswer
 

davidmarli a écrit :

Bonjour à tous,
 
j'ai un pb avec un petit bout de prog :  
J'ai deux listbox que je remplis et une en attente d'être remplis ! (la listbox1 contient n éléments, la listbox2 n+1)
Ce que je veux faire c'est mettre dans la troisième listbox l'item de la seconde qui n'est pas dans le première  et je n'y arrive pas du tout !!!
 
Si quelqu'un peut m'aider je l'en remercie d'avance.
 
 
 
 
 


1/ C'est pas très clair, ou alors c'est moi qui ne m'en remets pas de ce que j'ai fligué cet aprem :D
 
2/ Faudrait passer par un algorythme, mais que contiennent ces ListBox ? Montre-ns, un peu :heink:

n°1607110
davidmarli
Posté le 01-09-2007 à 18:06:09  profilanswer
 

Dans la listbox n°1 j'ai des noms de fichiers .mpg (par exemple test1.mpg test2.mpg ...)
Dans la listbox2 j'ai aussi des noms de fichiers (par exemple test 1.mpg, test8.mpg, test2.mpg ...)
 
Je sais que la listbox n°2 contient TOUSles fichiers de la listbox n°1 plus un fichier.
 
Ce que je veux c'est trouver ce fichier et le placer dans la listbox n°3 !!!
 
Est-ce plus clair ainsi formulé ?
 
Merci

n°1607229
flagad'awa​re
c pô moi, j'ai pas touché!
Posté le 02-09-2007 à 13:46:20  profilanswer
 

Salut
 
ce que tu peut faire c'est faire une boucle qui parcours tout les items du 2 pour les comparer avec les items du 1 et celui qui n'est pas dans le 2 -> listebox 3
 
c'est un peu lourd mais ça doit marcher
 
je t'aurais bien fait un bout de code mais je sais pas comment on choppe les items :??:
 
si tu sais dis-moi j'te filerai un coup d'main
 
sinon tu recupère tout le texte du 2 dans un string et tu vire un-par-un ceux qui sont dans le 1 avec des POS et des delete :)
 
 
edit: à moins que celui qui n'est pas dans le 1 soit toujours le dernier du 2???


Message édité par flagad'aware le 02-09-2007 à 13:48:32
n°1607231
davidmarli
Posté le 02-09-2007 à 14:00:21  profilanswer
 

Merci j'essaierai ce soir.
 
Pour avoir les items c'est :  
 
listbox1.items[i] (pour avoir le ième item de laliste n°1)
 
Et sinon ben non le nouveau fichier ne se trouve pas forcément à la dernière position !!!! C'est bien dommage d'ailleurs !! (Enfin se serait le cas si on pouvait classer les fichiers par date croissante de création . (peut-être est-ce possible avec findfirst ...)  
 
 

n°1607346
flagad'awa​re
c pô moi, j'ai pas touché!
Posté le 02-09-2007 à 21:12:23  profilanswer
 

ça serait trop beau  :D
 
ouais tu peut faire ça:
 

procedure TForm1.Recup;
var  
tmp:string;
i:integer;
 
begin
 
tmp:=listbox2.items.text;
 
for i:=1 to listbox1.items.count do
 begin
  if pos (listbox1.items[i],tmp) >0 then  
   delete(tmp, pos (listbox1.items[i],tmp), length(listbox1.items[i]) );  
 end;
 
//tu peut déja essayer:
showmessage(tmp);
 
//pis si ça roule:
// listbox3.items.add(tmp);
 
end;


 
j'ai pas essayer ça de vrait rouler si les items communs des 2 sont bien pareils :)  
 
par contre tu risque peut être de te retrouver avec des espaces en trop???

n°1607367
davidmarli
Posté le 02-09-2007 à 22:48:13  profilanswer
 

Bon finalement j'ai utilisé ta première idée : je mets mes éléments de ma listbox1 dans un STRING puis je parse mes items de la seconde avec la fonction POS sur cette chaine, et je repère l'item qui ne s'y trouve pas !
 
Merci bp.

n°1609609
antp
Super Administrateur
Champion des excuses bidons
Posté le 07-09-2007 à 22:19:18  profilanswer
 

Sinon y a la méthode indexof de listbox.items, c'est peut-être plus simple pour voir si une chaîne est dans la liste :D  
Ton truc avec Pos ça va foirer dans le cas où tu cherches "test.mpg" et que la liste contient aussi "untest.mpg" par exemple...

n°1609618
flagad'awa​re
c pô moi, j'ai pas touché!
Posté le 07-09-2007 à 23:15:54  profilanswer
 

aie, you are right
 
beau p'tit bug  [:athlonxp2100+]

n°1609640
davidmarli
Posté le 08-09-2007 à 06:39:22  profilanswer
 

oui exact mais en fait cela ne peut pas arriver.
En fait dans les listbox sont répertoriés des fichiers issus d'enregistrement avec PouchinTV et ils sont de la forme :  
FRANCE 2 20-55-00 10-02-2007.mpg (par exemple)  
Donc le fichier comportant le nom de la chiane enregistrée, suivi de la date et de l'heure de début normalement un nom de fichier ne peut pas en contenir un autre.
 
Mais bon qd j'aurais cinq minutes je me pencherais sur les indexof.  
 
Merci bp.
 

mood
Publicité
Posté le 08-09-2007 à 06:39:22  profilanswer
 

n°1609665
KangOl
Profil : pointeur
Posté le 08-09-2007 à 11:52:33  profilanswer
 

un truc du genre devrais fonctionner

Code :
  1. for i := 0 to listbox2.Count - 1 do begin
  2.   str := listbox2.Items[i];
  3.   if (listbox1.indexOf( str ) = -1) then begin
  4.      listbox3.Add( str );
  5.   end;
  6. end;

n°1619550
MEI
|DarthPingoo(tm)|
Posté le 05-10-2007 à 11:36:58  profilanswer
 

Faudrait surtout avoir le code de remplissage de lbx1 et lbx2, car il doit etre plus facile de remplir aussi lbx3 à la volé que de faire plein de boucle. ;)
 
Apres faut voir le contexte d'utilisation des listbox aussi mais bon...


---------------
| AMD Ryzen 7 3700X 8C/16T @ 3.6GHz - 64GB DDR4-3600 16-18-18 1T - AMD Radeon RX 5700 XT 8GB @ 2010MHz/14Gbps |

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

  [Delphi] comparer deux listbox ?

 

Sujets relatifs
vérifier et comparer une date[Delphi] port com - transmition en binaire plutôt que par caractères
[Delphi] Sendmessage ?A L'AIDE!!! recuperer et comparer date et heure [VBA]
[VBA] Monter Descendre ListBoxPersonnaliser les elements d'une combobox
[!?!?] Recherche Multisites avec Listboxpassage de TStream de Delphi à C++
listbox multiselection et formulaireje cherche à faire une listbox dynamique
Plus de sujets relatifs à : [Delphi] comparer deux listbox ?


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