https://foro.gambas-es.org/viewtopic.php?f=1&t=4903&p=28321#p28321
-----------------------------------
Shell
Jueves, 01 Octobre 2015, 09:05

Problemas Con La Clase DIalog Y Sound
-----------------------------------
Hola!.

Hace unos días comentaba que tuve un problema con la clase Dialog y el tipo Sound.

El código era tan sencillo como este:

[code linenumbers=false syntax=gambas]
Public Sub btnAbrir_Click()

  Dim ruta As String
  Dim misonido As Sound
  
  Dialog.Title = "Selecciona un archivo de audio"
  Dialog.Filter = ["*.ogg", "Archivos de audio"]
  Dialog.Path = User.Home
  If Dialog.OpenFile() Then Return
  ruta = File.Load(Dialog.Path)      
  misonido = Sound.Load(ruta)  
  misonido.play() 
  
  Catch
    Message.Info("Error")
  
End
[/code]

Error que produce:
- Violación de segmento
- No se reproduce la canción.
- Se muestra en la consola:

[quote]
gb.sdl2.audio: warning: Mixer not built with MP3 support
gb.sdl2.audio: warning: Mixer not built with MOD timidity support
[/quote]

Cambiemos el código. 

[code linenumbers=false syntax=gambas]
Public Sub btnAbrir_Click()

  Dim ruta As String
  Dim misonido As Sound
  
  Dialog.Title = "Selecciona un archivo de audio"
  Dialog.Filter = ["*.ogg", "Archivos de audio"]
  Dialog.Path = User.Home
  If Dialog.OpenFile() Then Return
  ruta = File.Load(Dialog.Path)  
  Print ruta

 Catch
   Message.Info("Error")
  

End
[/code]

Error que produce:

- En la consola se muestra como si mostrásemos el contenido del archivo de sonido!.

Cambiemos otra vez el código. Eliminamos la variable de cadena ruta.

[code linenumbers=false syntax=gambas]
Public Sub btnAbrir_Click()
 
  Dim misonido As Sound
  
  Dialog.Title = "Selecciona un archivo de audio"
  Dialog.Filter = ["*.ogg", "Archivos de audio"]
  Dialog.Path = User.Home
  If Dialog.OpenFile() Then Return 
  misonido = Sound.Load(Dialog.path)   
  misonido.play() 
  
 Catch
   Message.Info("Error")
  

End
[/code]

Errores que se producen:
[quote]
gb.sdl2.audio: warning: Mixer not built with MP3 support
gb.sdl2.audio: warning: Mixer not built with MOD timidity support
[/quote]

Pero el archivo es reproducido correctamente.

Al eliminar la variable del tipo sound la ruta es mostrada correctamente.

[code linenumbers=false syntax=gambas]
Public Sub btnAbrir_Click()
 
  'Dim misonido As Sound
  Dim ruta As String
  
  Dialog.Title = "Selecciona un archivo de audio"
  Dialog.Filter = ["*.ogg", "Archivos de audio"]
  Dialog.Path = User.Home
  If Dialog.OpenFile() Then Return 
  ruta = Dialog.Path
  Print ruta
  ' misonido = Sound.Load(Dialog.path)   
  ' misonido.play() 
  
 Catch
   Message.Info("Error")
  

End
[/code]

Salida en la consola:
[quote]
/home/jack/Prueba/Man With Two Hearts.ogg
[/quote]
Errores:
- Funciona correctamente esa parte de código

Y este es otro ejemplo funcional:

[code linenumbers=false syntax=gambas]
Public Sub btnAbrir_Click()

  Dim misonido As Sound
  Dim ruta As String 
    
  ruta = User.Home &/ "Prueba/Man With Two Hearts.ogg"
  
  misonido = Sound.Load(ruta)
  misonido.play() 
 
End
[/code]

Saludos


