Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   UDP Ayuda. (https://www.clubdelphi.com/foros/showthread.php?t=4774)

Descendents 28-10-2003 10:25:37

UDP Ayuda.
 
procedure TForm1.WaveIn1Data(data: Pointer; size: Integer);
begin
UDPC.Sendbuffer(data,size);
end;

esto de aqui arriba me da error.No se si lo hago mal o que pasa.
me da error en la linea: UDPC.Sendbuffer(data,size);

Utilizo las Indy UDPCLIENT, UDPSERVER.

Igual es que lo hago mal, y un pointer no se envia asi.No se.

Agradeceria ayuda porfavor
Muchas gracias
Un saludo.

jachguate 29-10-2003 01:06:42

Hey amigo. Ya llevas 30 mensajes, y me parece extraño que aún no completes la información que podria ayudar a ayudarte. El hecho es que no indicas ni el mensaje de error, ni si este ocurre en tiempo de ejecución o en tiempo de compilación....

Te recomiendo que leas la guia de estilo.

Hasta luego.

;)

Descendents 29-10-2003 18:49:31

SI Quizas tienes razón.
Bueno mi problema es el siguiente.
Quiero enviar Por UDPClient ( el componente de las INDY), la siguiente informacion:

UDPC.SendBuffer(data^,size);

//EVENTO DE CUANDO HABLO
procedure TForm1.ACMWaveIn1Data(data: Pointer; size: Integer);
begin
UDPC.SendBuffer(data^,size);
end;

este es un evento que me recoje la voz cuando hablo por el micro.
Pues bien yo quiero enviar como ya he dicho antes el data:Pointer y el size:integer.

Diria que con ^ ya lo he conseguido, (porque antes hacia
UDPC.SendBuffer(data,size) y me daba error ahora envio UDPC.SendBuffer(data^,size) y ya no me da error ).

Pero ahora me encuentro que al recibir el UDPSERVER (de las indy), me llega un adata:Tstream;

// EVENTO DE CUANDO RECIBO
procedure TForm1.UDPSUDPRead(Sender: TObject; AData:TStream; ABinding: TIdSocketHandle);

Y la funcion que me reproduce el sonido es la siguiente:
ACMWaveOut1.PlayBack(data:Pointer,size:Integer);

Necesito poder reproducir lo que me llega pasandolo por la funcion ACMWaveOut1.PlayBack .Pasar el Tstream a pointer o algo asi.


Haber si alguien puede ayudarme.
En definitiva es voz por IP.que no se como enviarlo y reproducirlo correctamente.

Muchas gracias

jachguate 30-10-2003 16:05:12

No se si tu componente de audio pueda leer datos desde un Stream... que sería lo mas indicado.

Si necesitas un buffer, podes leer los datos desde el stream a un área de memoria para el efecto, y luego pasarsela a tu componente.

Algo como:

Código:

procedure TForm1.UDPSUDPRead(Sender: TObject; AData:TStream; ABinding: TIdSocketHandle);

Var
  Buffer : Array of Byte;
  Tamano : Integer;

Begin
  Tamano := AData.Size;
  SetLength(Buffer, Tamano - 1);
  AData.Read(Buffer[0], Tamano);
  ACMWaveOut1.PlayBack(@Buffer[0],Tamano);
  SetLength(Buffer, 0);
End;

No lo he probado, ni lo haré... asi que puede contener errores, pero con esa idea debiera funcionar.

(Espero al menos, un par de chelas!!... jejeje).

Hasta luego.

;)

pd. por cierto, te recomiendo el uso de las etiquetas [ code] y [ /code] cuando escribas trozos de código... miras la diferencia?

Descendents 30-10-2003 20:22:48

Buenas de nuevo
Pues mira antes de esto que tu me has dicho, habia hecho algo parecido, y me funcionaba, pero me funcionaba un poco mal.

Pero lo que tu me has pasado mucho mejor, i funciona perfectamente.

Solo he cambiado el (-) por un (+), y muy bien.

jachguate 30-10-2003 20:28:44

guenisimo!

Espero mis chelas... ;)


La franja horaria es GMT +2. Ahora son las 12:28:16.

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