Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Tastenton bei Tastendruck (https://www.delphipraxis.net/154777-tastenton-bei-tastendruck.html)

Dunkelbunt27 24. Sep 2010 15:22

Tastenton bei Tastendruck
 
Hallo liebe Delphi Praxis,

ich arbeite an einem kleinen Projekt, bei dem ich bei Tastendruck einen kurzen Ton abspielen will (async also so, dass das Programm in der Zeit nicht einfriert).

Ersteinmal habe ich ein Großes TRichEdit Feld auf der Form.
In den uses steht mmSystem;
Im OnKeyDown Ereignis der Form habe ich folgenden Quelltext:
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
const
FileName = 'leer.wav';

begin
  if (Key = VK_A) then
    begin
      MCISendString(PChar('play ' + FileName), nil, 0, 0);
    end
end;
Unerklärlicherweise lässt sich das Programm nich kompilieren und spuckt eine Fehlermeldung Undeklarierter Bezeichner für VK_A (VK_RETURN, also Enter Taste) funktioniert).
Ich hab es mit VK_RETURN probiert und erfolgreich kompiliert, jedoch kam kein Ton... auch kein Beep-Ton wie bei PlaySound...

Ich hoffe einer der hellen Köpfe kann mir helfen, bitte ausführlich und verständlich, sprich bitte mit Quelltext =)
Ich bin nicht der Ober-Programmierer.


_____________________
Vielen Dank Dunkelbunt

SirThornberry 24. Sep 2010 15:31

AW: Tastenton bei Tastendruck
 
Die Konstanten VK_A etc. sind wohl nirgends definiert. Aber du kannst anstelle von VK_A auch einfach Ord('A') schreiben. Da weiß auch jeder was gemeint ist.
Warum verwendest du eigentlich nicht "PlaySound" wenn es bisher damit funktioniert hat?

shmia 24. Sep 2010 15:33

AW: Tastenton bei Tastendruck
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal ein Beispiel, wie man die Ziffern 0 bis 9 sprechen lassen kann.
Delphi-Quellcode:
uses ..., MMSystem {benötigt für PlaySound()};

function ApplicationPath: string; // Hilfsfunktion
begin
   Result := ExtractFilePath(ParamStr(0));
end;

procedure TFrmTest.EditLieferscheinNrKeyPress(Sender: TObject;
  var Key: Char);
var
   s:string;
begin
   if Key in ['0'..'9'] then
   begin
      // Wave-Datei liegen im Unter-Verzeichnis "Wave"
      // also "0.wav" bis "9.wav"
      s := ApplicationPath+'Wave\'+ Key+'.WAV';
      PlaySound(PChar(s), 0, SND_FILENAME or SND_ASYNC);
   end;
end;
Das Archiv im Anhang enthält die 10 Wave-Dateien.

Dunkelbunt27 24. Sep 2010 15:37

AW: Tastenton bei Tastendruck
 
Danke für die Antworten,
ich probiere beide aus.

Ergebnis dann im EDIT =)

EDIT:
Ich habe das Nummern-Sprechprogramm versucht.
Ersteinmal will ich fragen ob es nur bei mir so ist, dass die Wav Dateien irgendwie abgehackt klingen also Fün.... statt Fünf.
Außerdem:
bei mir kommt ersteinmal nur ein Beep Ton =(
Schreibe ich meine Zahlen in ein EditFeld, passiert auch nichts =(
Woran kanns liegen?

Ich habe genau den Quelltext benutzt...
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, mmSystem, StdCtrls;

type
  TForm1 = class(TForm)
    procedure FormKeyPress(Sender: TObject; var Key: Char);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function ApplicationPath: string; // Hilfsfunktion
begin
   Result := ExtractFilePath(ParamStr(0));
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
var
   s:string;
begin
   if Key in ['0'..'9'] then
   begin
      // Wave-Datei liegen im Unter-Verzeichnis "Wave"
      // also "0.wav" bis "9.wav"
      s := ApplicationPath+'Wave\'+ Key+'.WAV';
      PlaySound(PChar(s), 0, SND_FILENAME or SND_ASYNC);
   end;
end;

end.

Bummi 24. Sep 2010 15:58

AW: Tastenton bei Tastendruck
 
Setze entweder Form.Keypreview auf true, oder häng das Ereignis OnKeypress auch an Dein Edit.

0.wav ist kaputt deshalb der Beep.
Abgehackt klingt es weil die Eingabe einer neuen Zahl die Soundausgabe der vorherigen unterbricht.

Dunkelbunt27 24. Sep 2010 16:03

AW: Tastenton bei Tastendruck
 
Du hast mich falsch verstanden, es kommt kein Ton im Programm. Ich habe mir die Sounds als datei mit Vlcplayer angehört...

EDIT:
Nachdem ich Form.Keypreview auf True gesetzt habe kommt jetz immer ein Beep-Ton (bei 0-9)

Dunkelbunt27 27. Sep 2010 15:34

AW: Tastenton bei Tastendruck
 
Ich habe das Problem jetz gelöst.
Es lag lediglich daran, dass die OnKeyPress Prozedur der Form nur anspringt, wenn keine Edit Box da ist.
Ich hab das ganze für die TRichEdit eingestellt und alles klappt super!
Danke für eure Hilfe!

:dp:
________________________________
Viele Grüße,
Dunkelbunt


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

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz