Ver la Versión Completa : Eliminar duplicados lista con mismos caracteres
Paolo
05-09-2008, 11:37:37
Me gustaria saber como de esta tstringlist :confused: con estos valores
012340 012340
402301 012350
012350 Eliminar los que tengan los mismos --->
230140 caracteres y que quede como --->
:) Gracias
tcp_ip_es
05-09-2008, 12:45:15
una pequeña idea....
procedure TForm1.Button1Click(Sender: TObject);
var pepe:tstringlist;
i,p:integer;
begin
pepe:=tstringlist.Create;
pepe.add('555');
pepe.add('333');
pepe.add('555');
pepe.Sort;
i:=0;
while i <= pepe.Count-1 do
begin
if (pepe.Find(pepe[i],p)) and (i<>p) then
pepe.delete(p);
inc(i);
end;
memo1.lines:= pepe;
end;
hola suponiendo que cada numero este en una linea distinta, deberas usar un doble bucle :
for i := 0 to sl.count - 1 do
begin
s := sl[i];
for j := i to sl.count - 1 do
if sl[i] = sl[j] then sl[j].Delete;
end;
mas o menos
tcp_ip... vamos a tener un problema tu y yo eh? :D:D:D
ah no que ahora es diferente Ok ;)
Hola,
No sé si valdrá para algo o qué, pero, creo recordar que los "TStrings" tienen una propiedad "AllowDuplicates".
Paolo
05-09-2008, 13:03:01
Si creo recordar que la tienen, pero la idea no es esa sino elimine los que tengan los mismos caracteres aunque sea en distinto orden osea que elimine el "0135" y el "5301" y el "3501" y solo deje uno de los tres da igual cual.
Gracias por las respuestas :)
hola, no estoy muy seguro pero creo q esto funciona
procedure TForm1.Button2Click(Sender: TObject);
var
i,j : integer;
begin
for i := 0 to Memo1.Lines.Count - 1 do
for j := i + 1 to Memo1.Lines.Count - 1 do
if Permuta(Memo1.Lines[i],Memo1.Lines[j]) then Memo1.Lines.Delete(i);
end;
function TForm1.Permuta(s1,s2 : string) : boolean;
var
j : integer;
begin
result := true;
j := 1;
while (j < length(s1)) and (result = true) do
begin
result := result and (Pos(s1[j],s2)<>0);
stringreplace(s2,s1[j],'',[]);
inc(j);
end;
end;
tendrias que mirar casos donde hayan caracteres repetidos (ex, 5113, 1351, 1355...creo que si, pero no se bien bien si los consideraria igual). Al menos, la idea va por aqui
Paolo
05-09-2008, 15:07:28
Me funciona pero ahora lo que quiero hacer es que los compare de dos en dos, que no sea lo mismo 13 que 31, de todas formas lo dicho gracias a todos. :D:D
tcp_ip_es
08-09-2008, 07:26:54
tcp_ip... vamos a tener un problema tu y yo eh?
¿y eso por???
(porque te me adelantaste ese dia en todas las respuestas)
tcp_ip_es
08-09-2008, 10:10:46
estaba fino ese día :D hoy estoy más denso.... :rolleyes:
es lo q tienen los lunes, ya pasara ;)
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.