Ver Mensaje Individual
  #1  
Antiguo 21-06-2011
maxinitto maxinitto is offline
Miembro
 
Registrado: may 2010
Posts: 45
Reputación: 0
maxinitto Va por buen camino
Ayuda con ListView delphi

Hola:

Estoy programando una aplicacion cliente/servidor en delphi 2009 y uso los socket por defecto, bueno pues tengo un listview con varias columnas pero para hacer una serie de pruebas solo añado 1 item por linea, los subitem por cada item estan vacios, y bueno ¿que almaceno?, pues almaceno el handle de cada conexion entrante al cliente es decir llega una conexion su handle se añade al listview bueno mi duda llega aqui en el evento onconnect del socket tengo puesto esto
Código Delphi [-]
procedure TForm2.cClientConnect(Sender: TObject; Socket: TCustomWinSocket);     // ONCLIENT CONNECT DEL SOCKET
var
  i : integer;
begin
  for i := 0 to Length(conexiones)-1 do // almaceno cada handle en un elemento de este array para posteriores comparaciones.
   if conexiones[i] = 0 then
   begin
    Conexiones[i] := Socket.Handle;
    LV_Lista.Items.Add.Caption := IntToStr(Conexiones[i]);
    exit;
   end;

end;

como veis por cada conexion entrante añado su handle al array y al listview bien, y luego uso tambien el evento ondisconnect...

Código Delphi [-]
procedure TForm2.cClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);  // ONCLIENT DISCONNECT DEL SOCKET
var
  i: integer;
begin

 for i := 0 to LV_Lista.Items.Count -1 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 := 0 to Length(conexiones)-1 do
   if Socket.Handle = conexiones[i] then
      conexiones[i] := 0;


end;

vale mi problema llega cnd en mi listview muestro 2 conexiones ordenadas logicamente

conex 1
conex 2

vale pues yo desconecto el conex 1 y me tira un runtime... no tengo ni idea de porque pone algo de accessviolation, en cambio si desconecto los servidores en el orde de conex 2 y conex 1 no me tira ningun runtime, no se... es rarisimo quizas no haya implementado bien el codigo

gracias de antemano.
Responder Con Cita