Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2009, 16:48   #1
pomoshnic
Форумчанин
 
Аватар для pomoshnic
 
Регистрация: 16.11.2008
Сообщений: 192
По умолчанию Перевод текста в код Морзе (Delphi)

Помогите исправить проблему.
Таблица Морзе:



Вот написал такой код:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    Memo1: TMemo;
    GroupBox2: TGroupBox;
    Memo2: TMemo;
    procedure Memo1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Memo1Change(Sender: TObject);
const morse: array [ord('А')..ord('Я')] of string [5] = (
'.-   ','-... ','.--  ','--.  ',
'-..  ','.    ','...- ','--.. ',
'..   ','.--- ','-.-  ','.-.. ',
'--   ','-.   ','---  ','.--. ',
'.-.  ','...  ','-    ','..-  ',
'..-. ','.... ','-.-. ','---. ',
'---- ','--.- ','-..- ','-.-- ',
'..-..','..-- ','.-.- ');
var s,t:string;
i,j:word;
begin
memo2.Clear;
for i := 1 to memo1.lines.count do
begin
  s:=memo1.lines[i];
  for j := 1 to length(memo1.lines[i]) do
    t:=t+morse[ord(upcase(s[j]))]+' ';
  memo2.lines.Add(t);
end;
end;

end.
Но почему-то в memo2 не отображается код Морзе.
Заранее благодарен.

Последний раз редактировалось pomoshnic; 21.03.2009 в 17:21.
pomoshnic вне форума Ответить с цитированием
Старый 21.03.2009, 17:18   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вот так работает:
Код:
procedure TForm1.Memo1Change(Sender: TObject);
const morse: array [ord('А')..ord('Я')] of string [5] = (
'.-   ','-... ','.--  ','--.  ',
'-..  ','.    ','...- ','--.. ',
'..   ','.--- ','-.-  ','.-.. ',
'--   ','-.   ','---  ','.--. ',
'.-.  ','...  ','-    ','..-  ',
'..-. ','.... ','-.-. ','---. ',
'---- ','--.- ','-..- ','-.-- ',
'..-..','..-- ','.-.- ','.....');
var
i:word;
begin

Memo2.Clear;
for i:=1 to length(Memo1.Lines.Text) do
  begin
  if Memo1.Lines.Text[i] in ['А'..'Я'] then
    Memo2.Lines.Text := Memo2.Lines.Text + morse[ord(Memo1.Lines.Text[i])]+' '
  else Memo2.Lines.Text := Memo2.Lines.Text + Memo1.Lines.Text[i];

  end;
end;
Примечания:
upcase на русские буквы не действует, поэтому нужно писать свою функцию.
Данный код работает только с прописными буквами. Для строчных, думаю, добавите (когда напишете функцию).
В массив добавил '.....', т.к. компилятор ругался, что размеры не соответствуют.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 21.03.2009, 17:29   #3
pomoshnic
Форумчанин
 
Аватар для pomoshnic
 
Регистрация: 16.11.2008
Сообщений: 192
По умолчанию

А у меня не работает. Выдает ошибку.
Но всеровно Огромное спасибо за помощь.
pomoshnic вне форума Ответить с цитированием
Старый 21.03.2009, 17:30   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

А что за ошибка-то? И где показывает?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 21.03.2009, 17:42   #5
pomoshnic
Форумчанин
 
Аватар для pomoshnic
 
Регистрация: 16.11.2008
Сообщений: 192
По умолчанию

А, уже нет ошибки. Я просто сделал чтоб переводило, и маленькие символы, а оно выдало какую-то ошибку и закрыло Delphi. А потом я заново все скопировал, и ошибку не показывало, но текст не переводит. И маленькие, и большие символы, остальные тоже.
pomoshnic вне форума Ответить с цитированием
Старый 21.03.2009, 17:56   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Должно работать.
Прикладываю архив с проектом и екзешником.
Вложения
Тип файла: rar pomoshnik.rar (163.5 Кб, 80 просмотров)
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 21.03.2009, 18:04   #7
pomoshnic
Форумчанин
 
Аватар для pomoshnic
 
Регистрация: 16.11.2008
Сообщений: 192
Подмигивание

Спасибо, все работает. А у меня все такое точно не работает.
Может это Делфи у меня глючит?
Огромное спасибо вам, Sazary!
pomoshnic вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод текста... Ar][ange1 Общие вопросы Delphi 1 06.01.2009 06:56
Перевод вещественного числа в двоичный код shepelin Свободное общение 9 06.07.2008 10:00
Вставка вводимого текста в код программы var Помощь студентам 10 18.02.2008 15:10
Перевод текста из HTML в txt Valkiria Помощь студентам 8 10.10.2007 18:39