Playsound + pfad selbst bauen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
nevermore2k
Beiträge: 81
Registriert: Sa 1. Mai 2021, 15:39

Playsound + pfad selbst bauen

Beitrag von nevermore2k »

Hallo,
Ich habe 4 Sounddatein die sollen nacheinander abgespielt werden. Die Benennung ist 1.wav 2.wav 3.wav usw.

Meine Vorstellung im Kopf war das ich einfach per Format oder dem + einen Pfad bauen könnte für Playsound. Das ist wohl nicht so einfach (eventuell ja doch) alla

PlaySound(format('/Sounds/%d.wav',[count]),0,SND_ASYNC);

Das geht leider nicht. da ich einen Ansistring übergebe anstelle von einem PChar. Jetzt sind wir bei meinem Persönlichem Problem. PChar ist glaube ich ein Pointer auf einen Character richtig?
Ich habe im Moment noch keinerlei Vorstellung wie ich das lösen könnte, da ich mit Pointer noch nicht großartig in Berührung gekommen bin in Pascal. Und ich auch nicht genau weiß wonach ich jetzt suchen soll um die Sounds nacheinander abzuspielen. Außer einer Art Switch / Case. Kann mir jemand dabei helfen den Knoten zu lösen?

Grüße

Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

Re: Playsound + pfad selbst bauen

Beitrag von six1 »

PlaySound(PCHAR(format('/Sounds/%d.wav',[count])),0,SND_ASYNC);

:wink:
Gruß, Michael

nevermore2k
Beiträge: 81
Registriert: Sa 1. Mai 2021, 15:39

Re: Playsound + pfad selbst bauen

Beitrag von nevermore2k »

Doch so einfach XD

Vielen Dank :)

Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

Re: Playsound + pfad selbst bauen

Beitrag von six1 »

...das nennt man typecast (typisieren auf Datentyp)
Gruß, Michael

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Playsound + pfad selbst bauen

Beitrag von wp_xyz »

Bitte gib mir Nachhilfe: Was ist das für ein Playsound? Sowas ist mit "Find in files" im ganzen Laz/FPC-Verzeichnis nicht zu finden. Unter Windows heißt das sndPlaySound. Und unter Linux/mac gibt es sowas allgemeines eigentlich gar nicht (aber ich bin da kein Experte). Oder meinst du das PlaySoundPackage im CCR oder OPM? da gibt es eine TPlaySound-Komponente mit einer Methode PlaySound, aber die ist protected und von außen nicht ohne weiteres aufrufbar, und hat andere Aufrufparameter.

nevermore2k
Beiträge: 81
Registriert: Sa 1. Mai 2021, 15:39

Re: Playsound + pfad selbst bauen

Beitrag von nevermore2k »

Danke, das Typecast muss ich mir unbedingt genauer anschauen.

Leider geht das wohl doch nicht so richtig. :( Es kommt nur der Fehler Sound von Windows wenn der Sound abgespielt werden soll. Allerdings keine Fehlermeldung in Lazarus.

wp_xyz:
Ich hab gegoogelt wie man Sound Dateien abspielen kann in Lazarus, und da soll man wohl bei Uses das MMSystem einbinden. Und dann kann man mit "PlaySound(x1:PChar;x2:HModule;x3:DWORD):BOOL" Sounds abspielen. Wenn ich den Pfad an der Stelle von x1 direkt eingebe in der form von "PlaySound('Sounds/1.wav',0,SND_ASYNC);" gehts auch :) Nur irgendwie hats Probleme wenn ich selbst den Pfad bauen möchte.

Falls es natürlich alternativen zu dem PlaySound gibt. Bin ich ganz Ohr.

nevermore2k
Beiträge: 81
Registriert: Sa 1. Mai 2021, 15:39

Re: Playsound + pfad selbst bauen

Beitrag von nevermore2k »

Ja... man sollte auch das erste '/' vom Pfad wegmachen... dann geht alles.

FAALSCH
PlaySound(PCHAR(format('/Sounds/%d.wav',[count])),0,SND_ASYNC);

RICHTIG !
PlaySound(PCHAR(format('Sounds/%d.wav',[count])),0,SND_ASYNC);

Danke für eure Hilfe.

Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

Re: Playsound + pfad selbst bauen

Beitrag von six1 »

hmmm, eigentlich ist das auch nicht ganz richtig...
schau dir das mal an: https://www.freepascal.org/docs-html/rt ... delim.html
Gruß, Michael

nevermore2k
Beiträge: 81
Registriert: Sa 1. Mai 2021, 15:39

Re: Playsound + pfad selbst bauen

Beitrag von nevermore2k »

oh ok. das schau ich mir mal an. Danke

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Playsound + pfad selbst bauen

Beitrag von wp_xyz »

nevermore2k hat geschrieben:
So 2. Okt 2022, 12:35
Ich hab gegoogelt wie man Sound Dateien abspielen kann in Lazarus, und da soll man wohl bei Uses das MMSystem einbinden.
Ach so. Es gibt also in Windows neben sndPlaySound() auch noch ein PlaySound(). Welch Luxus.

Antworten