begin process at 2010 03 21 20:43:09
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Algorithme

 > 

Compression, Split et Cryptage

 > 

detection d'un doublon de lignes et le supprimer


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

detection d'un doublon de lignes et le supprimer

jeudi 19 avril 2007 à 22:25:04 | detection d'un doublon de lignes et le supprimer

Napster

salut tout le monde  ,
j'ai créer un petit editeurExtraire un fichie dans Listbox , mais dans le fichier ya des doublons de ligne , comment faire pour laisser qune ligne et  supprimer ces doublons .
 merci d'avance 
vendredi 20 avril 2007 à 09:06:38 | Re : detection d'un doublon de lignes et le supprimer

Loda

Membre Club
salut,

tstringlist a une gestion de doublon si t alist est triée. lit l'aide.

sinon:
- parcourt la liste original
- si déjà present dans list copy, efface la l'item
- sinon ajouter le item dans list copy (list triée)

bon code,

Loda

Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
vendredi 20 avril 2007 à 18:25:46 | Re : detection d'un doublon de lignes et le supprimer

DRJEROME

Salut la compagnie ;)

un exemple :


var
M:TStringlist;

begin
    M:=TStringlist.Create;
    M.Sorted:=true;
    M.Duplicates:=dupIgnore;
    M.Text:=Listbox1.Items.Text;
    Listbox1.Items.Text:=M.Text;
    M.Free;
end;




DrJerome
vendredi 20 avril 2007 à 18:41:21 | Re : detection d'un doublon de lignes et le supprimer

f0xi

Membre Club Administrateur CodeS-SourceS

tite correction :

var
  TSL : TStringList;
begin
  TSL := TStringList.Create;
  try
    TSL.Sorted     := true;
    TSL.Duplicates := dupIgnore;
    TSL.Assign(ListBox1.Items);
    ListBox1.Items.Assign(TSL);
  finally
    TSL.Free;
  end;
end;




Croc (click me)
vendredi 20 avril 2007 à 19:13:35 | Re : detection d'un doublon de lignes et le supprimer

DRJEROME

"Assign" corespond à une méthode AddStrings(TStrings(Source))  // je résume car c'est plus compliqué

ça marche aussi mais le principe est le même

c'est surtout "Duplicates" l'essentiel du code après on peut broder des optimisations voire de l'ASM pour ceux qui aiment l'asm

DrJerome
vendredi 20 avril 2007 à 19:26:31 | Re : detection d'un doublon de lignes et le supprimer

f0xi

Membre Club Administrateur CodeS-SourceS

oui, il est certains qu'assign est moins simple que Text := Text ... mais, c'est la meilleure methode pour assigner le contenus d'un TStrings a un autre TStrings.
tout comme pour assigner le contenus d'un TPersistent a un autre TPersistent, c'est la methode la plus propre et la plus respectueuse.

donc autant, montrer, le bon exemple, même si il fait partis d'une multitude de solutions possibles, l'avantage d'assign c'est qu'elle s'adapte trés bien a toute forme de liste, contrairement a ta solution ou on perd certaines informations quand on utilise une liste particuliere, notement les listes delimitées et donc le duplicate ne pourrait pas fonctionner forcement.
de plus elle contient deja tout le code necessaire qu'on devrait normalement mettre en place lors des modifications de liste (beginupdate, endupdate, clear, etc)

procedure TStrings.Assign(Source: TPersistent);
begin
  if Source is TStrings then
  begin
    BeginUpdate;
    try
      Clear;
      FDefined := TStrings(Source).FDefined;
      FNameValueSeparator := TStrings(Source).FNameValueSeparator;
      FQuoteChar := TStrings(Source).FQuoteChar;
      FDelimiter := TStrings(Source).FDelimiter;
      AddStrings(TStrings(Source));
    finally
      EndUpdate;
    end;
    Exit;
  end;
  inherited Assign(Source);
end;



Croc (click me)
vendredi 20 avril 2007 à 19:34:04 | Re : detection d'un doublon de lignes et le supprimer

DRJEROME

c'est bien ce que je disais on brode sur ma soluce, le "duplicate" est l'essentiel

je répondais juste à une question je ne cherchais pas une solution générale à tous les problèmes non énoncés rajoutant des méthodes

Allez bravo si tu veux... moi je pars au restau ;)

DrJerome
vendredi 20 avril 2007 à 19:39:23 | Re : detection d'un doublon de lignes et le supprimer

DRJEROME

sinon ton assign plus court :

procedure TStrings.Assign(Source: TPersistent);
begin
  if Source is TStrings then
  begin
    BeginUpdate;
    try
      Clear;
      AddStrings(TStrings(Source));
    finally
      EndUpdate;
    end;
    Exit;
  end;
  inherited Assign(Source);
end;


DrJerome
vendredi 20 avril 2007 à 20:47:06 | Re : detection d'un doublon de lignes et le supprimer

f0xi

Membre Club Administrateur CodeS-SourceS

non non non, tu me modifie pas le code de la VCL comme ça mon ami !
que vas dire borland si tu commence a modifier leur code !?


Croc (click me)
vendredi 20 avril 2007 à 22:40:59 | Re : detection d'un doublon de lignes et le supprimer

DRJEROME

on n'a pas besoin des "separators" pour le cas présent (et selon les versions delphi le code n'est pas le même les separators ne sont pas sur toutes les versions)

DrJerome


Cette discussion est classée dans : lignes, supprimer, detection, doublon, doublons


Répondre à ce message

Sujets en rapport avec ce message

memo1 >supprimer des lignes [ par Herostnic ] slt qui peu m'aider a resudre un broblem.dans un memo1 jai une liste des date de naissance exp:1986,1999,1978,1977,1910,2000,2010,2008,1001 rennomer ,supprimer un repertoire [ par alichem8 ] slt ..je développe un logiciel d'utilsation personel,preske finis.je cré d repertoires (Exercices) à la demande de l'utilisateur o démarage , qui cont TTabSheet et TMemo (suppression) [ par christophedlr ] Bonjour,Je suis entrain de faire un éditeur de texte avec une gestion de chaque fichier dans un TTabSheet (mis dans un TPageControl).Dans le TTabSheet detection d'intrue dans les sequences video [ par sihemsim ] qu'elle sont les instructions delphi qui me permet de: 1.lire une video? 2.diviser la video en images? sélectionner et supprimer les fichiers commençant par K [ par JackNUMBER ] bonsoir à tous !!je vous pose le décors : j'ai un FileListBox qui est relié à un DirectoryListBox pour parcourir des fichiers. Les items de mon FileLi stringgrid ligne invisible [ par bassem2009 ] j'a j'ai un stringgrid qui comporte plusieurs lignes (29) mais les 3 lignes dernies sont cachées;merci. SaveToCSV d un AdvStringGrid [ par mimimou ] Bonjour a tous et bonne annee 2009...   J utilise un ADVStringGrid dans lequel je charge un fichier CSV qui comprend une vingtaine de lignes. Pour mon relancer un programme. [ par hainlesgens ] bonjours à tous. je viens de créer une fonction pour supprimer de ma DBle client sélectionné dans une listview. quand je clic sur le bouton "supprimer


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,265 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales