Wednesday, November 23, 2016

Coding Latinizer

Steps to create MyNotepad's user interface:
. Start Delphi and Select File-New Application.
. Place one Memo, OpenDialog, SaveDialog two Buttons on a form.
. Rename Button1 to btnOpen, Button2 to btnSave.

 Coding

1. Use Object Inspector to assign the following code to the FormCreate event:

procedure TForm1.FormCreate(Sender: TObject);
begin
with OpenDialog1 do begin
Options:=Options+[ofPathMustExist,ofFileMustExist];
InitialDir:=ExtractFilePath(Application.ExeName);
Filter:='Text files (*.txt)|*.txt';
end;
with SaveDialog1 do begin
InitialDir:=ExtractFilePath(Application.ExeName);
Filter:='Text files (*.txt)|*.txt';
end;
Memo1.ScrollBars := ssBoth;
end;
This code sets some of the Open dialog properties as discussed in the beginning of the article.

2. Add this code for the Onclick event of btnOpen and btnSave buttons:

procedure TForm1.btnOpenClick(Sender: TObject);
begin
if OpenDialog1.Execute then begin
Form1.Caption := OpenDialog1.FileName;
Memo1.Lines.LoadFromFile
(OpenDialog1.FileName);
Memo1.SelStart := 0;
end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  selectedFile: string;
  dlg: TOpenDialog;
begin
  selectedFile := '';
  dlg := TOpenDialog.Create(nil);
  try
    dlg.InitialDir := 'C:\';
    dlg.Filter := 'All files (*.*)|*.*';
    if dlg.Execute(Handle) then
      selectedFile := dlg.FileName;
  finally
    dlg.Free;
  end;

  if selectedFile <> '' then
    <your code here to handle the selected file>
end;





procedure TForm1.btnSaveClick(Sender: TObject);
begin
SaveDialog1.FileName := Form1.Caption;
if SaveDialog1.Execute then begin
Memo1.Lines.SaveToFile
(SaveDialog1.FileName + '.txt');
Form1.Caption:=SaveDialog1.FileName;
end;
end;
Run your project. You cannot believe it; files are opening and saving just like with the "real" Notepad.















//----------------------


function Latinizer(s: string) : string;
var r: string;
begin
   r := s;
   r := StringReplace(r,'а','a',[rfReplaceAll]);
   r := StringReplace(r,'А','A',[rfReplaceAll]);
   r := StringReplace(r,'б','b',[rfReplaceAll]);
   r := StringReplace(r,'Б','B',[rfReplaceAll]);
   r := StringReplace(r,'в','v',[rfReplaceAll]);
   r := StringReplace(r,'В','V',[rfReplaceAll]);
   r := StringReplace(r,'г','g',[rfReplaceAll]);
   r := StringReplace(r,'Г','G',[rfReplaceAll]);
   r := StringReplace(r,'д','d',[rfReplaceAll]);
   r := StringReplace(r,'Д','D',[rfReplaceAll]);
   r := StringReplace(r,'ђ','dj',[rfReplaceAll]);
   r := StringReplace(r,'Ђ','Dj',[rfReplaceAll]);
   r := StringReplace(r,'љ','lj',[rfReplaceAll]);
   r := StringReplace(r,'Љ','Lj',[rfReplaceAll]);
   r := StringReplace(r,'њ','nj',[rfReplaceAll]);
   r := StringReplace(r,'Њ','Nj',[rfReplaceAll]);
   r := StringReplace(r,'р','r',[rfReplaceAll]);
   r := StringReplace(r,'Р','R',[rfReplaceAll]);
   r := StringReplace(r,'т','t',[rfReplaceAll]);
   r := StringReplace(r,'Т','T',[rfReplaceAll]);
   r := StringReplace(r,'з','z',[rfReplaceAll]);
   r := StringReplace(r,'З','Z',[rfReplaceAll]);
   r := StringReplace(r,'у','u',[rfReplaceAll]);
   r := StringReplace(r,'У','U',[rfReplaceAll]);
   r := StringReplace(r,'и','i',[rfReplaceAll]);
   r := StringReplace(r,'И','I',[rfReplaceAll]);
   r := StringReplace(r,'о','o',[rfReplaceAll]);
   r := StringReplace(r,'О','O',[rfReplaceAll]);
   r := StringReplace(r,'п','p',[rfReplaceAll]);
   r := StringReplace(r,'П','P',[rfReplaceAll]);
   r := StringReplace(r,'ш','s',[rfReplaceAll]);
   r := StringReplace(r,'Ш','S',[rfReplaceAll]);
   r := StringReplace(r,'ч','c',[rfReplaceAll]);
   r := StringReplace(r,'Ч','C',[rfReplaceAll]);
   r := StringReplace(r,'ћ','c',[rfReplaceAll]);
   r := StringReplace(r,'Ћ','C',[rfReplaceAll]);
   r := StringReplace(r,'ж','z',[rfReplaceAll]);
   r := StringReplace(r,'Ж','Z',[rfReplaceAll]);
   r := StringReplace(r,'с','s',[rfReplaceAll]);
   r := StringReplace(r,'С','S',[rfReplaceAll]);
   r := StringReplace(r,'ф','F',[rfReplaceAll]);
   r := StringReplace(r,'Ф','f',[rfReplaceAll]);
   r := StringReplace(r,'х','h',[rfReplaceAll]);
   r := StringReplace(r,'Х','H',[rfReplaceAll]);
   r := StringReplace(r,'ј','j',[rfReplaceAll]);
   r := StringReplace(r,'Ј','J',[rfReplaceAll]);
   r := StringReplace(r,'к','k',[rfReplaceAll]);
   r := StringReplace(r,'К','K',[rfReplaceAll]);
   r := StringReplace(r,'л','l',[rfReplaceAll]);
   r := StringReplace(r,'Л','L',[rfReplaceAll]);
   r := StringReplace(r,'џ','dz',[rfReplaceAll]);
   r := StringReplace(r,'Џ','Dz',[rfReplaceAll]);
   r := StringReplace(r,'ц','c',[rfReplaceAll]);
   r := StringReplace(r,'Ц','C',[rfReplaceAll]);
   r := StringReplace(r,'н','n',[rfReplaceAll]);
   r := StringReplace(r,'Н','N',[rfReplaceAll]);
   r := StringReplace(r,'м','m',[rfReplaceAll]);
   r := StringReplace(r,'М','M',[rfReplaceAll]);
   result := r ;
end;