Морзянка
Доброй ночи. Имеется следующее задание:" 1) Создать программу, которая считывает текст из файла, выводит его на экран, переводит его согласно азбуке морзе, выводит на экран результат перевода, сохраняет его в файл. 2) Добавить возможность перевода символов в реальном времени при вводе с клавиатуры." Первую часть сделал, а вот вторую всё никак не осилю. Исходник программы без перевода в реальном времени:
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Memo2: TMemo;
Button3: TButton;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
with OpenDialog1, Memo1 do
if Execute then
Lines.LoadFromFile(FileName);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
with SaveDialog1, Memo2 do
if Execute then
Lines.SaveToFile(FileName);
end;
procedure TForm1.Button3Click(Sender: TObject);
var s,t:string;i,j:integer;
begin
s:=memo1.Text;
for i:=1 to length(s) do
begin
case s[i] of
'а','А': t:='.-';
'б','Б': t:='-...';
'в','В': t:='.--';
'г','Г': t:='--.';
'д','Д': t:='-..';
'е','Е': t:='.';
'ж','Ж': t:='...-';
'з','З': t:='--..';
'и','И': t:='..';
'й','Й': t:='.---';
'к','К': t:='-.-';
'л','Л': t:='.-..';
'м','М': t:='--';
'н','Н': t:='-.';
'о','О': t:='---';
'п','П': t:='.--.';
'р','Р': t:='.-.';
'с','С': t:='...';
'т','Т': t:='-';
'у','У': t:='..-';
'ф','Ф': t:='..-.';
'х','Х': t:='....';
'ц','Ц': t:='-.-.';
'ч','Ч': t:='---.';
'ш','Ш': t:='----';
'щ','Щ': t:='--.-';
'ъ','Ъ': t:='--.--';
'ы','Ы': t:='-.--';
'ь','Ь': t:='-..-';
'э','Э': t:='..-..';
'ю','Ю': t:='..--';
'я','Я': t:='.-.-';
'a','A': t:='.-';
'b','B': t:='-...';
'c','C': t:='-.-.';
'd','D': t:='-..';
'e','E': t:='.';
'f','F': t:='..-.';
'g','G': t:='--.';
'h','H': t:='....';
'i','I': t:='..';
'j','J': t:='.---';
'k','K': t:='-.-';
'l','L': t:='.-..';
'm','M': t:='--';
'n','N': t:='-.';
'o','O': t:='---';
'p','P': t:='.--.';
'q','Q': t:='--.-';
'r','R': t:='.-.';
's','S': t:='...';
't','T': t:='-';
'u','U': t:='..-';
'v','V': t:='...-';
'w','W': t:='.--';
'x','X': t:='-..-';
'y','Y': t:='-.--';
'z','Z': t:='--..';
'1': t:='.----';
'2': t:='..---';
'3': t:='...--';
'4': t:='....-';
'5': t:='.....';
'6': t:='-....';
'7': t:='--...';
'8': t:='---..';
'9': t:='----.';
'0': t:='-----';
end;
memo2.Text:=memo2.Text+' '+t;
memo2.Refresh;
for j:=1 to length (t) do
if t[j]='.'
then
begin
windows.Beep(1000,200);
sleep(200);
end
else
if t[j]='-'
then
begin
windows.Beep(1000,600);
sleep(200);
end;
sleep(400);
end;
end;
|