Ver Mensaje Individual
  #1  
Antiguo 04-05-2012
orlando9427 orlando9427 is offline
Registrado
NULL
 
Registrado: nov 2010
Posts: 8
Reputación: 0
orlando9427 Va por buen camino
Socket, ListItem y Pointer

Estaba haciendo un server para actualización de archivos para un grupo de trabajo, tengo el server y el cliente.
Las conexiones se listan en un ListView dentro de la propiedad Data del Socket guardo un puntero a el Item agregado y viceversa (en la variable Data de ListItem guardo el puntero al Socket), mi problema surge cuando necesito borrar el item de la lista. Les dejo el codigo.

Código:
procedure TfrmMain.sockMainClientError(Sender: TObject;
    Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
    var ErrorCode: Integer);
begin
    TListItem(Socket.Data).Delete;
    lvConnection.Update;
    ErrorCode := 0;
    //TListItem(Socket.Data).Update;
end;

procedure TfrmMain.sockMainClientRead(Sender: TObject; Socket: TCustomWinSocket);
var sTemp: String;
    asSplit: AString;
        liSubItem: TListItem;
begin
sTemp := Socket.ReceiveText;
asSplit := uFunction.Split(sTemp, '|');
if asSplit[0] = 'START' then begin
    liSubItem := lvConnection.Items.Add;
    Socket.Data := @liSubItem;
    liSubItem.Data := @Socket;
end;
end;
Cuando se obtiene un error o se desconecta lo debería eliminar de la lista pero no lo hace, estuve buscando pero no encontre mucho, intente con el operador "^" y nada incluso con Destroy y Free, pero me devuelve un EAccess Violation

Saludos!
Responder Con Cita