Entwickler-Ecke

Windows API - Was stimmt mit dem Code nicht.


Anonymous - Mi 29.01.03 17:51
Titel: Was stimmt mit dem Code nicht.
Ich wollte in mein Programm einige Soundeffekte einbauen. Allerdings erschien mir für die paar Wav's der Mediaplayer zu aufwändig. Zu viel Aufwand für eine Wav. Deshalb hab ich nach etwas gesucht was schlanker ist und hab dazu meine Tipsammlung durchsucht. Dort hatte ich das gefunden:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
//Sound ohne player
uses MMSystem;
var
  s: Array[0..79] of char;
begin
  StrCopy(s, 'ding.wav');
  sndPlaySound(s, 0);
end;


Nun, das hätte man auch ein wenig anders (kürzer) machen können, aber ich hab es so übernommen. Ich hab daraus eine Prozedur gemacht und paar mal eingebaut. Nun zum Problem. Es ist mir nicht nachvollziehbar wann genau, aber hin und wieder steigt hier der IDE aus. Nur hin und wieder. Es kommt eine Meldung "Access V..." und paar Zahlen (sorry, das nächste mal notiere ich das genauer). Das gestartete Projekt kann ich nicht wieder beenden. Delphi kann ich auch nicht beenden. Es kommt zwar immer wieder die Frage ob ich es beenden will, da ich aber das laufende Projekt nicht beenden kann, kann ich auch delphi nicht beenden. Das System wird auch instabil. Das Ende vom Lied ist das, daß ich den Rechner neu starten muß.

Bei der Exe selbst hatte ich das Problem noch nie. Nur in der Entwicklungsumgebung kommt es zum Problem.

Nun sehe ich in dem oberen Beispiel kein Fehler. Die Null hab ich auch gegen ein konkreten Wert getauscht. Es scheint die Funktion selbst zu sein die nicht stabil ist. Wißt ihr da etwas genaueres? Hattet ihr das Problem auch schon mal? Wie gesagt, ich mußte den Rechner paar mal neu starten.


smiegel - Mi 29.01.03 18:16

Hallo,

normalerweise müsste es funktionieren. Ist sichergestellt, dass der zu spielende Sound-Dateiname nicht länger als 79 Zeichen ist?

Versuche es einmal mit:

Quelltext
1:
  sndPlaySound(PChar('Ding.wav'), SND_ASYNC);                    


Anonymous - Mi 29.01.03 18:38

Im grunde genommen ist es auch die Änderung die ich zuerst vorgenommen habe. Nachdem aber der Fehler kann, hab ich den Originalcode wieder eingesetzt, auch wenn ich nicht glaubte, daß es etwas bringt.