PDA

Ver la Versión Completa : Ayuda soy novato, ¿COmo cargo el nombre de un archivo wav?


gerardorom
07-12-2007, 02:20:32
Ayuda por favor, mi proyecto finde carrera esta en juego. Tengo que hacer una aplicación, tome un .wav, le aplique un efecto, y lo debuelva por los altavoces. No he usado nunca builder, se "leer" un wav como fichero binario, y reproducirlo con la API de windows, pero, ¿como hago para que el usuario eliga el archivo .wav a cargar? es decir, al "fread" le tengo que pasar la cadena de caracteres del archivo a leer... ¿como lo hago?



Mil gracias de antemano... si alguien se presta a resolverbe dudillas faciles de este estilo le estare eternamente agradecido, me queda poco tiempo :(

Gracias!!

oracle
07-12-2007, 14:20:29
Asumiendo que estas realizando una app visual en CBuilder seria bueno que consultaces los componentes que tiene la Paleta Dialogs, ahi encontraras lo que necesitas....



Saludos

lfb
10-12-2007, 23:23:48
Bueno colega yo tambien soy nuevo en la programacion pero pienso que te puedo ayudar en una parte
Mira:
Tu puedes instalar un componente ActiveX que se llama Windows Media Players en el cual puedes reproducir el archivo wav

Para instalar este componente en la barra de menu Componentes en "Import ActiveX Control" ahi en un listBox al final es que aparece este componente luego lo seleccionas y despues en el boton "Install"
Tienes que mirar en que paleta lo vas a instalar, predeterminado viene en la paleta ActiveX
Bueno despues que los instalas lo seleccionas en la paleta que seleccionaste y lo insertas en la Form este componente tiene una propiedad que se llama FileName si te das cuenta quiere decir nombre del archivo debes poner la dirección del archivo a reproducir
Si quieres que el usuario seleccione el archivo que quiere reproducir debes insertar un OpenDialog en la paleta Dialogs si nunca has trabajado con este componente me puedes escribir a esta dirección sadis@infosol.gtm.sld.cu para explicarte entonces como trabajar con el.

Bueno saludos y espero que esto te haya servido para algo
;)

Gabo
11-12-2007, 12:02:25
No sé si gerardorom ya habrá resuelto su problema o no, pero de su pregunta, deduzco que el único problema que tenía era que el usuario eligiera el archivo a ejecutar, que tal como han indicado oracle y lfb se resuelve con un OpenDialog de la paleta Dialogs.

Usarlo es muy sencillo, de hecho al darle a F1 sobre el control te encuentras con un enlace que dice "Using TOpenDialog" donde te muestra lo siguiente:



if(OpenDialog1->Execute()){
filename = OpenDialog1->FileName;
};


This code will show the dialog box and if the user presses the OK button, it will copy the name of the file into a previously declared AnsiString variable named filename.


Al usar el método Execute() se muestra un "cuadro de diálogo" donde el usuario elige el archivo, y si hace click en Aceptar, el archivo que haya elegido quedará guardado en la propiedad FileName.

Un consejo para gerardorom, cierto es que han pasado sólo 4 días y tal vez no hayas podido entrar todavía al foro, pero acostúmbrate a continuar los hilos que creas, indicando tus progresos, si has solucionado el problema o no, y agradeciendo al que te ha ayudado. Por supuesto, lee la Guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php).

Si quieres que el usuario seleccione el archivo que quiere reproducir debes insertar un OpenDialog en la paleta Dialogs si nunca has trabajado con este componente me puedes escribir a esta dirección s a d i s @ i n f o s o l . g t m . s l d . c u para explicarte entonces como trabajar con el.

Bueno saludos y espero que esto te haya servido para algo


Hola lfb, se te ve con muchas ganas de participar y eso es muy bueno. De todas formas, te invito a leer (si todavía no lo has hecho) la Guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php). En vez de solucionar los problemas mediante correos privados, utiliza el hilo creado, ya que éste es leído por otros usuarios que se pueden beneficiar también de él.

Además, te aconsejo no pongas tu dirección de correo así tan "libremente". ;)

gerardorom
13-12-2007, 20:07:41
Muchisimas gracias! Perdon por tardar, es que cuando me atasco pues me pongo a trabajar en otra cosa para no perder el tiempo (estaba liado con la memoria jiji). Se ve bastante sencillo, lo voy a intentar, ya os contare,

¡Saludos y , de nuevo, gracias!

gerardorom
13-12-2007, 22:34:57
Bien!!!!! ¡Lo he conseguido! He tenido que hacer una conversion de Ansistring a char despues pero no me ha dado problemas. Pero ahora me surge otra duda que no se si continuarla en este post o abrir uno nuevo. Bueno os la explico y si eso pues me deciis que lo mueva a un nuevo post:


Mi programa por ahora tiene un boton abrir (donde se elige un arcchivo wav) y otro boton "play" donde lo re produce, atraves de la libreria Api de windows (leyendo el fichero como binario con fread y procesandolo muestra a muestra con una serie de buffer y una serie de bucles for).

He creado otros dos botones "pause" y "restart" donde he incluido unas funciones del Api que supuestamente realizan estas funciones, pero cuando le doy a "play" no me permite pulsar ningun otro boton (esdecir, no sale de la rutina asociada al click de ese boton hasta que no termina de reproducir).

¿Como puedo hacer que salte de esa rutina del botton1 al botton2, y que luego , al pulsar "restart" vuelva al punto donde se quedó??

Perdonen mi ignorancia pero me encuentro bastante perdido en esto de la programacion orientada a eventos, y no encuentro ningun tutorial que me explique esto bien.

Muchisimas gracias de nuevo por la ayuda prestada.

Gabo
14-12-2007, 11:40:40
Pero ahora me surge otra duda que no se si continuarla en este post o abrir uno nuevo. Bueno os la explico y si eso pues me deciis que lo mueva a un nuevo post:


Será mejor que abras otro hilo, ya que tu nueva pregunta no tiene nada que ver con el título ni con la pregunta inicial.

He creado otros dos botones "pause" y "restart" donde he incluido unas funciones del Api que supuestamente realizan estas funciones, pero cuando le doy a "play" no me permite pulsar ningun otro boton (esdecir, no sale de la rutina asociada al click de ese boton hasta que no termina de reproducir).

¿Como puedo hacer que salte de esa rutina del botton1 al botton2, y que luego , al pulsar "restart" vuelva al punto donde se quedó??


Cuando expliques tu problema en el otro hilo, será mejor que pongas el código que ocupas en ese botón, para que el resto pueda ver donde esta el error y te pueda ayudar.

Perdonen mi ignorancia pero me encuentro bastante perdido en esto de la programacion orientada a eventos, y no encuentro ningun tutorial que me explique esto bien.

Seguro que en el FTP (http://www.terawiki.clubdelphi.com/) encontrarás buenos libros, manuales, etc.