none
habe Resources probleme RRS feed

  • Frage

  • Hallo
    ich habe ein problem unswar soll mein programm musik abspielen die in den Resources ist der code ist zurzeit bei mir
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    My.Computer.Audio.Play(My.Resources.test.ToString)
    End Sub
    aber da findet er die datei nicht

    • Bearbeitet Warfley Mittwoch, 13. Mai 2009 14:27
    Mittwoch, 13. Mai 2009 14:19

Antworten

  • Hi,

    Dein Problem liegt darin, dass My.Computer.Audio.Play() folgende Überladungen kennt:

    My.Computer.Audio.Play(location As String)
    My.Computer.Audio.Play(location As String, playMode As Microsoft.VisualBasic.AudioPlayMode)
    My.Computer.Audio.Play(data As Byte(), playMode As Microsoft.VisualBasic.AudioPlayMode)
    My.Computer.Audio.Play(stream As System.IO.Stream, playMode As Microsoft.VisualBasic.AudioPlayMode )

    Du benötigst offensichtlich die 4. Möglichkeit, da bei den ersten beiden der Pfad der Datei und bei der dritten ein Byte-Array als Parameter übergeben werden müssen.
    Das, was du in den Resourcen hast, ist ein Stream.
    Das bedeutet, zur Lösung deines Problems, musst du noch einen Wert für den zweiten Parameter playMode angeben. Dabei hast du folgende Möglichkeiten:

    AudioPlayMode.Background
    AudioPlayMode.BackgroundLoop
    AudioPlayMode.WaitToComplete

    Das normale ist
    AudioPlayMode.Background.

    Dein Code lautet also folgendermaßen:

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    My.Computer.Audio.Play(My.Resources.test, AudioPlayMode.Background)
    End Sub
    mit freundlichen Grüßen
    Imperium_Romanum

    MAY THE SOURCE BE WITH YOU!
    • Als Antwort markiert Warfley Freitag, 15. Mai 2009 21:54
    Freitag, 15. Mai 2009 16:45

Alle Antworten

  • Hallo Warfley,

    welcher Pfad samt Dateiname wird denn angegeben, wenn Du an der Stelle der obigen ...Play-Zeile die folgende verwendest?

    MessageBox.Show(My.Resources.test.ToString)

    Und existiert diese Datei dann auch an dem angegebenen Ort?
    Wenn ja, ist die Datei eine (echte) Wave (.wav)-Datei?
    Wenn ja, kannst Du die Datei durch Doppelklick im Windows Explorer zum Abspielen bringen?
    Wenn ja, wie äußert sich denn das "findet er die Datei nicht" ganz konkret?
    Mittwoch, 13. Mai 2009 21:49
  • welcher Pfad samt Dateiname wird denn angegeben, wenn Du an der Stelle der obigen ...Play-Zeile die folgende verwendest?

    MessageBox.Show(My.Resources.test.ToString)
    "System.IO.UnmanagedMemoryStream
    

    Und existiert diese Datei dann auch an dem angegebenen Ort?
    ja

    Wenn ja, ist die Datei eine (echte) Wave (.wav)-Datei?

    ja er kann sie unter C:\test.wav abspielen

    Wenn ja, kannst Du die Datei durch Doppelklick im Windows Explorer zum Abspielen bringen?

    es öffnet sich itunes

    Wenn ja, wie äußert sich denn das "findet er die Datei nicht" ganz konkret?

    Stellen Sie sicher, dass eine Sounddatei am angegebenen Speicherort vorhanden ist.
    Donnerstag, 14. Mai 2009 14:37
  • Hallo Warfley,

    "System.IO.UnmanagedMemoryStream" ist der Typ der Ressource, nicht der Dateipfad (was eine andere mögliche Bedienung von Play gewesen wäre, eben bei einer String-Ressource). Den Typnamen der Ressource wolltest Du sicher nicht an die Play-Methode übergeben, sondern die Ressource (den Stream) selber. Also lass mal das ".ToString" aus Deinem Play-Parameter weg.

    Viel Erfolg!
    • Als Antwort vorgeschlagen Forenteam Donnerstag, 14. Mai 2009 19:52
    Donnerstag, 14. Mai 2009 19:51
  • Leider funktionirt es ohne ".toString" nicht dann hat er den Fehler " Der Wert vom Typ "System.IO.UnmanagedMemoryStream" kann nicht in "String" konvertiert werden."
    Freitag, 15. Mai 2009 14:33
  • Hi,

    Dein Problem liegt darin, dass My.Computer.Audio.Play() folgende Überladungen kennt:

    My.Computer.Audio.Play(location As String)
    My.Computer.Audio.Play(location As String, playMode As Microsoft.VisualBasic.AudioPlayMode)
    My.Computer.Audio.Play(data As Byte(), playMode As Microsoft.VisualBasic.AudioPlayMode)
    My.Computer.Audio.Play(stream As System.IO.Stream, playMode As Microsoft.VisualBasic.AudioPlayMode )

    Du benötigst offensichtlich die 4. Möglichkeit, da bei den ersten beiden der Pfad der Datei und bei der dritten ein Byte-Array als Parameter übergeben werden müssen.
    Das, was du in den Resourcen hast, ist ein Stream.
    Das bedeutet, zur Lösung deines Problems, musst du noch einen Wert für den zweiten Parameter playMode angeben. Dabei hast du folgende Möglichkeiten:

    AudioPlayMode.Background
    AudioPlayMode.BackgroundLoop
    AudioPlayMode.WaitToComplete

    Das normale ist
    AudioPlayMode.Background.

    Dein Code lautet also folgendermaßen:

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    My.Computer.Audio.Play(My.Resources.test, AudioPlayMode.Background)
    End Sub
    mit freundlichen Grüßen
    Imperium_Romanum

    MAY THE SOURCE BE WITH YOU!
    • Als Antwort markiert Warfley Freitag, 15. Mai 2009 21:54
    Freitag, 15. Mai 2009 16:45