Grandamakulo 23-06-2023, 12:47
Pues eso, compañeros, ¿cómo obtener el texto plano de un RichText —HTML—, similar a WebPage.ToString, pero sin cargar este componente? Quiero decir, que si hay alguna función de cadena que mi natural torpeza me haya impedido ver.
De momento, me apaño así —las ReGex las he ido encontrando por ahí y adaptándolas al algo corto PCRE de gambas3—:

Código:
Public Function HTMLaTexto(sTexto As String) As String
  ' **** Obtener texto plano de un RichText (HTML).
  ' <<<< sPaso : Devuelve una cadena con texto plano.
  ' >>>> sTexto: Texto formato HTML.
  '' ╔═════════════════════════════════════════════════════════════╗
  '' ║ Atención: PCRE sólo admite texto ASCII extendido, no UTF-8. ║
  '' ║     Los valores obtenidos pueden no ser correctos.          ║
  '' ╚═════════════════════════════════════════════════════════════╝

  Dim sPaso As String
  
  ' Eliminar CSS y JS
  sPaso = RegExp.Replace(sTexto, "<(script|style)[^>]*>(.*?)<.(script|style)>", "", RegExp.Caseless + RegExp.DotAll)
  ' Eliminar comentarios
  sPaso = RegExp.Replace(sPaso, "<!--.*?-->", "", RegExp.DotAll)
  ' Eliminar etiquetas
  sPaso = RegExp.Replace(sPaso, "<(.|\n)*?>", "", RegExp.Greedy)
  ' Eliminar caracteres de edición antes y después
  sPaso = Trim(sPaso)
  Return sPaso

End

Gracias de antemano.
Shell 23-06-2023, 00:17
Buenas!.

Es un juego infantil que hice para resolver una duda que tengo con los sonidos.
A ver si podeís ayudarme.

[Imagen: q817Q94.png]

- Se hace clic en el botón de reproducir el sonido y luego se hace clic en el animal que crees que hace ese sonido.

Como es lógico para un adulto no tiene problema. Ok, cuando se acierta se escucharán los aplausos.
Y ahora viene la pregunta.  Si le doy a reproducir sonido de animal, escucharé dos sonidos a la vez.
Los aplausos y el del animal.

¿ Cómo se podría hacer para que los aplausos cesasen y solo se escuchase el sonido del animal ?.

En realidad hice este ejemplo con la escusa de resolver esta duda. Lo necesito para otro ejemplo. Smile

El código fuente:

FMain:

Código:
' Gambas class file

Const MENSAJE As String = "Haz clic en la imagen del animal que hace ese soindo"

Private canimales As New Collection
Private rutaimagenes As String
Private rutasonidos As String

Private sonidoerror As Sound
Private aplausos As Sound
Private adivinaanimal As String

Public Sub Form_Open()

  Label1.text = MENSAJE
  Me.Text = "Adivina el animal"
 
  rutaimagenes = Application.Path &/ "Imagenes/"
  rutasonidos = Application.Path &/ "Sonidos/"
  sonidoerror = Sound.Load(Application.Path &/ "Sonidos/error.ogg")
  aplausos = Sound.Load(Application.Path &/ "Sonidos/aplausosfin.ogg")
  CreaAnimales()

  Randomize
  DistribuirAnimales

  Timer1.Delay = 3000
  Panel1.Enabled = False

End

Public Sub CreaAnimales()

  CreaObjetoAnimal(rutasonidos, rutaimagenes, "01_cat.png", "gato.wav", "gato")
  CreaObjetoAnimal(rutasonidos, rutaimagenes, "02_pig.png", "cerdo.ogg", "cerdo")
  CreaObjetoAnimal(rutasonidos, rutaimagenes, "04_hippopotamus.png", "hipopotamo.ogg", "hipopotamo")
  CreaObjetoAnimal(rutasonidos, rutaimagenes, "10_chicken.png", "gallina.ogg", "gallina")

End

