|
#1
|
|||
|
|||
Морзянка
Доброй ночи. Имеется следующее задание:" 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; |
#2
|
|||
|
|||
Если переводить текст, введенный в Edit, то, в принципе, алгоритм тот же, только источник строки другой. А если выводить при нажатии клавиши, то я бы сделал отдельное окошко, для которого поставил бы KeyPreview := True. Далее, по OnKeyDown по коду бы выводил соотв. комбинацию.
|
#3
|
|||
|
|||
Что-то вообще тяжко-никак не пойму
|
#4
|
|||
|
|||
Пиши в личку или в асю 490012394
|
#5
|
||||
|
||||
Эх, где ты был месяца 2 назад, когда я чистил папку с исходниками...
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#6
|
|||
|
|||
Знал бы прикуп...
|
#7
|
|||
|
|||
Да что непонятного-то? Выдели код перевода символа в морзянку в отдельную функцию. При наступлении указанного события ты получишь код символа. Переводишь его в букву (chr) и вбрасываешь в эту функцию. Результат функции выводишь в каком-нить компоненте. Все.
|