Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.01.2011, 03:42
Jospir Jospir вне форума
Прохожий
 
Регистрация: 12.01.2011
Сообщения: 3
Репутация: 10
По умолчанию Морзянка

Доброй ночи. Имеется следующее задание:" 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  
Старый 12.01.2011, 06:37
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,057
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Если переводить текст, введенный в Edit, то, в принципе, алгоритм тот же, только источник строки другой. А если выводить при нажатии клавиши, то я бы сделал отдельное окошко, для которого поставил бы KeyPreview := True. Далее, по OnKeyDown по коду бы выводил соотв. комбинацию.
Ответить с цитированием
  #3  
Старый 12.01.2011, 17:42
Jospir Jospir вне форума
Прохожий
 
Регистрация: 12.01.2011
Сообщения: 3
Репутация: 10
По умолчанию

Что-то вообще тяжко-никак не пойму
Ответить с цитированием
  #4  
Старый 12.01.2011, 21:02
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

Пиши в личку или в асю 490012394
Ответить с цитированием
  #5  
Старый 12.01.2011, 21:12
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Эх, где ты был месяца 2 назад, когда я чистил папку с исходниками...
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #6  
Старый 12.01.2011, 21:37
Jospir Jospir вне форума
Прохожий
 
Регистрация: 12.01.2011
Сообщения: 3
Репутация: 10
По умолчанию

Знал бы прикуп...
Ответить с цитированием
  #7  
Старый 12.01.2011, 22:53
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,057
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Да что непонятного-то? Выдели код перевода символа в морзянку в отдельную функцию. При наступлении указанного события ты получишь код символа. Переводишь его в букву (chr) и вбрасываешь в эту функцию. Результат функции выводишь в каком-нить компоненте. Все.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:34.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter