Und was verstehst du jetzt daran nicht? Das von dir beobachtete Verhalten ist der abgelaufene Codefluss oder Block von Anweisungen, die wirklich ausgeführt wurden. Hast du dich noch nicht gefragt, wie man feststellt, ob ein Programm die Anweisungen ausführt, die man sich im Kopf vorstellt? Genau dafür sind der Debugger und die Haltepunkte da (es gibt noch mehr Dinge, aber die sind weniger wichtig).
Im Konkreten hast du also festgestellt, dass Anweisungen übersprungen wurden, die deiner Meinung nach ausgeführt werden sollten. Nun weißt du, welche das sind und solltest untersuchen, warum das so ist. Am einfachsten ist es wohl, sich den Pfad der abzuspielenden Datei mal mittels ShowMessage anzeigen zu lassen und zu prüfen, ob's diese Datei wirklich gibt. In Codeform:
Delphi-Quellcode:
procedure PlayMySound(SndName: String); //uses mmSystem
var
FilePath: String;
begin
FilePath := ExtractFilePath(ParamStr(0)) +'Musik\' + SndName + '.wav';
ShowMessage(FilePath); //<-- Diese Zeile hinzugefügt
if FileExists(FilePath) then
//SndPlaySound(PAnsiChar(FilePath), SND_ASYNC ); //Alternative
PlaySound(PChar(FilePath), hInstance, SND_ASYNC or SND_FILENAME);
end;
MfG Dalai