Filtro para Listbox

29/05/2008

1

Ae preciso de um codigo para filtrar linhas num Listbox
por exemplo:

tenho uma url : [b:731366c885]www.devmedia.com.br/index.php?act=post&do=teste&olha=campo[/b:731366c885]

quando o filtro passase ficaria em 3 linhas assim:

[b:731366c885]www.devmedia.com.br/index.php?act=post&do=teste&olha=

www.devmedia.com.br/index.php?act=post&do=

www.devmedia.com.br/index.php?act=[/b:731366c885]

Alguem tem ideia como se fazer ?


Responder

Posts

29/05/2008

Bertu

e claro adicionar as 3 linhas filtradas no Listbox e Remover a Linha principal.
Alguma ideia ?


Responder

30/05/2008

Bertu

??


Responder

30/05/2008

Marco Salles

tente isto :

procedure TForm1.Button1Click(Sender: TObject);
var
i,posini,posFim,contador:integer;
s:String;
begin
for i:=0 to ListBox1.Count-1 do
  begin
   s:=listBox1.Items.Strings[i];
   for contador:=1 to 3 do
     begin
       posFim:=Pos(´=´,s);
       While (PosFim <> 0) do
         begin
          posIni:=PosFim;
          PosFim:=PosEx(´=´,s,posIni+1);
         end;
        s:=copy(s,1,posIni-1);
        listBox2.Items.Add(s+´=´);
     end;
  end;
end;



Responder

30/05/2008

Bertu

Vlw Marcos... sua dica funcionou porem se tiver duas url uma com 3 = e outra com 4, ele so filtra 3 por causa do contador.
ex.

www.devmedia.com.br/index.php?act=post&do=teste&olha=campo

www.devmedia.com.br/index.php?act=post&do=teste&olha=campo&marcos=&sales=

no primeiro link filtra certim , no segundo ja nao filtra tudo :)


Responder

30/05/2008

Marco Salles

Vlw Marcos... sua dica funcionou porem se tiver duas url uma com 3 = e outra com 4, ele so filtra 3 por causa do contador.


de acordo com suas especificaçoes...

Generalize para Um Numero Qualquer de ´=´

Exemplo:

procedure TForm1.Button1Click(Sender: TObject);
var
i,posini,posFim:integer;
s:String;
begin
for i:=0 to ListBox1.Count-1 do
  begin
   s:=listBox1.Items.Strings[i];
    posIni:=pos(´=´,s);
   while posini <> 0 do
     begin
       posFim:=Pos(´=´,s);
       While (PosFim <> 0) do 
         begin
          posIni:=PosFim;
          PosFim:=PosEx(´=´,s,posIni+1);
         end;
        s:=copy(s,1,posIni-1);
        listBox2.Items.Add(s+´=´);
        posIni:=pos(´=´,s);
     end;
  end;
end;



Responder

30/05/2008

Bertu

Perfeito Muito Obrigado


Responder

30/05/2008

Marco Salles

Que bom que lhe fui útil...


Responder