Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Sound ausgeben+button drücken (https://www.delphipraxis.net/17818-sound-ausgeben-button-druecken.html)

KoRn117 10. Mär 2004 09:32


Sound ausgeben+button drücken
 
hallo,

ich hab mal wieder ein problem:
ich gebe mit hilfe der port.dll einen sound aus und währendessen soll er aber gleichzeitig auch einen button abfragen, ob der ton gehört wurde.
das programm soll als billiger hörtester fungieren und ist folgendermaßen aufgebaut:

ich habe eine äußere schleife, in der die frequenz hochgezählt wird und eine schleife darin, wo immer die lautsärke von 0 hochgefahren wird. der nutzer soll dann drücken wenn er den sound gehört hat - verstanden?

beispiel:
frequenz steht auf 440hz und auf der lautstärke '1' --> sound wird ausgegeben und der user kann ihn nicht hören (zu leise).
nun wird die lautstärke erhöht:
frequenz steht auf 440hz und auf der lautstärke '101' --> sound wird ausgegeben und der user kann ihn nicht hören (zu leise).
usw. bis die lautstärke meinetwegen 500 hat und dann soll der user den button gedrückt hat.
so das funktioniert leider nicht, weil ich nicht innerhalb der schleife buttons abfragen kann.
ich hab es probiert mit einem globalen hook, aber auch der 'kommt' auch nciht in die schleife.
dann habe ich einen tipp von schubi bekommen, dass ich
Delphi-Quellcode:
application.processmessages;
benutzen soll, aber wenn ich das benutzte gibt er den sound nicht mehr aus - aber ich kann die buttons drücken bzw. die hook-signale verwenden :twisted:


programm-code:
erklärung:
t_fq <- Frequenz
t_db <- pseudo db also die lautstärke
soundausgeben_kurz(...) <- gibt den sound aus, ist egal was da drin steht(funktioniert auf jedenfall)

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var s:string;
begin

while t_fq <= fqmax do
 begin
 t_db:=1;
 //gehort:=false;

 for T_i :=1 to dbmax do
  begin
   //soundausgeben_kurz(t_fq,t_db);

   //application.processmessages;
   //showmessage(inttostr(t_db));

   t_db:=t_db+100;
   form1.l1.caption := inttostr(t_db);

   if timer1.Tag = 1 then
     begin
     raster.RowCount:= raster.RowCount+1;
     raster.cells[0,stelle]:=inttostr(t_db);
     raster.cells[1,stelle]:=inttostr(t_fq);
     raster.cells[2,stelle]:='ja';

     t_fq:=t_fq+fq_step;

     inc(stelle);
     timer1.Tag := 0;
     end;

   {if Buchstabe_gedruckt='J' then
     begin
     raster.RowCount:= raster.RowCount+1;
     raster.cells[0,t_i]:=inttostr(t_db);
     raster.cells[1,t_i]:=inttostr(t_fq);
     raster.cells[2,t_i]:='ja';

     t_fq:=t_fq+fq_step;

     Buchstabe_gedruckt:='X';
     end; }

   application.processmessages;
   //application.HandleMessage;

   end; //for ende db ende
end; // fq while ende

timer1.Enabled := false;
end;

KoRn117 10. Mär 2004 09:36

Re: Sound ausgeben+button drücken
 
Liste der Anhänge anzeigen (Anzahl: 1)
hier noch das programm:

euch muss nur der timer1 und die zwei buttons mit der caption 'Hörtest' & 'Jaaa' interessieren.

ich hoffe, ihr könnt mir helfen :roll:


:mrgreen: :mrgreen: :mrgreen: :mrgreen:


mfg

korn117


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 Uhr.

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