Public Sub CreaObjetoAnimal(rutasonidos As String, rutaimagenes As String, dibujo As String, sonido As String, nombre As String)

  Dim animal As New Animal

  With animal
    .dibujo = Picture.Load(rutaimagenes & dibujo)
    .sonido = rutasonidos & sonido
    .nombre = nombre
  End With

  canimales.Add(animal, animal.nombre)

End

Public Function DevolverListaNombres(clista As Collection) As String[]

  Dim lista As New String[]
  Dim animal As Animal

  For Each animal In clista
    lista.Add(animal.nombre)
  Next
  Return lista

End

Public Sub DistribuirAnimales()

  Dim unpicturebox As PictureBox
  Dim aanimales As String[]
  Dim azar As Integer
  Dim fondo As Integer[] = [Color.red, Color.green, Color.Blue, Color.Yellow]

  aanimales = DevolverListaNombres(canimales)

  For Each unpicturebox In Panel1.Children
    If unpicturebox Is PictureBox Then
      azar = Rand(aanimales.Max)
      With unpicturebox
        .Mode = PictureBox.Fill
        .Tag = aanimales[azar]
        .Picture = canimales[aanimales[azar]].dibujo
        .Background = fondo[azar]
      End With
      aanimales.Remove(azar)
      fondo.Remove(azar)
    Endif
  Next

  Panel1.Enabled = False
 
End

Public Sub ImagenesDeAnimales_MouseDown()

  If Last.tag = adivinaanimal Then
    Label1.Text = "Correcto!"
    aplausos.Play()
  Else
    Label1.Text = "Incorrecto!"
    sonidoerror.Play()
  Endif
  Panel1.Enabled = False
  Timer1.Start()
   
End

Public Sub btnReproduce_Click()

  Dim lista As String[]
  Dim azar As Integer

  Panel1.Enabled = True  
  lista = DevolverListaNombres(canimales)

  azar = Rand(lista.Max)
  adivinaanimal = lista[azar]
  canimales[adivinaanimal].ReproducirSonido()

End

Public Sub Timer1_Timer()

  Label1.Text = MENSAJE
  DistribuirAnimales()
  Timer1.Stop

End

Clase Animal:

Código:
Property nombre As String Use $nombre
Property sonido As String Use $sonido
Property dibujo As Picture Use $dibujo


Public Sub ReproducirSonido()
 
  Dim ssonido As Sound
 
  ssonido = Sound.Load(Me.sonido)
  ssonido.Play()
 
End

Os subo el ejemplo del juego de los sonidos.

¿ Qué me podéis aconsejar cuando trabaje con sonidos y uso el componente gb.sdl2.audio ?.

Saludos
alberto-moyano 19-06-2023, 05:05
Hola gente, alguien tiene idea de como es posible arreglar este problema que me ha aparecido de la nada.

Sencillamente, no puedo agregar un picture a ninguna parte del formulario (botones, menús, etc.), los iconos que están aplicados no tienen problema, puedo seguir escribiendo código, compilar, etc.

Pero si intento agregar un icono (incluso uno existente en alguna otra parte o formulario) la máquina se congela, pero mal, se bloquea íntegra, tengo que salir a lo bruto, con el botón de reset.

Los íconos son todos SVG.

Busco en internet, pero no hay nada.

Indudablemente algo se estropeó.

Dejo una captura.

Sls
Archivos adjuntos
Páginas (560):    1 160 161 162 163 164 560   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 288
Último miembro: shoUsho
Temas del foro: 1,729
Mensajes del foro: 8,987
Últimos temas
Paren...WAIT !!!
Foro: Aplicaciones/Fragmentos de Código
Último mensaje por: guizans, 25-08-2025, 14:49
Respuestas: 3 - Vistas: 458
GambOS
Foro: General
Último mensaje por: guizans, 20-08-2025, 13:58
Respuestas: 0 - Vistas: 318
Gambas y Wayland
Foro: General
Último mensaje por: guizans, 20-08-2025, 13:56
Respuestas: 6 - Vistas: 597
Odio a gb.Report
Foro: General
Último mensaje por: guizans, 19-08-2025, 10:40
Respuestas: 8 - Vistas: 943
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.