Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-04-2004
mrmanuel mrmanuel is offline
Miembro
 
Registrado: may 2003
Posts: 135
Poder: 21
mrmanuel Va por buen camino
Hacer sonar el Speaker del Ordenador

Hola a todos.

Este golpe una facil.

¿Cómo puedo hacer sonar el Speaker del Ordenador durante 'X' segundos?

Un saludo.
__________________
Un Saludo a todos/as
Responder Con Cita
  #2  
Antiguo 30-04-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Beep(Frecuencia, Duracion);
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 30-04-2004
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
A mi en delphi 7 me dice:

[Error] Unit1.pas(28): Too many actual parameters

Y si pruebo quitándo los parámetros, me salta el "¡¡PONG!!" del windows por el altavoz externo
__________________
:)
Responder Con Cita
  #4  
Antiguo 30-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
He de aclarar que hay dos versiones de beep.

unit sysutils:
En mi versión de delphi (la 4), beep es un beep del sistema (que efectivamente hace sonar el altavoz), pero no se pueden especificar ni la frecuencia, ni la duración.

unit windows:
Pero esto todavia existe en Delphi??? me ha hecho recordar los viejos tiempos de turbo pascal, con el procedure sound

Es la descrita por delphi.com.ar; la fecuencia está dada en Hertz (hz) y la duración en milisegundos.

Para diferenciar cual de las dos queres usar, es mejor calificar completamente la función... es decir, en lugar de usar beep, usar sysutils.beep o windows.beep.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 30-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por jachguate
unit windows:
Pero esto todavia existe en Delphi???
Hombre, ¿a tal grado alucinas a Windows???



// Saludos
Responder Con Cita
  #6  
Antiguo 30-04-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Si me refería al Beep de la unit Windows (falto la aclaración), el tema es que con el SysUtils.Beep no puede definir el tiempo como pedía.
Obviamente si queremos desarrollar algo que se abtraiga de la plataforma, nos convendrá utilizar el Beep de SysUtils

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #7  
Antiguo 30-04-2004
Avatar de Jure
Jure Jure is offline
Miembro
 
Registrado: may 2003
Ubicación: Valencia, Vzla.
Posts: 528
Poder: 21
Jure Va por buen camino
Lightbulb ... prueba esto...

Hay una funcion de la API que llama MessageBeep (mira la ayuda de DELPHI si deseas mas info. de ella) si le das un como parametro el valor -1 puedes usar el speaker del PC. la puedes usar asi:

Código Delphi [-]
   MessageBeep(word(-1));


No le puedes dar la duración pero si lo manejas con Sleep en un ciclo tal vez puedas hacer lo que quieres.

Si miras este link tienes un ejemplo mas o menos como te digo que te puede ayudar:

http://community.borland.com/article/0,1410,16838,00.html

Espero que te sirva.

Jure.
__________________

"Dios juzga al árbol por sus frutos, y no por sus raíces"


Como esta la sibidigua ???
Responder Con Cita
  #8  
Antiguo 01-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
pero que word(-1) no es igual a 65535???

Este tipo de "constantes" me parece un exceso... en serio!
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #9  
Antiguo 01-05-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por jachguate
Este tipo de "constantes" me parece un exceso... en serio!
Puede ser. Lo que pasa es que la documentación especifica que el valor debe ser -1. Claro que la documentación también especifica que el parámetro es un entero sin signo pero bueno...



// Saludos
Responder Con Cita
  #10  
Antiguo 01-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
No me digas que esa documentación es de Microchof, que no te lo creo!!!

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #11  
Antiguo 01-05-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No te lo digo

Responder Con Cita
  #12  
Antiguo 01-05-2004
Avatar de Jure
Jure Jure is offline
Miembro
 
Registrado: may 2003
Ubicación: Valencia, Vzla.
Posts: 528
Poder: 21
Jure Va por buen camino
Lightbulb ... encontre esto ...

Cita:
Empezado por jachguate
pero que word(-1) no es igual a 65535???

Hola jachguate no me habia fijado, lo habia usado tal como consegui el codigo sin prestarle atención.
Cita:
Empezado por roman
...Lo que pasa es que la documentación especifica que el valor debe ser -1. ...

