AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi Sounds Problem

Ein Thema von Windowscratcher · begonnen am 9. Mai 2012 · letzter Beitrag vom 20. Mai 2012
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#1

AW: Delphi Sounds Problem

  Alt 10. Mai 2012, 18:24
Wenn der Pfad stimmt, stimmt der Dateiname nicht. Denn die FileExists-Funktion gibt ja nicht ohne Grund False zurück.

MfG Dalai
  Mit Zitat antworten Zitat
Windowscratcher

Registriert seit: 9. Mai 2012
24 Beiträge
 
#2

AW: Delphi Sounds Problem

  Alt 10. Mai 2012, 18:33
@Dalai Ich hab jetzt das hier mal ergänzt (zu Testzwecken)
Code:
procedure PlayMySound(SndName: String); //uses mmSystem
var
  FilePath: String;
begin
  FilePath := ExtractFilePath(ParamStr(0))  + SndName + '.wav';
   ShowMessage(FilePath);
  if FileExists(FilePath) then
      //SndPlaySound(PAnsiChar(FilePath), SND_ASYNC ); //Alternative
     PlaySound(PChar(FilePath), hInstance, SND_ASYNC or SND_FILENAME)
     else //SndPlaySound(PAnsiChar(FilePath), SND_ASYNC ); //Alternative
     PlaySound(PChar(FilePath), hInstance, SND_ASYNC or SND_FILENAME)
end;
Also wird der Befehl ausgeführt, auch wenn "FileExists(Filepath)" false ist. Ich weiß, ich hätte da auch einfach nur den Befehl hinschreiben können, aber ... ich weiß es selber nicht

Natürlich kommt der Fehlerton, wie erwartet.
Ich bin unter Windows 7 und da werden ja keine Dateiendungen angezeigt. Muss ich die Datei dann umbenennen und die Dateiendung hinzufügen?
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#3

AW: Delphi Sounds Problem

  Alt 10. Mai 2012, 18:52
Ich bin unter Windows 7 und da werden ja keine Dateiendungen angezeigt. Muss ich die Datei dann umbenennen und die Dateiendung hinzufügen?
Lass dir die Dateiendungen anzeigen, alles andere ist Pfusch (verstehe eh nicht, warum MS diesen Unsinn seit Jahren vorgibt, der nur für Verwirrung sorgt und Angriffsflächen bietet). Systemsteuerung > Orderoptionen > Register "Ansicht" > Option "Erweiterungen bei bekannten Dateitypen ausblenden" deaktivieren.

MfG Dalai
  Mit Zitat antworten Zitat
Windowscratcher

Registriert seit: 9. Mai 2012
24 Beiträge
 
#4

AW: Delphi Sounds Problem

  Alt 10. Mai 2012, 18:59
Naja, klappt leider weiterhin nicht...
Mein Vater sagt (er war mal Programmierer, ist aber was länger her ), der Dateipfad müsste nicht von "C:" aus starten, sondern vom Projektordner. Stimmt das?
Und wie verfahre ich jetzt mit dem Fehler? (Tut mir leid, dass ich Druck mache, aber ich habe nicht mehr viel Zeit :/ )
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#5

AW: Delphi Sounds Problem

  Alt 10. Mai 2012, 19:03
Naja, klappt leider weiterhin nicht...
Zitat:
Mein Vater sagt [...], der Dateipfad müsste nicht von "C:" aus starten, sondern vom Projektordner. Stimmt das?
Nein. So wie der Pfad da steht, ist er ein absoluter Pfad. Und der Rückgabewert der Funktion FileExists deutet darauf hin, dass es diese Datei nicht gibt. Vom Projektordner aus wäre es ein relativer Pfad, mit denen man immer sehr vorsichtig umgehen muss, denn eine Relation hat immer einen Bezugspunkt.

Zitat:
Und wie verfahre ich jetzt mit dem Fehler?
Gibt es die Datei Modem.wav denn nun in dem angegebenen Verzeichnis, nachdem du die Dateierweiterungen anzeigen lässt? Nicht dass die Datei Modem.wav.wav heißt...

MfG Dalai
  Mit Zitat antworten Zitat
Windowscratcher

Registriert seit: 9. Mai 2012
24 Beiträge
 
#6

AW: Delphi Sounds Problem

  Alt 10. Mai 2012, 19:07
Die Datei existiert und heißt auch nicht Modem.wav.wav. Ich weiß echt nicht, wieso Lazarus so spinnt... Die Datei ist vorhanden, der Pfad ist auch richtig, aber irgendetwas will nicht...
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#7

AW: Delphi Sounds Problem

  Alt 10. Mai 2012, 19:13
Mach mal Lazarus zu, öffne es wieder, lade dein Projekt und starte es via Menü Start > Alles neu kompilieren.

Ergänzung:
Gib mal unter Start > Ausführen folgendes ein (am besten den Kram kopieren):
Code:
"%ProgramFiles%\Windows Media Player\wmplayer.exe" "C:\Users\Filip\Documents\Schule\Physik und Technik\Physik und Technik\PT-Projekt\Programm\Modem.wav"
inkl. der Anführungszeichen. Wird die Datei gefunden und abgespielt?

