Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DouglasP

[Resolvido] Erro ao deletar item de listbox

Recommended Posts

Boa noite,

Queria uma ajuda que está me tirando do serio, tenho o seguinte código que quando executado da o erro de list index out of bounds;

 

for i:=0 to ListBox1.Items.Count-1 do begin
     if (ListBox1.Items.Strings[i] = 'Heuristico,'+ListView1.Selected.SubItems[0]) then begin
       ListBox1.Items.Delete(i);

       MessageBox(GetForegroundWindow(), pchar('Item deletado com sucesso!), 'Informação', MB_ICONINFORMATION + MB_OK);
     end;
   end;

 

Porem não vejo erro nenhum...

Alguem saberia me ajudar?

 

grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Suponha que seu ListBox1 tenha 6 itens, quando você inicia o laço "for" ele contará de 0 até 5. Quando você deleta um item do ListBox1 ele teria que contar de 0 até 4, mas o seu "for" irá seguir até 5, que não existirá e irá gerar este erro. Se o ListBox1 não tiver itens duplicados é só você interromper o "for' com a instrução break logo após excluir o item, caso contrário tente usar um while, conforme o código abaixo.

 

Tente fazer com um while, fiz os testes aqui e funcionou:

 

procedure TForm1.Button1Click(Sender: TObject);

var

I: Integer;

J: Integer;

begin

J := ListBox1.Items.Count;

I := 0;

while I < J do

begin

if (ListBox1.Items = 'Linha 2') then

begin

ListBox1.Items.Delete(i);

Application.MessageBox('Item deletado com sucesso!', 'Informação', MB_ICONINFORMATION + MB_OK);

Dec(J);

end;

Inc(I);

end;

end;

 

 

Um abraço,

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.