Cuando vas a quitar un elemento de una lista es preferible utilizar un contador decreciente. O mejor dicho, utilizar el
FOR en modo decreciente.
En tu caso sería así:
Código Delphi
[-]procedure TForm2.cClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); var
i: integer;
begin
for i := LV_Lista.Items.Count -1 downto 0 do if socket.Handle = StrToInt(LV_Lista.Items[i].Caption) then
if LV_Lista.Items[i].Checked then
LV_Lista.Items[i].Delete;
for i := Length(conexiones)-1 downto 0 do
if Socket.Handle = conexiones[i] then
conexiones[i] := 0;
end;
Lo que no me queda claro es cómo manejas el número de elementos que contiene el arreglo
Conexiones. Aparte de ésto, no sé el por qué guardas el mismo valor en dos variables distintas (
LV_Lista.Items y
Conexiones).
Saludos,
Chris