Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Buscar y eliminar en un StringList (https://www.clubdelphi.com/foros/showthread.php?t=87361)

wilcg 19-12-2014 22:53:59

Buscar y eliminar en un StringList
 
Hola amigos del foro, necesito su ayuda.
Lo que pasa es que tengo 2 TStringlist, en donde cargo información. Ahora lo que quiero es eliminar en el StringList2 los textos que existen en el StringList1 por ejemlpo.

StringList1
12345
12346
12347

StringList2
34957
95746
12345 =======> este quisiera eliminar porque ya existe en el StringList1 y así todos los que existan..

estoy intentando con algo así

Código Delphi [-]
var
   i :integer;
   Lista1, Lista2 :TStringList;
begin
  for i := 0 to Lista1.Count -1 do
  begin
    if Lista2.IndexOf(Lista1.Text) = Lista1.Text then
     Lista2.Delete(i);
  end;
end;

si alguien me indica el camino.

ecfisa 20-12-2014 00:58:13

Hola wilcg.

El código se podría optimizar dependiendo de si las listas tienen elementos repetidos, estan ordenadas, etc. , pero de este modo te va a funcionar para cualquier caso:
Código Delphi [-]
procedure RemoveRepeated(const Source: TStrings; Target:TStrings);
var
  i, j: integer;
begin
  for i:= Source.Count-1 downto 0 do
    for j:= Target.Count-1 downto 0 do
      if Source[i] = Target[j]then
        Target.Delete(j);
end;

Saludos :)

Ñuño Martínez 20-12-2014 01:12:28

Creo que deberías revisar la documentación referente a las clases TStrings y TStringList, ya que creo que no has comprendido bien la propiedad Text ni el método IndexOf.

Text contiene todas las líneas contenidas en el objeto, mientras que IndexOf devuelve el número de línea donde se encuentra un texto o -1 si este no existe.

[Edito] Se me adelantó, señor ecfisa...

nlsgarcia 20-12-2014 03:39:16

wilcg,

Cita:

Empezado por wilcg
...StringList...

:rolleyes:

Revisa esta información:
Espero sea útil :)

Nelson.

wilcg 20-12-2014 03:59:03

Agradecerles a todos por ayudarme con este tema, ya había leído varios hilos por ahí pero no lograba obtener lo deseado y por eso necesitaba algo mas especifico como para un novato.
pero ya esta solucionado el código del maestro ecfisa, quedo tal cual lo quería, parece como si supiera lo que necesito siempre me da el código exacto. Gracias por sus aportes maestro.:):):)


La franja horaria es GMT +2. Ahora son las 20:55:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi