Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   array de bytes con ICS (https://www.clubdelphi.com/foros/showthread.php?t=64671)

3NK1 14-04-2009 13:37:36

array de bytes con ICS
 
Buenos días, ante todo, hola a toda la comunidad. He comenzado con Delphi hace pocos días, soy un reincidente de .Net. Programando en Delphi ahora y por lo pronto este foro me está sirviendo de mucha ayuda.

Bueno basta de presentaciones. Os cuento mi inconveniente.

Hace un par de días comencé a hacer una aplicación que trabaja con sockets, me encontre que los componentes indy no eran los más adecuados para lo que quería y pude descubrir los magnificos componentes ICS.

Bien, actualmente tengo la aplicación que conecta perfectamente y envía y recibe correctamente cadenas de texto. Pero... y aquí el inconveniente. Cuando quiero recibir array de bytes para generar un buffer, donde enviar código hexadecimal.

Me encuentro con que no existe ningún metodo con ese cometido, si no que el método más similar usa una clase propia del componente la TWSocketData. No sé si realmente esa clase me va a servir para el cometido que quiero, porque no he podido encontrar ningún ejemplo. A ver que podeis recomendarme para lo que quiero, acepto cualquier sugerencia y algún fragmento de código si es posible :P.

Por cierto trabajo con Delphi 2009.

Muchas gracias de antemano.

3NK1 15-04-2009 02:20:44

Bueno ese detalle ya lo solucione, más o menos esta clase no deja de ser un Tbytes con un pointer, dejo el código de la declaración del tipo en sí
{$IFDEF CLR}
TWSocketData = TBytes;
{$ENDIF}
{$IFDEF WIN32}
TWSocketData = type Pointer;
{$ENDIF}

Incluso el método, me deja de recibir y enviar, me dejan pasarle en
vez de un TWSocketdata, un Tbytes.

Por eso estupendo, el envio de un buffer desde cliente y servidor,
es correcto. Aparentemente envio y recibo bien, con string no hay problema

Pero salta una excepción de la clase, le envio un string convertido
a bytes con el método widebytesof, tengo varios breakpoint en las líneas

var
a : TWsocketdata;
b : integer;
begin

b := scliente.Receive(a,scliente.BufSize);
textdatos.Text := textdatos.Text + inttostr(b) + #13;
textdatos.Text := textdatos.Text + widestringof(a);

Del servidor al recibir. Capta la información, pero puedo comprobar
por los puntos de parada, que le llega al TWSocketdata a $A6D200
ponga lo que ponga recibo exactamente lo mismo $A6D200

Si la variable a la declaro como Tbytes, recibo () y la variable B
que es el tamaño del buffer, que con A llega correctamente, con B llega
-1.

Alguna sugerencia para arreglarlo.


La franja horaria es GMT +2. Ahora son las 01:03:06.

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