Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : detection d'un doublon de lignes et le supprimer [ Algorithme / Compression, Split et Cryptage ] (Napster)

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é 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...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.