roman tiene razón, en la documentación de la API indica que el valor debe ser -1 (0xFFFFFFFF) para usar el PC Speaker pero revisando la unit Windows me encontre con esto:
Código Delphi [-]
Function MessageBeep(uType:  UINT):  BOOL;  // Windows Unit

el tipo UINT es un entero sin signo, realmente no se si sera un bug o la declaración de esta función de la API debe hacerse asi en Pascal. Pero explica porque esa conversión.

Gracias por las acotaciones.

Jure.
__________________

"Dios juzga al árbol por sus frutos, y no por sus raíces"


Como esta la sibidigua ???
Responder Con Cita
  #13  
Antiguo 01-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
La interpretación del valor 0xFFFFFFFF (o $FFFFFFFF para los fanáticos de pascal) depende precisamente de si se trata de un entero con signo, o de un entero sin signo. Pero el valor máximo de un tipo word (2 bytes), en todo caso, es 0xFFFF ($FFFF) que es equivalente a 65,535. Por el contrario, si se trata de un SmallInt (también 2 bytes) el valor 0xFFFF ($FFFF) significa -1 (debido a que el bit del signo está encendido!).

Si Uint es de 32 bits... sin signo, el valor 0xFFFFFFFF, es equivalente a 4,294,967,295. Al haber tremenda revolución de tipos... seria interesante ver lo que el compilador de delphi hace... como traslada word(0xFFFF) a Uint... lo lógico para mi, es que lo haga como 0x0000FFFF... pero no se.. alguien tiene tiempo de hacer una prueba??

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #14  
Antiguo 01-05-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Jure
no se si sera un bug o la declaración de esta función de la API debe hacerse asi en Pascal[/color]
Ni es bug ni es que así tenga que declararse en Pascal. Cuando dije:

Cita:
Empezado por roman
la documentación también especifica que el parámetro es un entero sin signo
me refería a la documentación del sdk de Windows, o sea que así es la declaración en C.

Pero vamos, no seamos tan duros con MS . La función requiere un parámetro distinto de los otros (cualquier cosa que esto signifique) y por legibilidad consideraron mejor -1 que 0xFFFFFFFF.

// Saludos
Responder Con Cita
  #15  
Antiguo 01-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

Cita:
Empezado por Jure
Pero explica porque esa conversión
Creo que está lejos de explicarlo... como lo ves en mi post anterior.. yo realmente estoy mas confundido!!!

Si delphi lo declara asi en la unit Windows, es porque el api de windows espera un entero sin signo de 32 bits... pero que tiene que ver el Word(-1) en todo esto???

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #16  
Antiguo 01-05-2004
Avatar de Jure
Jure Jure is offline
Miembro
 
Registrado: may 2003
Ubicación: Valencia, Vzla.
Posts: 528
Poder: 21
Jure Va por buen camino
... yo tambien ...

Cita:
Empezado por jachguate
...Si delphi lo declara asi en la unit Windows, es porque el api de windows espera un entero sin signo de 32 bits... pero que tiene que ver el Word(-1) en todo esto...


La funcion MessageBeep de la API espera valor -1 para activar el PC Speaker pero la declaración de la función en Delphi pide que sea un valor entero (UINT).

Pero mira que uso MessageBeep($ffffffff ) y bingo: funciona.

Ahora ya me estoy confundiendo tambien.

....
__________________

"Dios juzga al árbol por sus frutos, y no por sus raíces"


Como esta la sibidigua ???
Responder Con Cita
  #17  
Antiguo 03-05-2004
mrmanuel mrmanuel is offline
Miembro
 
Registrado: may 2003
Posts: 135
Poder: 21
mrmanuel Va por buen camino
Hola y muchas gracias a todos.

1º: No sabia iba a liar lo que he liado con el puñetero Beep del speaker, jejeje.


2º: Muchas gracias a todos, probaré lo que habéis dicho y os comento el resultado, de momento no se si funciona porque el Pc desde donde estoy programándolo no tiene el dichoso altavoz, he de hacerme con uno y probarlo.


Nuevamente gracias a todos
__________________
Un Saludo a todos/as
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 23:25:49.


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