![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 09.01.2007
Сообщений: 92
|
![]()
Помогите перебить программу на Паскале под Дельфи!.
Данная программа Азбука Морзе!. uses crt; const morse : array [128..159] of string[4]=('.- ','-...','.---','--. ', '-.. ','. ','...-','--..', '.. ','.---','-.- ','.-..', '-- ','-. ','--- ','.--.', '.-. ','... ','- ','..- ', '..-.','....','-.-.','---.', '----','--.-','-..-','-.--', '-..-','..-.','..--','.-.-' ); Tone=100; L1=50; L2=100; L3=50; L4=100; L5=150; Var mes:String; sim:String[4]; znak:String[1]; i,j:Integer; Begin ClrScr; Writeln('***’Телеграф***'); Writeln('Введите сообщение'); Writeln('Используя только большие буквы'); Write(' '); Readln(mes); for i:=1 to Length(mes) do Begin if (mes[i]>='А')and(mes[i] <='Я') then Begin sim:=morse[ord(mes[i])]; j:=1; repeat if (sim[j]='-')or(sim[j]='.') then Begin Write(sim[j]); sound(10000); case sim[j] of '.':Delay(10000); '.':Delay(10000); '-':Delay(10000); '-':Delay(10000); end; NoSound; Delay(10000); Delay(10000); end; j:=j+1; until ((sim[j]=' ') or (j>4)); delay(1000); end else if mes[i]=' ' then Begin Write(' '); Delay(10000); end; end; Writeln; Writeln('‘Сообщение передано!. '); Writeln('Для завершения нажмите Enter'); REadln; end. |
![]() |
![]() |
![]() |
#2 |
Регистрация: 14.03.2007
Сообщений: 9
|
![]()
А в чем проблема? Создаешь форму, вместо writeln'ов три капшена(TCaption) вместо readln Edit. Кидаешь кнопку. В обработчик события OnClick - свою программу. Вместо последних writeln'ов еще один капшен или messagedlg. Синтаксис узнай в Helpe. Сообщение выводи в еще одном Edit'е.Все.
Возможности компьютера ограничены интеллектом программиста.
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 09.01.2007
Сообщений: 92
|
![]()
Чтоөто вроде я сделал, а она всё равно не работает!.
Подскажите, где там ошибки?. var Form1: TForm1; mes:String; {сообщение} sim:String[4]; {символ в кодировке Морзе - последоваиельность точек и тире} znak:String[1]; {"передаваемый" знак - тире или точка } i,j:Integer; {номер символа и знака} sound,delay:Integer; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); const morse : array [128..159] of string[4]=('.- ','-...','.---','--. ',{А,Б,В,Г} '-.. ','. ','...-','--..',{Д,Е,Ж,З} '.. ','.---','-.- ','.-..',{И,Й,К,Л} '-- ','-. ','--- ','.--.',{М,Н,О,П} '.-. ','... ','- ','..- ',{Р,С,Т,У} '..-.','....','-.-.','---.',{Ф,Х,Ц,Ч} '----','--.-','-..-','-.--',{Ш,Щ,Ъ,Ы} '-..-','..-.','..--','.-.-'{Ь,Э,Ю,Я} ); {параметры передачи} Tone=100; {частота сигнала (гц)} L1=50; {длительность(мс) "точки"} L2=100; {длительность(мс) "тире"} L3=50; {пауза (мс) между точками и тире одной буквы} L4=100; {пауза (мс) между буквами} L5=150; {пауза (мс) между словами} begin Edit1.Text:=' '; Edit2.Text:='mes'; for i:=1 to Length(mes) do Begin if (mes[i]>='А')and(mes[i] <='Я') then Begin {определим код очередной буквы (ф-я ORD) сообщения и получим из таблицы кодировки соответсвующий элемент массива - последовательность точек и тире } sim:=morse[ord(mes[i])]; j:=1; repeat if (sim[j]='-')or(sim[j]='.') then Begin Edit2.Text:=(sim[j]); sound(10000); case sim[j] of '.':Delay(10000); '.':Delay(10000); '-':Delay(10000); '-':Delay(10000); end; NoSound; Delay(10000); Delay(10000); end; j:=j+1; until ((sim[j]=' ') or (j>4)); delay(1000); {пауза между буквами} end else if mes[i]=' ' then {пробел между словами} Begin Edit2.Text:=' '; {пробел между словами сообщения} Delay(10000); end; end; Label4.Caption:='Сообщение передано'; Label5.Caption:='Для завершения работы с программой нажмите','<Enter>'); end. end; end. |
![]() |
![]() |
![]() |
#4 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]()
Вот что получилось у меня (только что проверил, работает на ура):
(кое-что выкинул...) procedure TForm1.Button6Click(Sender: TObject); const morse : array [192..223] of string[4]=('.- ','-...','.---','--. ',{А,Б,В,Г} '-.. ','. ','...-','--..',{Д,Е,Ж,З} '.. ','.---','-.- ','.-..',{И,Й,К,Л} '-- ','-. ','--- ','.--.',{М,Н,О,П} '.-. ','... ','- ','..- ',{Р,С,Т,У} '..-.','....','-.-.','---.',{Ф,Х,Ц,Ч} '----','--.-','-..-','-.--',{Ш,Щ,Ъ,Ы} '-..-','..-.','..--','.-.-'{Ь,Э,Ю,Я} ); {параметры передачи} Tone=1000; {частота сигнала (гц)} L1=200; {длительность(мс) "точки"} L2=500; {длительность(мс) "тире"} L3=500; {пауза (мс) между точками и тире одной буквы} L4=1000; {пауза (мс) между буквами} L5=1500; {пауза (мс) между словами} var mes,sim: string; i,j,dl: integer; begin Edit1.Text:=' '; mes:=Edit2.Text; for i:=1 to Length(mes) do Begin if (mes[i]>='А')and(mes[i] <='Я') then Begin {определим код очередной буквы (ф-я ORD) сообщения и получим из таблицы кодировки соответсвующий элемент массива - последовательность точек и тире } sim:=morse[Ord(mes[i])]; for j:=1 to 4 do begin dl:=0; //длительность звукового сигнала case sim[j] of '-': dl:=L2; //длительность тире '.': dl:=L1; //длительность точки end; if dl>0 then Windows.Beep(Tone,dl); Sleep(L3); // пауза между точками, тире, пробелами end; Sleep(L4); {пауза между буквами} end else if mes[i]=' ' then {пробел между словами} Sleep(L5); end; end; |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 09.01.2007
Сообщений: 92
|
![]()
Спасибо она вроде работает, но можно еще добавить, чтобы она помимо сигнала выдавала ещё и эти самые "тире -точки",например В Edit2
и ещё - программа зависает при запуске и озвучка идёт непрерывно!.Можно ли сделать так чтобы озвучка проходила только один раз?. |
![]() |
![]() |
![]() |
#6 | |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]() Цитата:
Мне нравится даже, только в таком темпе: procedure TForm1.Button6Click(Sender: TObject); const morse : array [192..223] of string[4]=('.- ','-...','.---','--. ',{А,Б,В,Г} '-.. ','. ','...-','--..',{Д,Е,Ж,З} '.. ','.---','-.- ','.-..',{И,Й,К,Л} '-- ','-. ','--- ','.--.',{М,Н,О,П} '.-. ','... ','- ','..- ',{Р,С,Т,У} '..-.','....','-.-.','---.',{Ф,Х,Ц,Ч} '----','--.-','-..-','-.--',{Ш,Щ,Ъ,Ы} '-..-','..-.','..--','.-.-'{Ь,Э,Ю,Я} ); {параметры передачи} Tone=800; {частота сигнала (гц)} L1=50; {длительность(мс) "точки"} L2=100; {длительность(мс) "тире"} L3=50; {пауза (мс) между точками и тире одной буквы} L4=150; {пауза (мс) между буквами} L5=200; {пауза (мс) между словами} var mes,sim: string; i,j,dl: integer; begin Edit2.SetFocus; mes:=AnsiUpperCase(Edit2.Text); for i:=1 to Length(mes) do Begin if (mes[i]>='А')and(mes[i] <='Я') then Begin Edit2.SelStart:=i-1; Edit2.SelLength:=1; {определим код очередной буквы (ф-я ORD) сообщения и получим из таблицы кодировки соответсвующий элемент массива - последовательность точек и тире } sim:=morse[Ord(mes[i])]; Edit1.Text:=sim; Application.ProcessMessages; for j:=1 to 4 do begin dl:=0; //длительность звукового сигнала case sim[j] of '-': dl:=L2; //длительность тире '.': dl:=L1; //длительность точки end; if dl>0 then Windows.Beep(Tone,dl); Sleep(L3); // пауза между точками, тире, пробелами end; Sleep(L4); {пауза между буквами} end else if mes[i]=' ' then {пробел между словами} Sleep(L5); end; Edit2.SelStart:=0; Edit2.SelLength:=0; Application.ProcessMessages; end; В Edit1 - обозначение букливицы в азбуке Морзе, в Edit2 - показывает озвучиваемую в данный момент букливицу... |
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 09.01.2007
Сообщений: 92
|
![]()
СПАСИБО ВАМ!.ПРОГРАММА РАБОТАЕТ!!!
![]() |
![]() |
![]() |
![]() |
#8 |
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
![]()
Раньше как-то не думал... Интересная прога
![]() Я чтоб услышать результат 10 минут провозился с подключением внутреннего динамика (вилки небыло) |
![]() |
![]() |
![]() |
#9 |
Новичок
Джуниор
Регистрация: 07.05.2010
Сообщений: 2
|
![]()
Помогите пожалуйста! Перевести с Паскали или Делфи на С# программу азбука морзе
|
![]() |
![]() |
![]() |
#10 |
Новичок
Джуниор
Регистрация: 17.01.2012
Сообщений: 1
|
![]() Код:
___________ Код нужно оформлять по правилам: тегом [CODE]..[/СODE] (это кнопочка с решёточкой #) Не забывайте об этом! Модератор. Последний раз редактировалось Serge_Bliznykov; 18.01.2012 в 11:19. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перевод из Паскаля в Делфи | Родион | Общие вопросы Delphi | 2 | 28.08.2008 16:52 |
Русификация паскаля | Exact | Паскаль, Turbo Pascal, PascalABC.NET | 7 | 21.03.2008 14:15 |
Знатоки Паскаля ХЕЛП!!!! | cornholio | Помощь студентам | 7 | 09.12.2007 11:38 |
Настройка паскаля | Snake_ua | Паскаль, Turbo Pascal, PascalABC.NET | 7 | 18.10.2007 17:56 |
перенос с паскаля на си | Ядовитый | Общие вопросы C/C++ | 2 | 29.06.2007 13:17 |