Fórum Comparar 2 stringlist #270760
03/03/2005
0
Em determinado momento, meu sistema cria um stringlist com vários itens. Mais adiante é criado um segundo stringlist. O que preciso é depois de ter criado o segundo stringlist, comparar o segundo com o primeiro e excluir do segundo, todos os itens que estajam presentes nos 2 stringlist´s.
Obrigado pela atenção
Sanses
Sanses
Curtir tópico
+ 0Post mais votado
03/03/2005
Segue um esboço do código:
for Ind := 0 to PrimeiroStringList.Count -1 do begin if SegundoStringList.IndexOf(PrimeiroStringList[Ind]) > -1 then SegundoStringList.Delete(SegundoStringList.IndexOf(PrimeiroStringList[Ind])); end;
Isabelct
Gostei + 1
Mais Posts
03/03/2005
Sanses
Gostei + 0
04/03/2005
Isabelct
Gostei + 0
08/06/2017
Humberto Lazo
1.- Deletando um item do stringlist o valor Count muda
2.- Os item sofre um reindexação que não corresponde à indexação anterior.
Gostei + 0
13/06/2017
Wesley Yamazack
Listagem 1: Estrutura do projeto.
.....
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Memo2: TMemo;
Memo3: TMemo;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
Lista_a, Lista_b: TStringList;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
Listagem 2: instanciamos as 2 listas, depois preenchemos cada uma delas com valores aleatórios (repetidos ou não) e por fim adicionamos o conteúdo em um memo, apenas para facilitar a visualização.
procedure TForm1.FormCreate(Sender: TObject);
begin
Lista_a := TStringList.Create;
Lista_b := TStringList.Create;
//preenchendo lista A
Lista_a.Add('Flamengo');
Lista_a.Add('Botafogo');
Lista_a.Add('Internacional');
Lista_a.Add('São Paulo');
Lista_a.Add('Bahia');
Lista_a.Add('Cruzeiro');
//preenchendo lista B
Lista_b.Add('Flamengo');
Lista_b.Add('Vasco');
Lista_b.Add('Cruzeiro');
Lista_b.Add('Bahia');
Memo1.Lines := Lista_a;
Memo2.Lines := Lista_b;
end;
Listagem 3: Clique do Botão.
Onde acontece a logica da ideia. Estamos pegando o conteúdo da lista_b e jogando para a lista_a, desde que esse item não exista na lista_a, e no final limpamos a lista_b.
procedure TForm1.Button1Click(Sender: TObject);
var
strItem: string;
begin
for strItem in Lista_b do
begin
if not Lista_a.IndexOf(strItem) > -1 then
Lista_a.Add(strItem);
end;
Lista_b.Clear;
Memo3.Lines := Lista_a;
end;
Veja se isso irá te ajudar. Vlw.. grande abraço
Gostei + 1
Clique aqui para fazer login e interagir na Comunidade :)