Autor Beitrag
Metschu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 135

Windows XP SP2 Home
Delphi 7; Delphi XE2-Starter
BeitragVerfasst: Mo 24.04.06 12:36 
Hallo Zusammen !

Folgendes Problem:

Ich habe mehrere Wave-Dateien, die ich per CheckBox auswähle und dann nacheinander abspielen möchte. Gleichzeitig soll in einem Label-Feld der Text zu der entsprechenden Wave-Datei stehen. Dies habe ich wie folgt gelöst:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Flag:=SND_SYNC

if checkbox1.checked=true then begin;
 
 label1.caption:='Text im Textfeld';

 sndPlaySound('Sound.wav', Flag);

end;


Leider wird der Text im Labelfeld erst angezeigt, wenn der Sound fertig abgespielt wurde. Werden mehrere Sounds abgespielt, so steht nur der Text der letzten Datei in dem Textfeld.

Auch der Versuch mit
ausblenden Delphi-Quelltext
1:
Flag:=SND_aSYNC					

brachte keinen Erfolg, außer das die Sounds nicht ausgespielt wurden.


Könnte mir da vielleicht einer einen Tip geben?

Danke schonmal.

Gruß


Torsetn
Tilo
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1098
Erhaltene Danke: 13

Win7 geg. WInXP oder sogar Win98
Rad2007
BeitragVerfasst: Mo 24.04.06 12:40 
Hallo,
probierma das hier:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Flag:=SND_SYNC

if checkbox1.checked=true then begin;
 
 label1.caption:='Text im Textfeld';
 Application.ProcessMessages;
 sndPlaySound('Sound.wav', Flag);

end;




Torsetn[/quote]
Metschu Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 135

Windows XP SP2 Home
Delphi 7; Delphi XE2-Starter
BeitragVerfasst: Mo 24.04.06 13:09 
Hi Tilo!

Danke Für die schnelle Antwort.

Hat geklappt ! :zustimm:


Gruß

Torsten
Limster
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 72


Delphi 5 & 7 Enterprise
BeitragVerfasst: Di 25.04.06 15:41 
Titel: HI!
Processmessage ist eine schlechte Lösung,
mach stattdessen "Label1.Update".

Mit Processmessage werden alle Messages abgearbeitet und dann
wird an der codestelle weitergegangen..
z.B. klick der user mit der Maus rum wird zuerst das MausEvent abgearbeitet und dann
erst der Sound abgespielt

mfg, limbo
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Di 25.04.06 16:34 
Das mit Update wäre auf jeden Fall eine bessere Lösung. Aber du solltest noch eins beachten. Wie lang geht der Ton? Falls es länger dauert könnte das Problem auftreten, dass dein Programm nicht reagiert während des abspielens.
Metschu Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 135

Windows XP SP2 Home
Delphi 7; Delphi XE2-Starter
BeitragVerfasst: Di 25.04.06 16:48 
Danke für die Infos! Werde es mit label.Update versuchen.

Zitat:
Das mit Update wäre auf jeden Fall eine bessere Lösung. Aber du solltest noch eins beachten. Wie lang geht der Ton? Falls es länger dauert könnte das Problem auftreten, dass dein Programm nicht reagiert während des abspielens.


Das ist in diesem Fall nicht das Problem, da ich Diverse Sounds zu einem zusammenfügen möchte. Ich Spiele die Sounds nach und nach ab und nehme sie Gleichzeitig auf. Das Funktioniert jetzt schon.
Wenn ich dann noch mehr an dem Programm oder Windows arbeite, werden auch die Systemsounds mit aufgenommen. Des is net so gut...
Das ganze dauert maximal 2 Minuten und ist wesentlich schneller, als das alles mit Nero Wave-Editor zusammen zu schneiden.

Gruß

Torsten