Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2020
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.54 KB | None | 0 0
  1. unit Unit1;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. interface
  6.  
  7. uses
  8. Classes, SysUtils,Windows, FileUtil,MMSystem, Forms, Controls, Graphics, Dialogs, StdCtrls,
  9. Menus, ExtCtrls;
  10.  
  11. type
  12.  
  13. { TForm1 }
  14.  
  15. TForm1 = class(TForm)
  16. Button1: TButton;
  17. Button2: TButton;
  18. CheckBox1: TCheckBox;
  19. ComboBox1: TComboBox;
  20. Edit1: TEdit;
  21. Edit2: TEdit;
  22. Label1: TLabel;
  23. Timer1: TTimer;
  24. procedure Button1Click(Sender: TObject);
  25. procedure Button2Click(Sender: TObject);
  26. procedure CheckBox1Change(Sender: TObject);
  27. procedure ComboBox1Change(Sender: TObject);
  28. procedure Edit1Change(Sender: TObject);
  29.  
  30. procedure Edit1KeyPress(Sender: TObject; var Key: char);
  31. procedure FormCreate(Sender: TObject);
  32. procedure Timer1Timer(Sender: TObject);
  33. private
  34. letters : array[0..25] of String;
  35. digits : array[0..9] of String;
  36. mode:integer;
  37. beepString:string;
  38. beepLetter:integer;
  39. beepLength:integer;
  40. beepState:integer;
  41. public
  42. { public declarations }
  43. end;
  44.  
  45. var
  46. Form1: TForm1;
  47.  
  48. implementation
  49.  
  50. {$R *.lfm}
  51.  
  52. { TForm1 }
  53.  
  54. procedure Translate;
  55. var
  56. i:integer;
  57. j:integer;
  58. strLength:integer;
  59. temp:string;
  60. done:string;
  61. find:boolean;
  62. temp2:string;
  63. character:integer;
  64. begin
  65. Form1.Timer1.Enabled:=false;
  66. temp:=Form1.Edit1.Text;
  67. done:='';
  68. strLength:= Length(temp);
  69. if Form1.mode=0 then
  70. begin
  71.  
  72. for I:=1 to strLength do
  73. begin
  74. character:=ord(temp[i]);
  75. if character=32 then
  76. begin
  77. done:=done+' ';
  78. end;
  79. if (character>=48) AND (character<=57) then begin
  80. character:= character-48;
  81. done:=done+Form1.digits[character];
  82. end;
  83. if (character>=65) AND (character<=90) then begin
  84. character:= character-65;
  85. done:=done+Form1.letters[character];
  86. end;
  87. done:=done+' ';
  88. end;
  89.  
  90. end
  91. else
  92. begin
  93. for I:=1 to strLength do
  94. begin
  95. if (temp[i]=' ')OR (i=strLength) then
  96. begin
  97. if NOT(temp[i]=' ') AND (i=strLength) then
  98. temp2:=temp2+temp[i];
  99. find:=false;
  100. if temp2='' then
  101. begin
  102. done:=done+' ';
  103. find:=true;
  104. end;
  105. if NOT find then
  106. begin
  107. for J:=0 to 25 do
  108. begin
  109. if Form1.letters[j] =temp2 then
  110. begin
  111. done:=done+chr(j+65);
  112. find:=true;
  113. break;
  114. end;
  115. end;
  116. end;
  117. if NOT find then
  118. begin
  119. for J:=0 to 9 do
  120. begin
  121. if Form1.digits[j] =temp2 then
  122. begin
  123. done:=done+chr(j+48);
  124. find:=true;
  125. break;
  126. end;
  127. end;
  128. end;
  129. if NOT find then
  130. done:=done+'?';
  131. temp2:='';
  132. end
  133. else
  134. begin
  135. temp2:=temp2+temp[i];
  136. end;
  137.  
  138. end;
  139. end;
  140. Form1.Edit2.Text := done;
  141. end;
  142.  
  143. procedure TForm1.ComboBox1Change(Sender: TObject);
  144. begin
  145. Timer1.Enabled:=false;
  146. Edit1.Text:='';
  147. Edit2.Text:='';
  148. mode:= ComboBox1.ItemIndex;
  149. if ComboBox1.ItemIndex =0 then
  150. begin
  151. Label1.Caption:= 'Wpisz tekst:';
  152. Button2.Enabled:=true;
  153. end
  154. else
  155. begin
  156. Label1.Caption:= 'Wpisz kod morsa:';
  157. Button2.Enabled:=false;
  158. end;
  159.  
  160. end;
  161.  
  162. procedure TForm1.Edit1Change(Sender: TObject);
  163. begin
  164. if CheckBox1.Checked then
  165. Translate;
  166. Timer1.Enabled:=false;
  167. end;
  168.  
  169.  
  170.  
  171. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
  172. begin
  173. if mode=0 then begin
  174. if not (Key in [#8,' ', '0'..'9','a'..'z','A'..'Z']) then begin
  175. ShowMessage('Nie poprawny kalwisz (Alfabet angielski i cyfry)');
  176. Key := #0;
  177. end;
  178. end
  179. else
  180. begin
  181. if not (Key in [#8,' ', '.','-']) then begin
  182. ShowMessage('Nie poprawny kalwisz (kropki i myślniki)');
  183. Key := #0;
  184. end;
  185. end;
  186.  
  187.  
  188. end;
  189.  
  190.  
  191.  
  192. procedure TForm1.FormCreate(Sender: TObject);
  193. begin
  194. mode:=0;
  195. letters[0]:='.-';//a
  196. letters[1]:='-...';//b
  197. letters[2]:='-.-.';//c
  198. letters[3]:='-..';//d
  199. letters[4]:='.';//e
  200. letters[5]:='..-.';//f
  201. letters[6]:='--.';//g
  202. letters[7]:='....';//h
  203. letters[8]:='..';//i
  204. letters[9]:='.---';//j
  205. letters[10]:='-.-';//k
  206. letters[11]:='.-..';//l
  207. letters[12]:='--';//m
  208. letters[13]:='-.';//n
  209. letters[14]:='---';//o
  210. letters[15]:='.--.';//p
  211. letters[16]:='--.-';//q
  212. letters[17]:='.-.';//r
  213. letters[18]:='...';//s
  214. letters[19]:='-';//t
  215. letters[20]:='..-';//u
  216. letters[21]:='...-';//v
  217. letters[22]:='.--';//w
  218. letters[23]:='-..-';//x
  219. letters[24]:='-.--';//y
  220. letters[25]:='--..';//z
  221.  
  222. digits[0]:='-----';//0
  223. digits[1]:='.----';//1
  224. digits[2]:='..---';//2
  225. digits[3]:='...--';//3
  226. digits[4]:='....-';//4
  227. digits[5]:='.....';//5
  228. digits[6]:='-....';//6
  229. digits[7]:='--...';//7
  230. digits[8]:='---..';//8
  231. digits[9]:='----.';//9
  232. end;
  233.  
  234. procedure TForm1.Timer1Timer(Sender: TObject);
  235. begin
  236.  
  237. if beepLetter>beepLength then
  238. begin
  239. Timer1.Enabled:=false;
  240. end
  241. else
  242. begin
  243. if beepState>0 then begin
  244.  
  245. if (beepString[beepLetter]=' ') AND (beepState=2) then
  246. begin
  247. beepState:=-1;
  248. beepLetter:=beepLetter+1;
  249. end;
  250. if(beepString[beepLetter]='-') then
  251. begin
  252. if beepState=1 then
  253. windows.beep(400,1500);
  254. if beepState>2 then
  255. begin
  256. beepState:=-1;
  257. beepLetter:=beepLetter+1;
  258. end;
  259. end;
  260. if(beepString[beepLetter]='.') then
  261. begin
  262. if beepState=1 then
  263. windows.beep(400,500);
  264. if beepState=1 then
  265. begin
  266. beepState:=-1;
  267. beepLetter:=beepLetter+1;
  268. end;
  269. end;
  270.  
  271.  
  272. end;
  273.  
  274. end;
  275. beepState:=beepState+1;
  276.  
  277. end;
  278.  
  279. procedure TForm1.Button2Click(Sender: TObject);
  280. begin
  281. beepString:=Edit2.Text;
  282. Timer1.Enabled:=true;
  283. beepLetter:=1;
  284. beepLength:= Length(beepString);
  285. beepState:=0;
  286. end;
  287.  
  288. procedure TForm1.CheckBox1Change(Sender: TObject);
  289. begin
  290. if CheckBox1.Checked then
  291. Translate;
  292. end;
  293.  
  294. procedure TForm1.Button1Click(Sender: TObject);
  295. begin
  296. Translate;
  297. end;
  298.  
  299. end.
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement