Dir ist doch bestimmt aufgefallen, daß
sndPlaySound eine Funktion ist?
Und Funktionsrückgabewerte sollte man auch auswerten, vorallem wenn es Probleme gibt.
Außerdem sollte man sich die Dokumentation der entsprechenden Funktion ruhig mal ansehn.
Zitat von
MSDN: sndPlaySound:
Return value
Returns TRUE if successful or FALSE otherwise.
Remarks
If the specified sound cannot be found, sndPlaySound plays the system default sound. If there is no system default entry in the registry or WIN.INI file, or if the default sound cannot be found, the function makes no sound and returns FALSE.
Und siehe da, schon weißt du, warum ein anderer Ton zu hören ist.
ExtractFilePath(Application.Exename)
oder
ExtractFilePath(ParamStr(0))
sind recht einfach zu verstehen, aber dafür schau dir diesen Code in seinen Einzelteilen an.
Application.Exename
oder
ParamStr(0)
geben den Pfad der eigenen EXE an.
Man glaubt es kaum, aber auch Delphi und Lazarus haben ein Hilfesystem, wo sowas drinsteht, so wie auch für
ExtractFilePath.
Das Ganze gibt also den Pfad (das Verzeichnis) zurück, worin auch die EXE liegt.