Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-06-2011
maxinitto maxinitto is offline
Miembro
 
Registrado: may 2010
Posts: 45
Poder: 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
  #2  
Antiguo 21-06-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 18
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
  #3  
Antiguo 21-06-2011
maxinitto maxinitto is offline
Miembro
 
Registrado: may 2010
Posts: 45
Poder: 0
maxinitto Va por buen camino
es verdad ejejejeje bueno gracias ya me funciono thanks!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayuda a listar archivos en ListView chuli17 Lazarus, FreePascal, Kylix, etc. 5 09-05-2011 00:55:41
ayuda con el componente listview kurono Varios 3 01-12-2008 04:11:31
Ayuda con ListView ighirlanda Varios 3 05-10-2006 15:45:35
Como Trabajar los listview en delphi 7 Shidalis Varios 9 19-07-2005 17:03:49
Ayuda con listview lic_francisco Varios 3 12-05-2005 20:26:02


La franja horaria es GMT +2. Ahora son las 16:50:47.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi