1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
uses Crt;
type
TMorseString = String[4];
const
MorseFreq = 500;
MorseLongDelay = 300;
MorseShortDelay = 100;
MorsePauseDelay = 300;
const
MorseCodes: array['A'..'Z'] of TMorseString =
('._', '_...', '_._.', '_..', '.', '.._.',
'__.', '....', '..', '.___', '_._', '._..',
'__', '_.', '___', '.__.', '__._', '._.',
'...', '_', '.._', '..._', '.__', '_.._',
'_.__', '__..');
procedure MorseSound(C: Char);
begin
case C of
'.': begin
Write(C);
Sound(MorseFreq);
Delay(MorseShortDelay);
NoSound;
end;
'_': begin
Write(C);
Sound(MorseFreq);
Delay(MorseLongDelay);
NoSound;
end;
end;
end;
procedure MorsePause;
begin
Write(' ');
Delay(MorsePauseDelay);
end;
procedure MorsePlayChar(C: Char);
var
i: Integer;
begin
C := UpCase(C);
if C in ['A'..'Z'] then
begin
for i := 1 to Length(MorseCodes[C]) do
MorseSound(MorseCodes[C][i]);
end;
MorsePause;
end;
procedure MorsePlayString(S: String);
var
i: Integer;
begin
for i := 1 to Length(S) do
MorsePlayChar(S[i]);
end;
var
S: String;
begin
repeat
Write('Chaine morse : ');
ReadLn(S);
until S <> '';
MorsePlayString(S);
end. |
Partager