MfG Dalai

Geändert von Dalai (10. Mai 2012 um 19:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.378 Beiträge
 
Delphi 12 Athens
 
#8

AW: Delphi Sounds Problem

  Alt 10. Mai 2012, 20:36
[edit]
Zitat:
Danke,Danke,Danke!!!! Jetzt klappt es!
Na dann ist ja alles Gut.


Was mir grade aufgefallen ist.
MSDN-Library durchsuchenPlaySound ist natürlich besser und von sndPlaySound sollte man die Finger lassen. Eventuell hat das dann auch keine Probleme mit WAVEs in anderen Bitbreiten.
Wenn man mehr will, dann sollte man sich mal die anderen waveXXX-Funktionen ansehn.
Zitat:
MSDN-Library durchsuchensndPlaySound:

This function offers a subset of the functionality of the PlaySound function; sndPlaySound is being maintained for backward compatibility.
PS: Kann der Delphi-Referenz durchsuchenTMediaPlayer nicht auch WAVEs abspielen?
[/edit]



Delphi-Quellcode:
procedure PlayMySound(SndName: String); //uses mmSystem
var
  FilePath: String;
begin
  FilePath := ExtractFilePath(ParamStr(0)) + SndName + '.wav';
   ShowMessage(FilePath);
  if FileExists(FilePath) then
      //SndPlaySound(PAnsiChar(FilePath), SND_ASYNC ); //Alternative
     PlaySound(PChar(FilePath), hInstance, SND_ASYNC or SND_FILENAME)
     else //SndPlaySound(PAnsiChar(FilePath), SND_ASYNC ); //Alternative
     PlaySound(PChar(FilePath), hInstance, SND_ASYNC or SND_FILENAME)
end;
Ähhhh, du hast du eine Funktion gebaut, welche einen Alternativen Aufruf beinhaltet, hast aber am Ende alles ausgetauscht?

Im If-Then- und im Else-Block steht genau das Selbe drin.
Fazit: Es Das IF vollkommen sinnlos, da beise Male genau das Selbe gemacht wird.

Außerdem, wenn FileExists nichts findes, was soll dann abgespielt werden? Es wurde doch nichts gefunden.


Nonmal nachgefragt, weil ich langsam nicht mehr durchseh:
FileExists liefert immernoch False?

Wenn ja, dann solltest du rausfinden was mit deinem Pfad nicht stimmt und wo deine WAVE-Datei wirklich liegt.
Alles Anderer ist vollkommen sinnlos, denn wenn die Datei nicht dort gefunden werden kann, wohin der Pfad zeigt, dann kann man sonstwas versuchen, diese Datei wird niemals abgespielt.
Was nicht vorhanden ist, das kann auch nicht abgespielt werden.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (10. Mai 2012 um 20:53 Uhr)
  Mit Zitat antworten Zitat
Windowscratcher

Registriert seit: 9. Mai 2012
24 Beiträge
 
#9

AW: Delphi Sounds Problem

  Alt 10. Mai 2012, 21:15
@Himitsu Das mit dem IF und ELSE hab ich nur zum Test gemacht, das hab ich schon längst entfernt. Das Problem lag an der Datei selber, die wurde auf 32-Bit umgewandelt, was komischerweise nicht funktioniert. Wenn man die WAVE-Datei auf 16-Bit umwandelt klappt es.
Noch so ganz nebenbei, kann man seperat von den anderen PlayMySound-Befehlen ein paar SND_SYNC machen? Und gibt es eine Möglichkeit, ohne Mediaplayer mehrere Sounds gleichzeitig zu spielen? Weil ich muss das ja meinem Lehrer abgeben und der hat die Player bestimmt nicht
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#10

AW: Delphi Sounds Problem

  Alt 10. Mai 2012, 21:20
@himitsu

Die Funktion (ohne Else) ist aus meinem Beispiel. Ich hab FileExists da eingebaut, da in dem Programm, aus dem die Funktion ist, es besser war keine Reaktion zu erfahren, wenn die Wav nicht gefunden wurde, als eine falsche Reaktion, z. B. Beep o. Ä. Die SndPlaySound war noch ein Überbleibsel aus der ersten Version.

So wie ich das mitbekommen habe war die Wav schon da wo er sie vermutet hat, und es war auch eine Wav, aus irgendeinem Grund konnte sie aber nicht abgespielt werden. Das ist mir auch schon gelegentlich vorgekommen, z. B. das eine Wav oder eine Film nicht abgespielt wurden, weil irgendwas mit der Wav nicht stimmte. Nach einer Konvertierung klappt es wieder. Was der Grund ist weiß ich nicht, aber die Gründe können gelegentlich minimal sein. So konnte (vielleicht immer noch) der Windows Media Player keine Xvid-AVI abspielen, wenn im FourCC "xvid" statt "XVID" stand. Andere Player hatten das Problem nicht, der WMP brauchte die richtige Schreibweise. Kleine Ursache, große Wirkung.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz