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); var
i : integer;
begin
for i := 0 to Length(conexiones)-1 do 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); var
i: integer;
begin
for i := 0 to LV_Lista.Items.Count -1 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 := 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.