Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit Unit1;
- {$mode objfpc}{$H+}
- interface
- uses
- Classes, SysUtils,Windows, FileUtil,MMSystem, Forms, Controls, Graphics, Dialogs, StdCtrls,
- Menus, ExtCtrls;
- type
- { TForm1 }
- TForm1 = class(TForm)
- Button1: TButton;
- Button2: TButton;
- CheckBox1: TCheckBox;
- ComboBox1: TComboBox;
- Edit1: TEdit;
- Edit2: TEdit;
- Label1: TLabel;
- Timer1: TTimer;
- procedure Button1Click(Sender: TObject);
- procedure Button2Click(Sender: TObject);
- procedure CheckBox1Change(Sender: TObject);
- procedure ComboBox1Change(Sender: TObject);
- procedure Edit1Change(Sender: TObject);
- procedure Edit1KeyPress(Sender: TObject; var Key: char);
- procedure FormCreate(Sender: TObject);
- procedure Timer1Timer(Sender: TObject);
- private
- letters : array[0..25] of String;
- digits : array[0..9] of String;
- mode:integer;
- beepString:string;
- beepLetter:integer;
- beepLength:integer;
- beepState:integer;
- public
- { public declarations }
- end;
- var
- Form1: TForm1;
- implementation
- {$R *.lfm}
- { TForm1 }
- procedure Translate;
- var
- i:integer;
- j:integer;
- strLength:integer;
- temp:string;
- done:string;
- find:boolean;
- temp2:string;
- character:integer;
- begin
- Form1.Timer1.Enabled:=false;
- temp:=Form1.Edit1.Text;
- done:='';
- strLength:= Length(temp);
- if Form1.mode=0 then
- begin
- for I:=1 to strLength do
- begin
- character:=ord(temp[i]);
- if character=32 then
- begin
- done:=done+' ';
- end;
- if (character>=48) AND (character<=57) then begin
- character:= character-48;
- done:=done+Form1.digits[character];
- end;
- if (character>=65) AND (character<=90) then begin
- character:= character-65;
- done:=done+Form1.letters[character];
- end;
- done:=done+' ';
- end;
- end
- else
- begin
- for I:=1 to strLength do
- begin
- if (temp[i]=' ')OR (i=strLength) then
- begin
- if NOT(temp[i]=' ') AND (i=strLength) then
- temp2:=temp2+temp[i];
- find:=false;
- if temp2='' then
- begin
- done:=done+' ';
- find:=true;
- end;
- if NOT find then
- begin
- for J:=0 to 25 do
- begin
- if Form1.letters[j] =temp2 then
- begin
- done:=done+chr(j+65);
- find:=true;
- break;
- end;
- end;
- end;
- if NOT find then
- begin
- for J:=0 to 9 do
- begin
- if Form1.digits[j] =temp2 then
- begin
- done:=done+chr(j+48);
- find:=true;
- break;
- end;
- end;
- end;
- if NOT find then
- done:=done+'?';
- temp2:='';
- end
- else
- begin
- temp2:=temp2+temp[i];
- end;
- end;
- end;
- Form1.Edit2.Text := done;
- end;
- procedure TForm1.ComboBox1Change(Sender: TObject);
- begin
- Timer1.Enabled:=false;
- Edit1.Text:='';
- Edit2.Text:='';
- mode:= ComboBox1.ItemIndex;
- if ComboBox1.ItemIndex =0 then
- begin
- Label1.Caption:= 'Wpisz tekst:';
- Button2.Enabled:=true;
- end
- else
- begin
- Label1.Caption:= 'Wpisz kod morsa:';
- Button2.Enabled:=false;
- end;
- end;
- procedure TForm1.Edit1Change(Sender: TObject);
- begin
- if CheckBox1.Checked then
- Translate;
- Timer1.Enabled:=false;
- end;
- procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
- begin
- if mode=0 then begin
- if not (Key in [#8,' ', '0'..'9','a'..'z','A'..'Z']) then begin
- ShowMessage('Nie poprawny kalwisz (Alfabet angielski i cyfry)');
- Key := #0;
- end;
- end
- else
- begin
- if not (Key in [#8,' ', '.','-']) then begin
- ShowMessage('Nie poprawny kalwisz (kropki i myślniki)');
- Key := #0;
- end;
- end;
- end;
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- mode:=0;
- letters[0]:='.-';//a
- letters[1]:='-...';//b
- letters[2]:='-.-.';//c
- letters[3]:='-..';//d
- letters[4]:='.';//e
- letters[5]:='..-.';//f
- letters[6]:='--.';//g
- letters[7]:='....';//h
- letters[8]:='..';//i
- letters[9]:='.---';//j
- letters[10]:='-.-';//k
- letters[11]:='.-..';//l
- letters[12]:='--';//m
- letters[13]:='-.';//n
- letters[14]:='---';//o
- letters[15]:='.--.';//p
- letters[16]:='--.-';//q
- letters[17]:='.-.';//r
- letters[18]:='...';//s
- letters[19]:='-';//t
- letters[20]:='..-';//u
- letters[21]:='...-';//v
- letters[22]:='.--';//w
- letters[23]:='-..-';//x
- letters[24]:='-.--';//y
- letters[25]:='--..';//z
- digits[0]:='-----';//0
- digits[1]:='.----';//1
- digits[2]:='..---';//2
- digits[3]:='...--';//3
- digits[4]:='....-';//4
- digits[5]:='.....';//5
- digits[6]:='-....';//6
- digits[7]:='--...';//7
- digits[8]:='---..';//8
- digits[9]:='----.';//9
- end;
- procedure TForm1.Timer1Timer(Sender: TObject);
- begin
- if beepLetter>beepLength then
- begin
- Timer1.Enabled:=false;
- end
- else
- begin
- if beepState>0 then begin
- if (beepString[beepLetter]=' ') AND (beepState=2) then
- begin
- beepState:=-1;
- beepLetter:=beepLetter+1;
- end;
- if(beepString[beepLetter]='-') then
- begin
- if beepState=1 then
- windows.beep(400,1500);
- if beepState>2 then
- begin
- beepState:=-1;
- beepLetter:=beepLetter+1;
- end;
- end;
- if(beepString[beepLetter]='.') then
- begin
- if beepState=1 then
- windows.beep(400,500);
- if beepState=1 then
- begin
- beepState:=-1;
- beepLetter:=beepLetter+1;
- end;
- end;
- end;
- end;
- beepState:=beepState+1;
- end;
- procedure TForm1.Button2Click(Sender: TObject);
- begin
- beepString:=Edit2.Text;
- Timer1.Enabled:=true;
- beepLetter:=1;
- beepLength:= Length(beepString);
- beepState:=0;
- end;
- procedure TForm1.CheckBox1Change(Sender: TObject);
- begin
- if CheckBox1.Checked then
- Translate;
- end;
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- Translate;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement