Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   insertar sonidos en delphi con el ejecutable (https://www.clubdelphi.com/foros/showthread.php?t=79465)

ruth22 08-07-2012 02:23:46

insertar sonidos en delphi con el ejecutable
 
Hola a todos, tengo uns duda muy grande acerca de como introducir en el ejecutable de delphi sonidos que ya los tengo en formato .wav. La cuestion es, estoy utilizando el codigo de PlaySound y alli debo decirle la ruta de mi sonido, ejemplo (PChar('D:\PEDAGOGICO\DOKO\SONIDOS\CORRECCIONES\bien.wav'), 0, SND_SYNC);

De esa manera funciona perfectamente porque lo hago de mi propia computadora, pero no me sirve en otras pc porque obviamente no encuentra la ruta del sonido ya que es la de mi computador. He leido sobre crear archivos de recursos para ingresar los sonidos al ejecutable pero no se como crear esos archivos.

Si alguien me puede ayudar a crear este tipo de archivos . res e insertarlos estaria muy agradecida. :)

ecfisa 08-07-2012 09:17:14

Hola ruth22.

Voy a intentar darte un ejemplo de la forma más sencilla que me es posible:

1) Abri el block de notas
2) Escribí algunos archivos wav precedidos por su ruta, por ejemplo:
Código:

chimes WAVE "C:\WINDOWS\MEDIA\CHIMES.WAV"
chord WAVE "C:\WINDOWS\MEDIA\CHORD.WAV"
tada WAVE "C:\WINDOWS\MEDIA\TADA.WAV"

3) Guarda el archivo en la carpeta de tu aplicación con el nombre SOUND.RC (o el nombre que desees pero la extensión debe ser .RC).
4) Busca el archivo BRCC32.EXE. La ubicación depende de la versión de Delphi, pero seguramente esté en la carpeta Archivos de programa\...\Delphi_N\bin
5) Desde la línea de comando y ubicada en la carpeta de tu aplicación hace:
Código:

C:\RUTA_AL_ARCHIVO_BRCC32_EXE\BRCC32 SOUND.RC
Esto te generará el archivo SOUND.RES y aquí finaliza la operación desde el prompt.

Luego, ya en Delphi, para incluir el archivo de recurso y ejecutar los WAV:
Código Delphi [-]
...
implementation {$R *.dfm} {$R SOUND.RES }

uses MMSystem;
...

procedure TForm1.Button1Click(Sender: TObject);
begin
  PlaySound('chimes', 0, SND_RESOURCE);
  PlaySound('chord', 0, SND_RESOURCE);
  PlaySound('tada',0, SND_RESOURCE);
end;
...

En este enlace podes ampliar información sobre el tema: Storing Resource(WAV, MP3,...)

Saludos.

marcoszorrilla 08-07-2012 11:18:54

Yo hago esto:

Código Delphi [-]
procedure TfrConFacturas.spModifClick(Sender: TObject);
begin
    //
  if (Estado =2) and (DmFact.IBDtsFacturasCONT.Value = 'S') then
  begin
  sndPlaySound('C:\Windows\Media\Ringout.wav',
SND_NODEFAULT Or SND_ASYNC Or SND_LOOP);
  ShowMessage('ATENCION:'+ Chr(10)+Chr(13)+'Factura contabilizada, desmárquela,'+ Chr(10)+Chr(13)+' proceda a los cambio y comuníquelo'+ Chr(10)+Chr(13)+' a Contabilidad');
  sndPlaySound(nil, 0); // Detiene el sonido 
  end
  else
  begin
  Application.CreateForm(TfrModVentas, frModVentas);
  frModVentas.ShowModal;
  end;
end;

Un Saludo.

ruth22 09-07-2012 00:41:16

Esos codigos me funcionan muy bien, el problema viene cuando voy a ejecutar el programa en otra computadora puesto que la ruta de los sonidos es de mi propio disco duro y claro en otra pc no encuentra esa ruta y por tanto no se escuchan :(, muchas gracias por responder :) sabran como hacer lo que planteo?

ecfisa 09-07-2012 00:50:28

Cita:

Empezado por ruth22 (Mensaje 436975)
Esos codigos me funcionan muy bien, el problema viene cuando voy a ejecutar el programa en otra computadora puesto que la ruta de los sonidos es de mi propio disco duro y claro en otra pc no encuentra esa ruta y por tanto no se escuchan :(, muchas gracias por responder :) sabran como hacer lo que planteo?

Hola ruth22.

¿ Leiste los pasos y el código que te indiqué ? :rolleyes: Te pregunto esto por que precisamente hace lo que solicitas...

Saludos.

Neftali [Germán.Estévez] 09-07-2012 15:29:23

Cita:

Empezado por ruth22 (Mensaje 436975)
...puesto que la ruta de los sonidos es de mi propio disco duro y claro en otra pc no encuentra esa ruta y por tanto no se escuchan...

Has probado los ejemplos?
En el que te ha colocado ecfisa, los sonidos van "dentro" del ejecutable, como recursos.
Los path que se adjuntan son en tiempo de compilación, una vez generado el EXE ya no hay problema.

bulc 25-11-2012 20:21:26

CreaUnaCarpetaSonoraYPasala
 
Gracias por la explicación de crear recursos embutidos en el exe.
Otra solución sería colocar los sonidos (\SOUNDS) en una carpeta que cuelgue de la que guarda el ejecutable. De modo que al pasarle a alguien el .EXE también se le incluyan los sonidos. Luego como constantes se incluyen en el código:
Código Delphi [-]
Const
Fagina='C:\... \APLICACION\SOUND\TARARI.WAV'
//Haces un procedure  que requiera un parámetro string:
Procedure Toca(xFile, PChar);
begin
  SndPLaySound(xFile, SND_ASYNC);
end;
Para ejecutarlo pones una línea tal como : Toca(Fagina);
Y no olvides añadir al Uses MMSystem.

Yo es el método que uso, cuando busco solución rápida y sencilla. Va bien. Sin contar el espacio en disco, claro.


La franja horaria es GMT +2. Ahora son las 09:30:45.

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