Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Problem beim Programmbeenden (https://www.delphipraxis.net/5251-problem-beim-programmbeenden.html)

looser 29. Mai 2003 16:18


Problem beim Programmbeenden
 
Beim Laden der Form wird eine WAV mittels

playsound ('wave.wav',0,snd_async or snd_loop);

in einer Endlosschleife wiedergegeben.


Beim beenden mittels X (Schließen) Buttons habe ich
im OnClose Ereignis der Form dann stehen

playsound (nil,0,snd_async);

Das Programmfenster schließt, der Sound hört auf aber
in dem Moment geht die CPU-Last der EXE gegen 100%
(und die EXE verschwindet eben auch nicht).

Was mache ich falsch ????

Alexander 29. Mai 2003 16:37

Ich denke mal, dass das an der Endlosschleife liegt.
Nimm die doch einfach mal heraus und probiere es nochmal und berichte ;-)

FriFra 29. Mai 2003 17:50

Du kannst Deinen Sound auch ein letztes mal abspielen... ohne loop:

playsound ('wave.wav',0,snd_async);

Damit wäre die Schleife auch abgebrochen.

Vielleicht verursacht ja das "nil" den Fehler...

looser 29. Mai 2003 19:03

:(
Habe probiert Sound zu starten mit ...

playsound ('wave.wav',0,snd_async or snd_loop);
playsound ('wave.wav',0,snd_async);
playsound ('wave.wav',0,snd_sync);

Sound spielt immer an

wenn ich beim OnClose 'wave.wav' anstatt nil eingebe
hört der Sound nicht mehr auf.

In allen Fällen aber immer 100% CPU-Auslastung und Task
läuft weiter.
:shock:

APP 29. Mai 2003 20:43

Hallo

OH sagt:
Zitat:

pszSound

A string that specifies the sound to play. If this parameter is NULL, any currently playing waveform sound is stopped. To stop a non-waveform sound, specify SND_PURGE in the fdwSound parameter.
und meint

Delphi-Quellcode:
playsound(0,0,snd_async or snd_loop);
oder
Delphi-Quellcode:
playsound(0,0,SND_PURGE);
statt nil 0

Sollte nun funken.

looser 30. Mai 2003 07:33

:cry:

SND_PURGE bringt's auch nicht.
CPU geht auf 100% bei EXE.

Heul, schnief .... einer muß es doch wissen ...

Hilfe !!

FriFra 30. Mai 2003 08:31

Was passiert, wenn Du dich garnicht weiter um den Sound kümmerst und Deine Anwendung einfach mit Halt; abschiesst?

APP 30. Mai 2003 09:57

Hallo,

nun, ich habe eine Mini-App geschrieben und bei mir geht die CPU Auslastung auf max. 5% (während der Laufzeit):

Delphi-Quellcode:
...
VAR
   Form1                           : TForm1;
IMPLEMENTATION
USES
   MMSystem;
{$R *.DFM}
PROCEDURE TForm1.Button1Click(Sender: TObject); //Start
BEGIN
   playsound('C:\X-Files.wav', 0, snd_async OR snd_loop);
END;
PROCEDURE TForm1.Button2Click(Sender: TObject); //Stopp
BEGIN
   playsound(NIL, 0, SND_PURGE);
END;
PROCEDURE TForm1.FormClose(Sender: TObject; VAR Action: TCloseAction); // Close Form
BEGIN
   playsound(NIL, 0, snd_async OR snd_loop);
END;
  • Kann es sein, dass in Deinem onClose Ereignis mehr drinnen steht, oder das Du nicht alle Ressourcen freigibst,...??
  • Ist die CPU Auslastung in Deinem Programmm gleich, wenn Du playsound auskommentierst?
  • Wie groß ist Dein Wav-File?
p.s.:
OK.,OK., NIL ist besser als 0 :oops:
Warnung in der IDE:
Code:
252. Konstante 0 wurde zu NIL konvertiert

flomei 30. Mai 2003 12:23

Bin mir ja nicht sicher aber könnte
Delphi-Quellcode:
Applicaton.Terminate;
nicht helfen wenn nichts mehr gespeichert werden muss und so?
Vielleicht mal testen und gucken ob die CPU Auslastung immer noch so hoch geht.

MfG Florian :hi:

looser 30. Mai 2003 18:40

Habe jetzt mal ein // vor alle soundbefehle gesetzt.
Es wird also keinerlei Soundkommando gegeben.
Und siehe da CPU immer noch bei 100% wenn X-Button
gedrückt wird.

Es liegt also nicht am Sound.
Jetzt muß ich mal suchen. :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:46 Uhr.
Seite 1 von 2  1 2      

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