![]() |
|
#16
|
||||
|
||||
![]() В гугле чтоли забанили?
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#17
|
||||
|
||||
![]() Вот пример того что получилось, двухсторонний конвертер морзянки, правда тупо говнокодом, одними ифками, т.к. на использование массивов и др. хороших вещей времени не нашлось. Проверил, работает.
Добавлено позже: А насчёт пробелов при воспроизведении можно и правда так Загонять буквы через пробелы и затем Код:
s:= StringReplace(строка с кодом Морзе, ' ', '_', [rfReplaceAll]); for i := 1 to length(s) do if s[i] <> '_' then проиграть(s[i]); ... Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 25.04.2013 в 18:13. |
#18
|
||||
|
||||
![]() Код:
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
|
||||
|
||||
![]() Зачот!
![]() _____ — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#20
|
||||
|
||||
![]() Цитата:
![]() Код:
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
|
|||
|
|||
![]() Предлагаю немного модифицировать:
Код:
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
|
||||
|
||||
![]() Оффтоп:
Цитата:
![]() Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#23
|
||||
|
||||
![]() Открою маленький секрет, у класса TStrings есть замечательные свойства: Delimiter и DelimitedText.
![]() Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#24
|
|||
|
|||
![]() Цитата:
Все смелые до begin... |