Ver Mensaje Individual
  #2  
Antiguo 21-06-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Reputación: 19
Chris Va por buen camino
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);  // ONCLIENT DISCONNECT DEL SOCKET
var
  i: integer;
begin

 for i := LV_Lista.Items.Count -1 downto 0 do  // si se desconecta buscamos el handle del socket desconectado y lo eliminamos de la lista.
  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
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita