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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 25.04.2013, 15:01
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

В гугле чтоли забанили?
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #17  
Старый 25.04.2013, 17:53
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Вот пример того что получилось, двухсторонний конвертер морзянки, правда тупо говнокодом, одними ифками, т.к. на использование массивов и др. хороших вещей времени не нашлось. Проверил, работает.


Добавлено позже:

А насчёт пробелов при воспроизведении можно и правда так

Загонять буквы через пробелы и затем
Код:
s:= StringReplace(строка с кодом Морзе, ' ', '_', [rfReplaceAll]);

for i := 1 to length(s) do if s[i] <> '_' then проиграть(s[i]);
...
и пауз так не будет точно.
Вложения
Тип файла: zip Morse.zip (3.6 Кбайт, 1 просмотров)

Последний раз редактировалось Alegun, 25.04.2013 в 18:13.
Ответить с цитированием
  #18  
Старый 25.04.2013, 19:01
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Код:
if sv.Strings[i] = '.-'     then if vs then s:= s + 'а' else s:= s + 'a';
if sv.Strings[i] = '-...'   then if vs then s:= s + 'б' else s:= s + 'b';
if sv.Strings[i] = '.--'    then if vs then s:= s + 'в' else s:= s + 'w';
if sv.Strings[i] = '--.'    then if vs then s:= s + 'г' else s:= s + 'g';
if sv.Strings[i] = '-..'    then if vs then s:= s + 'д' else s:= s + 'd';
if sv.Strings[i] = '.'      then if vs then s:= s + 'е' else s:= s + 'e';
if sv.Strings[i] = '...-'   then if vs then s:= s + 'ж' else s:= s + 'v';
if sv.Strings[i] = '--..'   then if vs then s:= s + 'з' else s:= s + 'z';
if sv.Strings[i] = '..'     then if vs then s:= s + 'и' else s:= s + 'i';
if sv.Strings[i] = '.---'   then if vs then s:= s + 'й' else s:= s + 'j';
if sv.Strings[i] = '-.-'    then if vs then s:= s + 'к' else s:= s + 'k';
if sv.Strings[i] = '.-..'   then if vs then s:= s + 'л' else s:= s + 'l';
if sv.Strings[i] = '--'     then if vs then s:= s + 'м' else s:= s + 'm';
if sv.Strings[i] = '-.'     then if vs then s:= s + 'н' else s:= s + 'n';
if sv.Strings[i] = '---'    then if vs then s:= s + 'о' else s:= s + 'o';
if sv.Strings[i] = '.--.'   then if vs then s:= s + 'п' else s:= s + 'p';
if sv.Strings[i] = '.-.'    then if vs then s:= s + 'р' else s:= s + 'r';
if sv.Strings[i] = '...'    then if vs then s:= s + 'с' else s:= s + 's';
if sv.Strings[i] = '-'      then if vs then s:= s + 'т' else s:= s + 't';
if sv.Strings[i] = '..-'    then if vs then s:= s + 'у' else s:= s + 'u';
...
Впечатляет. Не устал копировать?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #19  
Старый 25.04.2013, 19:56
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Зачот!
_____
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #20  
Старый 26.04.2013, 04:14
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Зачот!
_____

Код:
var
cdm: array [0..2] of array [0..53] of string=(('.-','-...','.--','--.','-..',
'.','...-','--..','..','.---','-.-','.-..','--','-.','---','.--.','.-.','...',
'-','..-','..-.','....','-.-.','---.','----','--.-','-.--','-..-','..-..',
'..--','.-.-','.----','..---','...--','....-','.....','-....', '--...','---..',
'----.','-----','......','.-.-.-','---...','-.-.-.','-.--.-','.----.','.-..-.',
'-....-','-..-.','..--..','--..--','.--.-.',' '),(
'а','б','в','г','д','е','ж','з','и','й','к','л','м','н','о','п','р','с','т','у',
'ф','х','ц','ч','ш','щ','ы','ь','э','ю','я','1','2','3','4','5','6','7','8','9',
'0','.',',',':',';',')','`','"','-','/','?','!','@',' '),(
'А','Б','В','Г','Д','Е','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У',
'Ф','Х','Ц','Ч','Ш','Щ','Ы','Ь','Э','Ю','Я','1','2','3','4','5','6','7','8','9',
'0','.',',',':',';',')','`','"','-','/','?','!','@',' '));

 function TextToMorse(ds: string): string;
var i, j: integer;
begin
Result:= '';for i := 1 to Length(ds) do for j := 0 to 53 do
 if (ds[i]=cdm[1,j]) or (ds[i]=cdm[2,j]) then Result:=Result+cdm[0,j]+' ';
end;

function MorseToText(ds: string): string;
var
i, j, r: integer; sl, sv: Tstrings;s:string;
begin
sl:= TStringList.Create;sv:= TStringList.Create;
sl.Text:=StringReplace(ds, '  ', #13#10, [rfReplaceAll]);Result:='';
for j := 0 to sl.Count-1 do begin
sv.Text:= StringReplace(sl.Strings[j], ' ', #13#10, [rfReplaceAll]);
for i:=0 to sv.Count-1 do for r := 0 to 53 do
if sv.Strings[i] = cdm[0, r] then Result:= Result + cdm[1, r];Result:= Result + ' ';
end;sl.Free;sv.Free;
end;
Ответить с цитированием
  #21  
Старый 26.04.2013, 06:08
DrGeorg DrGeorg вне форума
Прохожий
 
Регистрация: 26.04.2013
Сообщения: 38
Версия Delphi: RAD Studio XE3
Репутация: 10
По умолчанию

Предлагаю немного модифицировать:
Код:
const
cdm: array [0..2] of array [0..53] of string=(('.-','-...','.--','--.','-..',
'.','...-','--..','..','.---','-.-','.-..','--','-.','---','.--.','.-.','...',
'-','..-','..-.','....','-.-.','---.','----','--.-','-.--','-..-','..-..',
'..--','.-.-','.----','..---','...--','....-','.....','-....', '--...','---..',
'----.','-----','......','.-.-.-','---...','-.-.-.','-.--.-','.----.','.-..-.',
'-....-','-..-.','..--..','--..--','.--.-.',' '),(
'а','б','в','г','д','е','ж','з','и','й','к','л','м','н','о','п','р','с','т','у',
'ф','х','ц','ч','ш','щ','ы','ь','э','ю','я','1','2','3','4','5','6','7','8','9',
'0','.',',',':',';',')','`','"','-','/','?','!','@',' '),(
'А','Б','В','Г','Д','Е','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У',
'Ф','Х','Ц','Ч','Ш','Щ','Ы','Ь','Э','Ю','Я','1','2','3','4','5','6','7','8','9',
'0','.',',',':',';',')','`','"','-','/','?','!','@',' '));
 
 function TextToMorse(ds: string): string;
var i, j: integer;
begin
Result:= '';for i := 1 to Length(ds) do for j := 0 to 53 do
 if (ds[i]=cdm[1,j]) or (ds[i]=cdm[2,j]) then Result:=Result+cdm[0,j]+' ';
end;
 
function MorseToText(ds: string): string;
var
i, j, r: integer; sl, sv: Tstrings;s:string;
begin
sl:= TStringList.Create;sv:= TStringList.Create;
sl.Text:=StringReplace(ds, '  ', #13#10, [rfReplaceAll]);Result:='';
for j := 0 to sl.Count-1 do begin
sv.Text:= StringReplace(sl.Strings[j], ' ', #13#10, [rfReplaceAll]);
for i:=0 to sv.Count-1 do for r := 0 to 53 do
if sv.Strings[i] = cdm[0, r] then Result:= Result + cdm[1, r];Result:= Result + ' ';
end;sl.Free;sv.Free;
end;
__________________
Все смелые до begin...

Последний раз редактировалось DrGeorg, 26.04.2013 в 06:25.
Ответить с цитированием
  #22  
Старый 26.04.2013, 07:31
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Оффтоп:

Цитата:
Сообщение от DrGeorg
Предлагаю немного модифицировать...
Всмотрелся. Всмотрелся ещё раз. Поржал Чистой воды оверквот.
Ответить с цитированием
  #23  
Старый 26.04.2013, 08:48
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Открою маленький секрет, у класса TStrings есть замечательные свойства: Delimiter и DelimitedText.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #24  
Старый 26.04.2013, 11:33
DrGeorg DrGeorg вне форума
Прохожий
 
Регистрация: 26.04.2013
Сообщения: 38
Версия Delphi: RAD Studio XE3
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
Всмотрелся. Всмотрелся ещё раз. Поржал Чистой воды оверквот.
Ну sorry я в первый раз на форуме...
__________________
Все смелые до begin...
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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