HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Morze-kód lejátszó komponens készítése Delphi-vel


Példaprogram letöltése

12911 bájt

Mai cikkünkben egy olyan komponenst készítünk, melynek segítségével egy adott szöveget meghallgathatunk Morze-kód formájában is, a számítógép hangkártyáján keresztül. Segítségével akár a Morse ABC-t is meg lehet tanulni, illetve a hosszabb szavak megértése is könnyen elsajátítható, hiszen beállítható az egyes betűk közötti szünet, így azok jól elkülöníthetőek egymástól.

A mellékelt példaprogram megnyitása előtt a ShiftCode.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot. A program kipróbálásához számítógépének rendelkeznie kell hangkártyával illetve hangfallal.
A komponensünkben először is a Morze ABC elemeinek megfelelő konstansokat deklaráljuk, melyekben a megfelelő kódot tároljuk el.
const
  a: string ='.-';
  umlauta: string ='.-.-';
  b: string ='-...';
  c: string ='-.-.';
  d: string ='-..';
  e: string ='.';
  f: string ='..-.';
  g: string ='--.';
  h: string ='....';
...
Készítünk két függvényt, melyekkel a ti és a tá kódoknak megfelelő hangfájlokat szólaltathatjuk meg.
procedure TMorseCode.playTi;
begin
  sndPlaySound(PChar('ti.wav'), 0);
end;
procedure TMorseCode.playTa;
begin
  sndPlaySound(PChar('ta.wav'), 0);
end;
Ahhoz, hogy a sndPlaySound függvényt használhassuk, a komponens uses részében meg kell adnunk a multimédiás eszközök kezeléséért felelős MMSystem unit-ot. Az egyes hangokat egy-egy wav fájlban tároljuk.
Ezután létrehozunk egy playMorse nevű függvényt, mely egy szöveget vár paraméterként a text változóban, és annak megfelelően megszólaltatja a hangokat.
procedure TMorseCode.playmorse(text: string);
var ii,jj: integer;
begin
A kapott szöveget karakterenként meg kell vizsgálnunk, elejétől a végéig.
  for ii:=1 to length(text) do
  begin
Ha az adott karakter megegyezik az „a” betűvel, akkor az ’a’ konstansban eltárolt kódnak megfelelően megszólaltatjuk az egyes hangokat.
    if text[ii]='a' then
    begin
      for jj:=1 to length(a) do
      begin
        if a[jj]='.' then playTi;
        if a[jj]='-' then playTa;
      end;
    end;
A fenti vizsgálatot a Morze ABC minden egyes elemére elvégezzük.
    if text[ii]='ä' then
    begin
      for jj:=1 to length(umlauta) do
      begin
        if umlauta[jj]='.' then playTi;
        if umlauta[jj]='-' then playTa;
      end;
    end;
...
Miután megszólaltattuk az adott betűnek megfelelő Morze-kódot, az FDelay-ben meghatározott msec-ig várunk a következő vizsgálatra. Minél nagyobbra adjuk meg ezt az értéket, annál jobban elkülönülnek az egyes betűk Morze-kódjai.
    Sleep(FDelay);
  end;
end;
Mellékelt példaprogram segítségével mindenki maga is kipróbálhatja a komponens használatát.

Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 584. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |