Program slouží k šifrování a dešifrování textu pomocí šifry Enigma používané během druhé světové války

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Category: KMP (Club of young programmers)
koupy_enigma_screen.pngAuthor: Petr Koupý
web: koupy.net/programy.php

Program: Enigma_crypter.pas
File exe: Enigma_crypter.exe
Example: Enigma_crypter.zip

Program slouží k šifrování a dešifrování textu pomocí šifry Enigma používané během druhé světové války. Konkrétně se jedná o základní verzi se třemi scramblery, kterou na začátku války používaly jednotky Wehrmacht a Luftwaffe. Program používá stejný vnitřní mechanismus, takže je s prvotní verzí Enigmy kompatibilní (dokáže dešifrovat německé válečné depeše z počátku války). Kompatibilita není zajištěna pro pozdější verze Enigmy, které měly více scramblerů a jiné vnitřní zapojení. Program vznikl v rámci práce Dějiny kryptologie do soutěže SOČ.
{ ENIGMA.PAS                               Copyright (c) Petr Koupy }
{                                                                   }
{ Program slouží k šifrování a dešifrování textu pomocí šifry Enigma}
{ používané během druhé světové války. Konkrétně se jedná o základní}
{ verzi se třemi scramblery, kterou na začátku války používaly      }
{ jednotky Wehrmacht a Luftwaffe. Program používá stejný vnitřní    }
{ mechanismus, takže je s prvotní verzí Enigmy kompatibilní         }
{(dokáže dešifrovat německé válečné depeše z počátku války).        }
{ Kompatibilita není zajištěna pro pozdější verze Enigmy, které     }
{ měly více scramblerů a jiné vnitřní zapojení.                     }
{                                                                   }
{ Program vznikl v rámci práce Dějiny kryptologie do soutěže SOČ.   }
{                                                                   }
{ Datum:01.03.2007                             http://www.trsek.com }
 
unit Enigma_;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus, ComCtrls, ExtCtrls, Buttons, CategoryButtons,
  ButtonGroup, Gauges, ActnPopup, CustomizeDlg, ActnList, ExtDlgs;
 
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    ComboBox1: TComboBox;
    Label5: TLabel;
    ComboBox2: TComboBox;
    ComboBox3: TComboBox;
    Label6: TLabel;
    ComboBox4: TComboBox;
    ComboBox5: TComboBox;
    ComboBox6: TComboBox;
    Label7: TLabel;
    ComboBox7: TComboBox;
    ComboBox8: TComboBox;
    ComboBox9: TComboBox;
    ComboBox10: TComboBox;
    ComboBox11: TComboBox;
    ComboBox12: TComboBox;
    ComboBox13: TComboBox;
    ComboBox14: TComboBox;
    ComboBox15: TComboBox;
    ComboBox16: TComboBox;
    ComboBox17: TComboBox;
    ComboBox18: TComboBox;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    CheckBox5: TCheckBox;
    CheckBox6: TCheckBox;
    PopupMenu1: TPopupMenu;
    Button2: TButton;
    Gauge1: TGauge;
    PopupMenu2: TPopupMenu;
    Otevt1: TMenuItem;
    Uloiz1: TMenuItem;
    Koprovat1: TMenuItem;
    Vloit1: TMenuItem;
    Vymazat1: TMenuItem;
    Memo3: TMemo;
    Vyjmout1: TMenuItem;
    N1: TMenuItem;
    Memo4: TMemo;
    Vzjmout1: TMenuItem;
    Koprovat2: TMenuItem;
    Vloit2: TMenuItem;
    Odstranit1: TMenuItem;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Button3: TButton;
    PopupMenu3: TPopupMenu;
    PopupMenu4: TPopupMenu;
    Uloit1: TMenuItem;
    N2: TMenuItem;
    Koprovat3: TMenuItem;
    Odstranit2: TMenuItem;
    Koprovat4: TMenuItem;
    Edit1: TEdit;
    Label14: TLabel;
    N3: TMenuItem;
    VybratVe1: TMenuItem;
    N4: TMenuItem;
    Vybratve2: TMenuItem;
    OpenDialog2: TOpenDialog;
    SaveDialog2: TSaveDialog;
    PopupMenu5: TPopupMenu;
    Koprovat5: TMenuItem;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    Memo5: TMemo;
    Memo6: TMemo;
    Button4: TButton;
    ScrollBar1: TScrollBar;
    Label3: TLabel;
    Label15: TLabel;
    PopupMenu6: TPopupMenu;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    GroupBox1: TGroupBox;
    Button5: TButton;
    Button6: TButton;
    procedure Button6Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure ScrollBar1Change(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure Koprovat5Click(Sender: TObject);
    procedure ComboBox6Change(Sender: TObject);
    procedure ComboBox5Change(Sender: TObject);
    procedure ComboBox4Change(Sender: TObject);
    procedure Vybratve2Click(Sender: TObject);
    procedure VybratVe1Click(Sender: TObject);
    procedure Koprovat4Click(Sender: TObject);
    procedure Odstranit2Click(Sender: TObject);
    procedure Koprovat3Click(Sender: TObject);
    procedure Uloit1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Uloiz1Click(Sender: TObject);
    procedure Otevt1Click(Sender: TObject);
    procedure Vloit2Click(Sender: TObject);
    procedure Koprovat2Click(Sender: TObject);
    procedure Vzjmout1Click(Sender: TObject);
    procedure Odstranit1Click(Sender: TObject);
    procedure Vyjmout1Click(Sender: TObject);
    procedure Vloit1Click(Sender: TObject);
    procedure Koprovat1Click(Sender: TObject);
    procedure Vymazat1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure Memo1KeyPress(Sender: TObject; var Key: Char);
    procedure Button1Click(Sender: TObject);
    procedure ComboBox18Change(Sender: TObject);
    procedure ComboBox17Change(Sender: TObject);
    procedure ComboBox16Change(Sender: TObject);
    procedure ComboBox15Change(Sender: TObject);
    procedure ComboBox14Change(Sender: TObject);
    procedure ComboBox13Change(Sender: TObject);
    procedure ComboBox12Change(Sender: TObject);
    procedure ComboBox11Change(Sender: TObject);
    procedure ComboBox10Change(Sender: TObject);
    procedure ComboBox9Change(Sender: TObject);
    procedure ComboBox8Change(Sender: TObject);
    procedure ComboBox7Change(Sender: TObject);
    procedure CheckBox6Click(Sender: TObject);
    procedure CheckBox5Click(Sender: TObject);
    procedure CheckBox4Click(Sender: TObject);
    procedure CheckBox3Click(Sender: TObject);
    procedure CheckBox2Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure ComboBox3Change(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
const
  I: string='EKMFLGDQVZNTOWYHXUSPAIBRCJ';
  II: string='AJDKSIRUXBLHWTMCQGZNPYFVOE';
  III: string='BDFHJLCPRTXVZNYEIWGAKMUSQO';
  R: string='YRUHQSLDPXNGOKMIEBFZCWVJAT';
  ABC: string='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  skok_I: integer=18;
  skok_II: integer=6;
  skok_III: integer=23;
 
var
  Form1: TForm1;
  poradi1,poradi2,poradi3: integer;
  menic: integer;
  scrambler1, scrambler2, scrambler3: string;
  skok2, skok3: integer;
  rotor1, rotor2, rotor3: integer;
  vstupnitext, vystupnitext: string;
  znak: char;
  misto: integer;
  temp1, temp2, temp3, tempR: char;
  klic1, klic2, vymena: string;
  manual: boolean;
  hacek, vkladani, stop, kontrola: boolean;
  deska: integer;
 
 
implementation
 
uses About_, Generator_;
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var x, y, z: integer;
    retezec: string;
    zpozdeni: longint;
begin
  Button1.Enabled:=false;
  Button2.Enabled:=false;
  Button3.Enabled:=false;
  Button5.Enabled:=false;
  Button6.Enabled:=false;
  ComboBox1.Enabled:=false;
  ComboBox2.Enabled:=false;
  ComboBox3.Enabled:=false;
  ComboBox4.Enabled:=false;
  ComboBox5.Enabled:=false;
  ComboBox6.Enabled:=false;
  ComboBox7.Enabled:=false;
  ComboBox8.Enabled:=false;
  ComboBox9.Enabled:=false;
  ComboBox10.Enabled:=false;
  ComboBox11.Enabled:=false;
  ComboBox12.Enabled:=false;
  ComboBox13.Enabled:=false;
  ComboBox14.Enabled:=false;
  ComboBox15.Enabled:=false;
  ComboBox16.Enabled:=false;
  ComboBox17.Enabled:=false;
  ComboBox18.Enabled:=false;
  CheckBox1.Enabled:=false;
  CheckBox2.Enabled:=false;
  CheckBox3.Enabled:=false;
  CheckBox4.Enabled:=false;
  CheckBox5.Enabled:=false;
  CheckBox6.Enabled:=false;
  Memo1.ReadOnly:=true;
  Memo1.PopupMenu:=PopupMenu6;
  Memo2.PopupMenu:=PopupMenu6;
  Edit1.PopupMenu:=PopupMenu6;
  Edit2.Text:=ComboBox4.Items[ComboBox4.ItemIndex];
  Edit3.Text:=ComboBox5.Items[ComboBox5.ItemIndex];
  Edit4.Text:=ComboBox6.Items[ComboBox6.ItemIndex];
  stop:=false;
 
  Memo2.Clear;
  Gauge1.Progress:=0;
  z:=0;
  for x:=0 to Memo1.Lines.Count do
  begin
    retezec:=Memo1.Lines[x];
    for y:=1 to Length(retezec) do
    begin
      z:=z+1;
    end;
  end;
  Gauge1.MaxValue:=z;
 
  //začátek registrace vstupního nastavení
  case ComboBox1.ItemIndex of
    0: scrambler1:=I;
    1: scrambler1:=II;
    2: scrambler1:=III;
  end;
  case ComboBox2.ItemIndex of
    0: begin scrambler2:=I; skok2:=skok_I; end;
    1: begin scrambler2:=II; skok2:=skok_II; end;
    2: begin scrambler2:=III; skok2:=skok_III; end;
  end;
  case ComboBox3.ItemIndex of
    0: begin scrambler3:=I; skok3:=skok_I; end;
    1: begin scrambler3:=II; skok3:=skok_II; end;
    2: begin scrambler3:=III; skok3:=skok_III; end;
  end;
  rotor1:=ComboBox4.ItemIndex+1;
  rotor2:=ComboBox5.ItemIndex+1;
  rotor3:=ComboBox6.ItemIndex+1;
  if rotor2=skok2-1 then hacek:=true else hacek:=false;
  //konec registrace vstupního nastavení
 
  //začátek (de)‘ifrováni
  for x:=0 to Memo1.Lines.Count-1 do //postupné zpracování řádků
  begin
    vstupnitext:=Memo1.Lines[x]; //načtení x-tého řádku vstupního textu
    vystupnitext:=''; //vynulování výstupního řádku z minulého cyklu
    for y:=1 to Length(vstupnitext) do //postupné zpracování znaků v řádku
    begin
      Application.ProcessMessages; //vypočetní prostor pro jiné aplikace
 
      //uspání cyklu při snížení rychlosti
      if (ScrollBar1.Position<491) AND (stop=false) then
      begin
        zpozdeni:=500-ScrollBar1.Position;
        Sleep(zpozdeni);
        Edit2.Enabled:=true;
        Edit3.Enabled:=true;
        Edit4.Enabled:=true;
      end
      else
      begin
        Edit2.Enabled:=false;
        Edit3.Enabled:=false;
        Edit4.Enabled:=false;
      end;
 
      znak:=vstupnitext[y]; //načtení y-tého znaku řádku vstupního textu
 
      //přičítání hodnoty stavového proužku od 0% do 100%
      if stop=false then Gauge1.Progress:=Gauge1.Progress+1
      else Gauge1.Progress:=0;
 
      //zji‘tění místa znaku v abecedě
      for z:=1 to Length(ABC) do
      begin
        if znak=ABC[z] then misto:=z;
      end;
 
      //první záměna znaku podle propojovací desky
      if ComboBox7.ItemIndex=misto-1 then misto:=ComboBox8.ItemIndex+1 else
      begin if ComboBox8.ItemIndex=misto-1 then misto:=ComboBox7.ItemIndex+1; end;
      if ComboBox9.ItemIndex=misto-1 then misto:=ComboBox10.ItemIndex+1 else
      begin if ComboBox10.ItemIndex=misto-1 then misto:=ComboBox9.ItemIndex+1; end;
      if ComboBox11.ItemIndex=misto-1 then misto:=ComboBox12.ItemIndex+1 else
      begin if ComboBox12.ItemIndex=misto-1 then misto:=ComboBox11.ItemIndex+1; end;
      if ComboBox13.ItemIndex=misto-1 then misto:=ComboBox14.ItemIndex+1 else
      begin if ComboBox14.ItemIndex=misto-1 then misto:=ComboBox13.ItemIndex+1; end;
      if ComboBox15.ItemIndex=misto-1 then misto:=ComboBox16.ItemIndex+1 else
      begin if ComboBox16.ItemIndex=misto-1 then misto:=ComboBox15.ItemIndex+1; end;
      if ComboBox17.ItemIndex=misto-1 then misto:=ComboBox18.ItemIndex+1 else
      begin if ComboBox18.ItemIndex=misto-1 then misto:=ComboBox17.ItemIndex+1; end;
 
      //rotace scramblerů s uplatněním double-step mechanismu
      rotor3:=(rotor3+1) mod 26;
      if rotor3=0 then rotor3:=26;
      if rotor3=skok3 then rotor2:=(rotor2+1) mod 26;
      if (rotor3=skok3+1) AND (rotor2=skok2-1) then
      begin
        rotor2:=(rotor2+1) mod 26;
        rotor1:=(rotor1+1) mod 26;
        hacek:=false;
      end;
      if rotor2=0 then rotor2:=26;
      if rotor2=skok2-1 then hacek:=true;
      if (rotor2=skok2) AND (hacek=true) then
      begin
        rotor1:=(rotor1+1) mod 26;
        hacek:=false;
      end;
      if rotor1=0 then rotor1:=26;
      if Edit2.Enabled=true then Edit2.Text:=ComboBox4.Items[rotor1-1];
      if Edit3.Enabled=true then Edit3.Text:=ComboBox5.Items[rotor2-1];
      if Edit4.Enabled=true then Edit4.Text:=ComboBox6.Items[rotor3-1];
 
      //výstup pravého scrambleru
      temp3:=scrambler3[(rotor3-1+misto) mod 26];
      if temp3='' then temp3:=scrambler3[26];
 
      //zji‘tění místa výstupu pravého scrambleru v abecedě
      for z:=1 to Length(ABC) do
      begin
        if temp3=ABC[z] then misto:=z;
      end;
 
      //výstup prostředního scrambleru
      temp2:=scrambler2[(((((26-rotor3+1) mod 26)+misto) mod 26)+rotor2-1) mod 26];
      if temp2='' then temp2:=scrambler2[26];
 
      //zji‘tění místa výstupu prostředního scrambleru v abecedě
      for z:=1 to Length(ABC) do
      begin
        if temp2=ABC[z] then misto:=z;
      end;
 
      //výstup levého scrambleru
      temp1:=scrambler1[(((((26-rotor2+1) mod 26)+misto) mod 26)+rotor1-1) mod 26];
      if temp1='' then temp1:=scrambler1[26];
 
      //zji‘tění místa výstupu levého scrambleru v abecedě
      for z:=1 to Length(ABC) do
      begin
        if temp1=ABC[z] then misto:=z;
      end;
 
      //výstup reflektoru
      tempR:=R[(((26-rotor1+1) mod 26)+misto) mod 26];
      if tempR='' then tempR:=R[26];
      for z:=1 to Length(ABC) do
      begin
        if tempR=ABC[z] then misto:=z;
      end;
      tempR:=ABC[(misto+rotor1-1) mod 26];
      if tempR='' then tempR:=ABC[26];
 
      //zji‘tění místa výstupu reflektoru v levém scrambleru
      for z:=1 to Length(scrambler1) do
      begin
        if tempR=scrambler1[z] then misto:=z;
      end;
 
      //výstup levého scrambleru zpátky
      temp1:=ABC[(((((26-rotor1+1) mod 26)+misto) mod 26)+rotor2-1) mod 26];
      if temp1='' then temp1:=ABC[26];
 
      //zji‘tění místa výstupu levého scrambleru v prostředním scrambleru
      for z:=1 to Length(scrambler2) do
      begin
        if temp1=scrambler2[z] then misto:=z;
      end;
 
      //výstup prostředního scrambleru zpátky
      temp2:=ABC[(((((26-rotor2+1) mod 26)+misto) mod 26)+rotor3-1) mod 26];
      if temp2='' then temp2:=ABC[26];
 
      //zji‘tění místa výstupu prostředního scrambleru v pravém scrambleru
      for z:=1 to Length(scrambler3) do
      begin
        if temp2=scrambler3[z] then misto:=z;
      end;
 
      //výstup pravého scrambleru zpátky
      temp3:=ABC[((((26-rotor3+1) mod 26)+misto) mod 26) mod 26];
      if temp3='' then temp3:=ABC[26];
 
      //zji‘tění místa výstupu pravého scrambleru v abecedě
      for z:=1 to Length(ABC) do
      begin
        if temp3=ABC[z] then misto:=z;
      end;
 
      //druhá záměna znaku podle propojovací desky
      if ComboBox7.ItemIndex=misto-1 then misto:=ComboBox8.ItemIndex+1 else
      begin if ComboBox8.ItemIndex=misto-1 then misto:=ComboBox7.ItemIndex+1; end;
      if ComboBox9.ItemIndex=misto-1 then misto:=ComboBox10.ItemIndex+1 else
      begin if ComboBox10.ItemIndex=misto-1 then misto:=ComboBox9.ItemIndex+1; end;
      if ComboBox11.ItemIndex=misto-1 then misto:=ComboBox12.ItemIndex+1 else
      begin if ComboBox12.ItemIndex=misto-1 then misto:=ComboBox11.ItemIndex+1; end;
      if ComboBox13.ItemIndex=misto-1 then misto:=ComboBox14.ItemIndex+1 else
      begin if ComboBox14.ItemIndex=misto-1 then misto:=ComboBox13.ItemIndex+1; end;
      if ComboBox15.ItemIndex=misto-1 then misto:=ComboBox16.ItemIndex+1 else
      begin if ComboBox16.ItemIndex=misto-1 then misto:=ComboBox15.ItemIndex+1; end;
      if ComboBox17.ItemIndex=misto-1 then misto:=ComboBox18.ItemIndex+1 else
      begin if ComboBox18.ItemIndex=misto-1 then misto:=ComboBox17.ItemIndex+1; end;
      temp3:=ABC[misto];
 
      //zji‘tění identity výstupního znaku
      for z:=1 to Length(ABC) do
      begin
        if temp3=ABC[z] then znak:=ABC[z];
      end;
 
      //připojení výstupního znaku k výstupnímu řádku
      vystupnitext:=vystupnitext+znak;
      if (ScrollBar1.Position<491) AND (stop=false) then
      begin
        Memo2.Lines[x]:='';
        Memo2.Lines[x]:=vystupnitext;
        vkladani:=true;
      end else vkladani:=false;
    end;
    if ((ScrollBar1.Position<491) OR (vkladani=false)) AND (stop=false) then
    begin
      Memo2.Lines[x]:='';
      vkladani:=true;
    end;
    if stop=false then Memo2.Lines.Add(vystupnitext) else Memo2.Lines.Clear;
  end;
  //konec (de)‘ifrováni
  Button1.Enabled:=true;
  Button2.Enabled:=true;
  Button3.Enabled:=true;
  Button5.Enabled:=true;
  Button6.Enabled:=true;
  ComboBox1.Enabled:=true;
  ComboBox2.Enabled:=true;
  ComboBox3.Enabled:=true;
  ComboBox4.Enabled:=true;
  ComboBox5.Enabled:=true;
  ComboBox6.Enabled:=true;
  CheckBox1.Enabled:=true;
  CheckBox2.Enabled:=true;
  CheckBox3.Enabled:=true;
  CheckBox4.Enabled:=true;
  CheckBox5.Enabled:=true;
  CheckBox6.Enabled:=true;
  if CheckBox1.Checked=true then begin ComboBox7.Enabled:=true; ComboBox8.Enabled:=true; end;
  if CheckBox2.Checked=true then begin ComboBox9.Enabled:=true; ComboBox10.Enabled:=true; end;
  if CheckBox3.Checked=true then begin ComboBox11.Enabled:=true; ComboBox12.Enabled:=true; end;
  if CheckBox4.Checked=true then begin ComboBox13.Enabled:=true; ComboBox14.Enabled:=true; end;
  if CheckBox5.Checked=true then begin ComboBox15.Enabled:=true; ComboBox16.Enabled:=true; end;
  if CheckBox6.Checked=true then begin ComboBox17.Enabled:=true; ComboBox18.Enabled:=true; end;
  Memo1.ReadOnly:=false;
  Memo1.PopupMenu:=PopupMenu1;
  Memo2.PopupMenu:=PopupMenu3;
  Edit1.PopupMenu:=PopupMenu5;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  PopupMenu2.Popup(Form1.Left+Button2.Left+4, Form1.Top+Button2.Top+42);
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
  PopupMenu4.Popup(Form1.Left+Button3.Left+4, Form1.Top+Button3.Top+42);
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
  stop:=true;
  ComboBox1.ItemIndex:=0; ComboBox2.ItemIndex:=1; ComboBox3.ItemIndex:=2;
  ComboBox4.ItemIndex:=0; ComboBox5.ItemIndex:=0; ComboBox6.ItemIndex:=0;
  ComboBox7.ItemIndex:=-1; ComboBox8.ItemIndex:=-1; ComboBox9.ItemIndex:=-1;
  ComboBox10.ItemIndex:=-1; ComboBox11.ItemIndex:=-1; ComboBox12.ItemIndex:=-1;
  ComboBox13.ItemIndex:=-1; ComboBox14.ItemIndex:=-1; ComboBox15.ItemIndex:=-1;
  ComboBox16.ItemIndex:=-1; ComboBox17.ItemIndex:=-1; ComboBox18.ItemIndex:=-1;
  CheckBox1.Checked:=false; CheckBox2.Checked:=false; CheckBox3.Checked:=false;
  CheckBox4.Checked:=false; CheckBox5.Checked:=false; CheckBox6.Checked:=false;
  Edit1.Text:='I-II-III; A-A-A; n/a; n/a; n/a; n/a; n/a; n/a';
  klic1:='I-II-III';
  klic2:='; A-A-A; n/a; n/a; n/a; n/a; n/a; n/a';
  Edit2.Text:='A';
  Edit3.Text:='A';
  Edit4.Text:='A';
  Edit2.Enabled:=false;
  Edit3.Enabled:=false;
  Edit4.Enabled:=false;
  Button1.Enabled:=true;
  Button2.Enabled:=true;
  Button3.Enabled:=true;
  Button5.Enabled:=true;
  Button6.Enabled:=true;
  ComboBox1.Enabled:=true;
  ComboBox2.Enabled:=true;
  ComboBox3.Enabled:=true;
  ComboBox4.Enabled:=true;
  ComboBox5.Enabled:=true;
  ComboBox6.Enabled:=true;
  ComboBox7.Enabled:=false;
  ComboBox8.Enabled:=false;
  ComboBox9.Enabled:=false;
  ComboBox10.Enabled:=false;
  ComboBox11.Enabled:=false;
  ComboBox12.Enabled:=false;
  ComboBox13.Enabled:=false;
  ComboBox14.Enabled:=false;
  ComboBox15.Enabled:=false;
  ComboBox16.Enabled:=false;
  ComboBox17.Enabled:=false;
  ComboBox18.Enabled:=false;
  CheckBox1.Enabled:=true;
  CheckBox2.Enabled:=true;
  CheckBox3.Enabled:=true;
  CheckBox4.Enabled:=true;
  CheckBox5.Enabled:=true;
  CheckBox6.Enabled:=true;
  Memo1.ReadOnly:=false;
  Memo1.PopupMenu:=PopupMenu1;
  Memo2.PopupMenu:=PopupMenu3;
  Edit1.PopupMenu:=PopupMenu5;
  vystupnitext:='';
  Gauge1.Progress:=0;
  ScrollBar1.Position:=500;
  Memo1.Clear;
  Memo2.Clear;
end;
 
procedure TForm1.Button5Click(Sender: TObject);
begin
  Form2.Visible:=true;
  Form1.Enabled:=false;
end;
 
procedure TForm1.Button6Click(Sender: TObject);
begin
  Form3.Visible:=true;
  Form1.Enabled:=false;
end;
 
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  if CheckBox1.Checked=true then
  begin
    ComboBox7.Enabled:=true;
    ComboBox8.Enabled:=true;
    if manual=false then
    begin
      Button1.Enabled:=false;
      klic2[10]:='?';
      klic2[11]:='>';
      klic2[12]:='?';
    end else Button1.Enabled:=true;
    Edit1.Text:=klic1+klic2;
  end
  else
  begin
    ComboBox7.Enabled:=false;
    ComboBox8.Enabled:=false;
    ComboBox7.ItemIndex:=-1;
    ComboBox8.ItemIndex:=-1;
    klic2[10]:='n';
    klic2[11]:='/';
    klic2[12]:='a';
    Edit1.Text:=klic1+klic2;
    deska:=0;
    if ((ComboBox9.ItemIndex>-1) AND (ComboBox10.ItemIndex>-1) AND (CheckBox2.Checked=true)) OR
       ((ComboBox9.ItemIndex=-1) AND (ComboBox10.ItemIndex=-1) AND (CheckBox2.Checked=false))
    then deska:=deska+1;
    if ((ComboBox11.ItemIndex>-1) AND (ComboBox12.ItemIndex>-1) AND (CheckBox3.Checked=true)) OR
       ((ComboBox11.ItemIndex=-1) AND (ComboBox12.ItemIndex=-1) AND (CheckBox3.Checked=false))
    then deska:=deska+1;
    if ((ComboBox13.ItemIndex>-1) AND (ComboBox14.ItemIndex>-1) AND (CheckBox4.Checked=true)) OR
       ((ComboBox13.ItemIndex=-1) AND (ComboBox14.ItemIndex=-1) AND (CheckBox4.Checked=false))
    then deska:=deska+1;
    if ((ComboBox15.ItemIndex>-1) AND (ComboBox16.ItemIndex>-1) AND (CheckBox5.Checked=true)) OR
       ((ComboBox15.ItemIndex=-1) AND (ComboBox16.ItemIndex=-1) AND (CheckBox5.Checked=false))
    then deska:=deska+1;
    if ((ComboBox17.ItemIndex>-1) AND (ComboBox18.ItemIndex>-1) AND (CheckBox6.Checked=true)) OR
       ((ComboBox17.ItemIndex=-1) AND (ComboBox18.ItemIndex=-1) AND (CheckBox6.Checked=false))
    then deska:=deska+1;
    if ((CheckBox2.Checked=false) AND (CheckBox3.Checked=false) AND
        (CheckBox4.Checked=false) AND (CheckBox5.Checked=false) AND
        (CheckBox6.Checked=false)) OR (deska=5)
    then Button1.Enabled:=true
    else Button1.Enabled:=false;
  end;
end;
 
procedure TForm1.CheckBox2Click(Sender: TObject);
begin
  if CheckBox2.Checked=true then
  begin
    ComboBox9.Enabled:=true;
    ComboBox10.Enabled:=true;
    if manual=false then
    begin
      Button1.Enabled:=false;
      klic2[15]:='?';
      klic2[16]:='>';
      klic2[17]:='?';
    end else Button1.Enabled:=true;
    Edit1.Text:=klic1+klic2;
  end
  else
  begin
    ComboBox9.Enabled:=false;
    ComboBox10.Enabled:=false;
    ComboBox9.ItemIndex:=-1;
    ComboBox10.ItemIndex:=-1;
    klic2[15]:='n';
    klic2[16]:='/';
    klic2[17]:='a';
    Edit1.Text:=klic1+klic2;
    deska:=0;
    if ((ComboBox7.ItemIndex>-1) AND (ComboBox8.ItemIndex>-1) AND (CheckBox1.Checked=true)) OR
       ((ComboBox7.ItemIndex=-1) AND (ComboBox8.ItemIndex=-1) AND (CheckBox1.Checked=false))
    then deska:=deska+1;
    if ((ComboBox11.ItemIndex>-1) AND (ComboBox12.ItemIndex>-1) AND (CheckBox3.Checked=true)) OR
       ((ComboBox11.ItemIndex=-1) AND (ComboBox12.ItemIndex=-1) AND (CheckBox3.Checked=false))
    then deska:=deska+1;
    if ((ComboBox13.ItemIndex>-1) AND (ComboBox14.ItemIndex>-1) AND (CheckBox4.Checked=true)) OR
       ((ComboBox13.ItemIndex=-1) AND (ComboBox14.ItemIndex=-1) AND (CheckBox4.Checked=false))
    then deska:=deska+1;
    if ((ComboBox15.ItemIndex>-1) AND (ComboBox16.ItemIndex>-1) AND (CheckBox5.Checked=true)) OR
       ((ComboBox15.ItemIndex=-1) AND (ComboBox16.ItemIndex=-1) AND (CheckBox5.Checked=false))
    then deska:=deska+1;
    if ((ComboBox17.ItemIndex>-1) AND (ComboBox18.ItemIndex>-1) AND (CheckBox6.Checked=true)) OR
       ((ComboBox17.ItemIndex=-1) AND (ComboBox18.ItemIndex=-1) AND (CheckBox6.Checked=false))
    then deska:=deska+1;
    if ((CheckBox1.Checked=false) AND (CheckBox3.Checked=false) AND
        (CheckBox4.Checked=false) AND (CheckBox5.Checked=false) AND
        (CheckBox6.Checked=false)) OR (deska=5)
    then Button1.Enabled:=true
    else Button1.Enabled:=false;
  end;
end;
 
procedure TForm1.CheckBox3Click(Sender: TObject);
begin
  if CheckBox3.Checked=true then
  begin
    ComboBox11.Enabled:=true;
    ComboBox12.Enabled:=true;
    if manual=false then
    begin
      Button1.Enabled:=false;
      klic2[20]:='?';
      klic2[21]:='>';
      klic2[22]:='?';
    end else Button1.Enabled:=true;
    Edit1.Text:=klic1+klic2;
  end
  else
  begin
    ComboBox11.Enabled:=false;
    ComboBox12.Enabled:=false;
    ComboBox11.ItemIndex:=-1;
    ComboBox12.ItemIndex:=-1;
    klic2[20]:='n';
    klic2[21]:='/';
    klic2[22]:='a';
    Edit1.Text:=klic1+klic2;
    deska:=0;
    if ((ComboBox7.ItemIndex>-1) AND (ComboBox8.ItemIndex>-1) AND (CheckBox1.Checked=true)) OR
       ((ComboBox7.ItemIndex=-1) AND (ComboBox8.ItemIndex=-1) AND (CheckBox1.Checked=false))
    then deska:=deska+1;
    if ((ComboBox9.ItemIndex>-1) AND (ComboBox10.ItemIndex>-1) AND (CheckBox2.Checked=true)) OR
       ((ComboBox9.ItemIndex=-1) AND (ComboBox10.ItemIndex=-1) AND (CheckBox2.Checked=false))
    then deska:=deska+1;
    if ((ComboBox13.ItemIndex>-1) AND (ComboBox14.ItemIndex>-1) AND (CheckBox4.Checked=true)) OR
       ((ComboBox13.ItemIndex=-1) AND (ComboBox14.ItemIndex=-1) AND (CheckBox4.Checked=false))
    then deska:=deska+1;
    if ((ComboBox15.ItemIndex>-1) AND (ComboBox16.ItemIndex>-1) AND (CheckBox5.Checked=true)) OR
       ((ComboBox15.ItemIndex=-1) AND (ComboBox16.ItemIndex=-1) AND (CheckBox5.Checked=false))
    then deska:=deska+1;
    if ((ComboBox17.ItemIndex>-1) AND (ComboBox18.ItemIndex>-1) AND (CheckBox6.Checked=true)) OR
       ((ComboBox17.ItemIndex=-1) AND (ComboBox18.ItemIndex=-1) AND (CheckBox6.Checked=false))
    then deska:=deska+1;
    if ((CheckBox1.Checked=false) AND (CheckBox2.Checked=false) AND
        (CheckBox4.Checked=false) AND (CheckBox5.Checked=false) AND
        (CheckBox6.Checked=false)) OR (deska=5)
    then Button1.Enabled:=true
    else Button1.Enabled:=false;
  end;
end;
 
procedure TForm1.CheckBox4Click(Sender: TObject);
begin
  if CheckBox4.Checked=true then
  begin
    ComboBox13.Enabled:=true;
    ComboBox14.Enabled:=true;
    if manual=false then
    begin
      Button1.Enabled:=false;
      klic2[25]:='?';
      klic2[26]:='>';
      klic2[27]:='?';
    end else Button1.Enabled:=true;
    Edit1.Text:=klic1+klic2;
  end
  else
  begin
    ComboBox13.Enabled:=false;
    ComboBox14.Enabled:=false;
    ComboBox13.ItemIndex:=-1;
    ComboBox14.ItemIndex:=-1;
    klic2[25]:='n';
    klic2[26]:='/';
    klic2[27]:='a';
    Edit1.Text:=klic1+klic2;
    deska:=0;
    if ((ComboBox7.ItemIndex>-1) AND (ComboBox8.ItemIndex>-1) AND (CheckBox1.Checked=true)) OR
       ((ComboBox7.ItemIndex=-1) AND (ComboBox8.ItemIndex=-1) AND (CheckBox1.Checked=false))
    then deska:=deska+1;
    if ((ComboBox9.ItemIndex>-1) AND (ComboBox10.ItemIndex>-1) AND (CheckBox2.Checked=true)) OR
       ((ComboBox9.ItemIndex=-1) AND (ComboBox10.ItemIndex=-1) AND (CheckBox2.Checked=false))
    then deska:=deska+1;
    if ((ComboBox11.ItemIndex>-1) AND (ComboBox12.ItemIndex>-1) AND (CheckBox3.Checked=true)) OR
       ((ComboBox11.ItemIndex=-1) AND (ComboBox12.ItemIndex=-1) AND (CheckBox3.Checked=false))
    then deska:=deska+1;
    if ((ComboBox15.ItemIndex>-1) AND (ComboBox16.ItemIndex>-1) AND (CheckBox5.Checked=true)) OR
       ((ComboBox15.ItemIndex=-1) AND (ComboBox16.ItemIndex=-1) AND (CheckBox5.Checked=false))
    then deska:=deska+1;
    if ((ComboBox17.ItemIndex>-1) AND (ComboBox18.ItemIndex>-1) AND (CheckBox6.Checked=true)) OR
       ((ComboBox17.ItemIndex=-1) AND (ComboBox18.ItemIndex=-1) AND (CheckBox6.Checked=false))
    then deska:=deska+1;
    if ((CheckBox1.Checked=false) AND (CheckBox2.Checked=false) AND
        (CheckBox3.Checked=false) AND (CheckBox5.Checked=false) AND
        (CheckBox6.Checked=false)) OR (deska=5)
    then Button1.Enabled:=true
    else Button1.Enabled:=false;
  end;
end;
 
procedure TForm1.CheckBox5Click(Sender: TObject);
begin
  if CheckBox5.Checked=true then
  begin
    ComboBox15.Enabled:=true;
    ComboBox16.Enabled:=true;
    if manual=false then
    begin
      Button1.Enabled:=false;
      klic2[30]:='?';
      klic2[31]:='>';
      klic2[32]:='?';
    end else Button1.Enabled:=true;
    Edit1.Text:=klic1+klic2;
  end
  else
  begin
    ComboBox15.Enabled:=false;
    ComboBox16.Enabled:=false;
    ComboBox15.ItemIndex:=-1;
    ComboBox16.ItemIndex:=-1;
    klic2[30]:='n';
    klic2[31]:='/';
    klic2[32]:='a';
    Edit1.Text:=klic1+klic2;
    deska:=0;
    if ((ComboBox7.ItemIndex>-1) AND (ComboBox8.ItemIndex>-1) AND (CheckBox1.Checked=true)) OR
       ((ComboBox7.ItemIndex=-1) AND (ComboBox8.ItemIndex=-1) AND (CheckBox1.Checked=false))
    then deska:=deska+1;
    if ((ComboBox9.ItemIndex>-1) AND (ComboBox10.ItemIndex>-1) AND (CheckBox2.Checked=true)) OR
       ((ComboBox9.ItemIndex=-1) AND (ComboBox10.ItemIndex=-1) AND (CheckBox2.Checked=false))
    then deska:=deska+1;
    if ((ComboBox11.ItemIndex>-1) AND (ComboBox12.ItemIndex>-1) AND (CheckBox3.Checked=true)) OR
       ((ComboBox11.ItemIndex=-1) AND (ComboBox12.ItemIndex=-1) AND (CheckBox3.Checked=false))
    then deska:=deska+1;
    if ((ComboBox13.ItemIndex>-1) AND (ComboBox14.ItemIndex>-1) AND (CheckBox4.Checked=true)) OR
       ((ComboBox13.ItemIndex=-1) AND (ComboBox14.ItemIndex=-1) AND (CheckBox4.Checked=false))
    then deska:=deska+1;
    if ((ComboBox17.ItemIndex>-1) AND (ComboBox18.ItemIndex>-1) AND (CheckBox6.Checked=true)) OR
       ((ComboBox17.ItemIndex=-1) AND (ComboBox18.ItemIndex=-1) AND (CheckBox6.Checked=false))
    then deska:=deska+1;
    if ((CheckBox1.Checked=false) AND (CheckBox2.Checked=false) AND
        (CheckBox3.Checked=false) AND (CheckBox4.Checked=false) AND
        (CheckBox6.Checked=false)) OR (deska=5)
    then Button1.Enabled:=true
    else Button1.Enabled:=false;
  end;
end;
 
procedure TForm1.CheckBox6Click(Sender: TObject);
begin
  if CheckBox6.Checked=true then
  begin
    ComboBox17.Enabled:=true;
    ComboBox18.Enabled:=true;
    if manual=false then
    begin
      Button1.Enabled:=false;
      klic2[35]:='?';
      klic2[36]:='>';
      klic2[37]:='?';
    end else Button1.Enabled:=true;
    Edit1.Text:=klic1+klic2;
  end
  else
  begin
    ComboBox17.Enabled:=false;
    ComboBox18.Enabled:=false;
    ComboBox17.ItemIndex:=-1;
    ComboBox18.ItemIndex:=-1;
    klic2[35]:='n';
    klic2[36]:='/';
    klic2[37]:='a';
    Edit1.Text:=klic1+klic2;
    deska:=0;
    if ((ComboBox7.ItemIndex>-1) AND (ComboBox8.ItemIndex>-1) AND (CheckBox1.Checked=true)) OR
       ((ComboBox7.ItemIndex=-1) AND (ComboBox8.ItemIndex=-1) AND (CheckBox1.Checked=false))
    then deska:=deska+1;
    if ((ComboBox9.ItemIndex>-1) AND (ComboBox10.ItemIndex>-1) AND (CheckBox2.Checked=true)) OR
       ((ComboBox9.ItemIndex=-1) AND (ComboBox10.ItemIndex=-1) AND (CheckBox2.Checked=false))
    then deska:=deska+1;
    if ((ComboBox11.ItemIndex>-1) AND (ComboBox12.ItemIndex>-1) AND (CheckBox3.Checked=true)) OR
       ((ComboBox11.ItemIndex=-1) AND (ComboBox12.ItemIndex=-1) AND (CheckBox3.Checked=false))
    then deska:=deska+1;
    if ((ComboBox13.ItemIndex>-1) AND (ComboBox14.ItemIndex>-1) AND (CheckBox4.Checked=true)) OR
       ((ComboBox13.ItemIndex=-1) AND (ComboBox14.ItemIndex=-1) AND (CheckBox4.Checked=false))
    then deska:=deska+1;
    if ((ComboBox15.ItemIndex>-1) AND (ComboBox16.ItemIndex>-1) AND (CheckBox5.Checked=true)) OR
       ((ComboBox15.ItemIndex=-1) AND (ComboBox16.ItemIndex=-1) AND (CheckBox5.Checked=false))
    then deska:=deska+1;
    if ((CheckBox1.Checked=false) AND (CheckBox2.Checked=false) AND
        (CheckBox3.Checked=false) AND (CheckBox4.Checked=false) AND
        (CheckBox5.Checked=false)) OR (deska=5)
    then Button1.Enabled:=true
    else Button1.Enabled:=false;
  end;
end;
 
procedure TForm1.ComboBox10Change(Sender: TObject);
begin
  if (ComboBox10.ItemIndex=ComboBox7.ItemIndex)  OR
     (ComboBox10.ItemIndex=ComboBox8.ItemIndex)  OR
     (ComboBox10.ItemIndex=ComboBox9.ItemIndex)  OR
     (ComboBox10.ItemIndex=ComboBox11.ItemIndex) OR
     (ComboBox10.ItemIndex=ComboBox12.ItemIndex) OR
     (ComboBox10.ItemIndex=ComboBox13.ItemIndex) OR
     (ComboBox10.ItemIndex=ComboBox14.ItemIndex) OR
     (ComboBox10.ItemIndex=ComboBox15.ItemIndex) OR
     (ComboBox10.ItemIndex=ComboBox16.ItemIndex) OR
     (ComboBox10.ItemIndex=ComboBox17.ItemIndex) OR
     (ComboBox10.ItemIndex=ComboBox18.ItemIndex)
  then begin ComboBox10.ItemIndex:=-1; klic2[17]:='?'; Edit1.Text:=klic1+klic2; Button1.Enabled:=false; end
  else begin if (ComboBox9.ItemIndex>-1) AND
                (((ComboBox7.ItemIndex=-1) AND (ComboBox8.ItemIndex=-1) AND (CheckBox1.Checked=false)) OR
                 ((ComboBox7.ItemIndex>-1) AND (ComboBox8.ItemIndex>-1) AND (CheckBox1.Checked=true))) AND
                (((ComboBox11.ItemIndex=-1) AND (ComboBox12.ItemIndex=-1) AND (CheckBox3.Checked=false)) OR
                 ((ComboBox11.ItemIndex>-1) AND (ComboBox12.ItemIndex>-1) AND (CheckBox3.Checked=true))) AND
                (((ComboBox13.ItemIndex=-1) AND (ComboBox14.ItemIndex=-1) AND (CheckBox4.Checked=false)) OR
                 ((ComboBox13.ItemIndex>-1) AND (ComboBox14.ItemIndex>-1) AND (CheckBox4.Checked=true))) AND
                (((ComboBox15.ItemIndex=-1) AND (ComboBox16.ItemIndex=-1) AND (CheckBox5.Checked=false)) OR
                 ((ComboBox15.ItemIndex>-1) AND (ComboBox16.ItemIndex>-1) AND (CheckBox5.Checked=true))) AND
                (((ComboBox17.ItemIndex=-1) AND (ComboBox18.ItemIndex=-1) AND (CheckBox6.Checked=false)) OR
                 ((ComboBox17.ItemIndex>-1) AND (ComboBox18.ItemIndex>-1) AND (CheckBox6.Checked=true)))
  then Button1.Enabled:=true;
  vymena:=ComboBox10.Items[ComboBox10.ItemIndex];
  klic2[17]:=vymena[1];
  Edit1.Text:=klic1+klic2;
  end;
end;
 
procedure TForm1.ComboBox11Change(Sender: TObject);
begin
  if (ComboBox11.ItemIndex=ComboBox7.ItemIndex)  OR
     (ComboBox11.ItemIndex=ComboBox8.ItemIndex)  OR
     (ComboBox11.ItemIndex=ComboBox9.ItemIndex)  OR
     (ComboBox11.ItemIndex=ComboBox10.ItemIndex) OR
     (ComboBox11.ItemIndex=ComboBox12.ItemIndex) OR
     (ComboBox11.ItemIndex=ComboBox13.ItemIndex) OR
     (ComboBox11.ItemIndex=ComboBox14.ItemIndex) OR
     (ComboBox11.ItemIndex=ComboBox15.ItemIndex) OR
     (ComboBox11.ItemIndex=ComboBox16.ItemIndex) OR
     (ComboBox11.ItemIndex=ComboBox17.ItemIndex) OR
     (ComboBox11.ItemIndex=ComboBox18.ItemIndex)
  then begin ComboBox11.ItemIndex:=-1; klic2[20]:='?'; Edit1.Text:=klic1+klic2; Button1.Enabled:=false; end
  else begin if (ComboBox12.ItemIndex>-1) AND
                (((ComboBox7.ItemIndex=-1) AND (ComboBox8.ItemIndex=-1) AND (CheckBox1.Checked=false)) OR
                 ((ComboBox7.ItemIndex>-1) AND (ComboBox8.ItemIndex>-1) AND (CheckBox1.Checked=true))) AND
                (((ComboBox9.ItemIndex=-1) AND (ComboBox10.ItemIndex=-1) AND (CheckBox2.Checked=false)) OR
                 ((ComboBox9.ItemIndex>-1) AND (ComboBox10.ItemIndex>-1) AND (CheckBox2.Checked=true))) AND
                (((ComboBox13.ItemIndex=-1) AND (ComboBox14.ItemIndex=-1) AND (CheckBox4.Checked=false)) OR
                 ((ComboBox13.ItemIndex>-1) AND (ComboBox14.ItemIndex>-1) AND (CheckBox4.Checked=true))) AND
                (((ComboBox15.ItemIndex=-1) AND (ComboBox16.ItemIndex=-1) AND (CheckBox5.Checked=false)) OR
                 ((ComboBox15.ItemIndex>-1) AND (ComboBox16.ItemIndex>-1) AND (CheckBox5.Checked=true))) AND
                (((ComboBox17.ItemIndex=-1) AND (ComboBox18.ItemIndex=-1) AND (CheckBox6.Checked=false)) OR
                 ((ComboBox17.ItemIndex>-1) AND (ComboBox18.ItemIndex>-1) AND (CheckBox6.Checked=true)))
  then Button1.Enabled:=true;
  vymena:=ComboBox11.Items[ComboBox11.ItemIndex];
  klic2[20]:=vymena[1];
  Edit1.Text:=klic1+klic2;
  end;
end;
 
procedure TForm1.ComboBox12Change(Sender: TObject);
begin
  if (ComboBox12.ItemIndex=ComboBox7.ItemIndex)  OR
     (ComboBox12.ItemIndex=ComboBox8.ItemIndex)  OR
     (ComboBox12.ItemIndex=ComboBox9.ItemIndex)  OR
     (ComboBox12.ItemIndex=ComboBox10.ItemIndex) OR
     (ComboBox12.ItemIndex=ComboBox11.ItemIndex) OR
     (ComboBox12.ItemIndex=ComboBox13.ItemIndex) OR
     (ComboBox12.ItemIndex=ComboBox14.ItemIndex) OR
     (ComboBox12.ItemIndex=ComboBox15.ItemIndex) OR
     (ComboBox12.ItemIndex=ComboBox16.ItemIndex) OR
     (ComboBox12.ItemIndex=ComboBox17.ItemIndex) OR
     (ComboBox12.ItemIndex=ComboBox18.ItemIndex)
  then begin ComboBox12.ItemIndex:=-1; klic2[22]:='?'; Edit1.Text:=klic1+klic2; Button1.Enabled:=false; end
  else begin if (ComboBox11.ItemIndex>-1) AND
                (((ComboBox7.ItemIndex=-1) AND (ComboBox8.ItemIndex=-1) AND (CheckBox1.Checked=false)) OR
                 ((ComboBox7.ItemIndex>-1) AND (ComboBox8.ItemIndex>-1) AND (CheckBox1.Checked=true))) AND
                (((ComboBox9.ItemIndex=-1) AND (ComboBox10.ItemIndex=-1) AND (CheckBox2.Checked=false)) OR
                 ((ComboBox9.ItemIndex>-1) AND (ComboBox10.ItemIndex>-1) AND (CheckBox2.Checked=true))) AND
                (((ComboBox13.ItemIndex=-1) AND (ComboBox14.ItemIndex=-1) AND (CheckBox4.Checked=false)) OR
                 ((ComboBox13.ItemIndex>-1) AND (ComboBox14.ItemIndex>-1) AND (CheckBox4.Checked=true))) AND
                (((ComboBox15.ItemIndex=-1) AND (ComboBox16.ItemIndex=-1) AND (CheckBox5.Checked=false)) OR
                 ((ComboBox15.ItemIndex>-1) AND (ComboBox16.ItemIndex>-1) AND (CheckBox5.Checked=true))) AND
                (((ComboBox17.ItemIndex=-1) AND (ComboBox18.ItemIndex=-1) AND (CheckBox6.Checked=false)) OR
                 ((ComboBox17.ItemIndex>-1) AND (ComboBox18.ItemIndex>-1) AND (CheckBox6.Checked=true)))
  then Button1.Enabled:=true;
  vymena:=ComboBox12.Items[ComboBox12.ItemIndex];
  klic2[22]:=vymena[1];
  Edit1.Text:=klic1+klic2;
  end;
end;
 
procedure TForm1.ComboBox13Change(Sender: TObject);
begin
  if (ComboBox13.ItemIndex=ComboBox7.ItemIndex)  OR
     (ComboBox13.ItemIndex=ComboBox8.ItemIndex)  OR
     (ComboBox13.ItemIndex=ComboBox9.ItemIndex)  OR
     (ComboBox13.ItemIndex=ComboBox10.ItemIndex) OR
     (ComboBox13.ItemIndex=ComboBox11.ItemIndex) OR
     (ComboBox13.ItemIndex=ComboBox12.ItemIndex) OR
     (ComboBox13.ItemIndex=ComboBox14.ItemIndex) OR
     (ComboBox13.ItemIndex=ComboBox15.ItemIndex) OR
     (ComboBox13.ItemIndex=ComboBox16.ItemIndex) OR
     (ComboBox13.ItemIndex=ComboBox17.ItemIndex) OR
     (ComboBox13.ItemIndex=ComboBox18.ItemIndex)
  then begin ComboBox13.ItemIndex:=-1; klic2[25]:='?'; Edit1.Text:=klic1+klic2; Button1.Enabled:=false; end
  else begin if (ComboBox14.ItemIndex>-1) AND
                (((ComboBox7.ItemIndex=-1) AND (ComboBox8.ItemIndex=-1) AND (CheckBox1.Checked=false)) OR
                 ((ComboBox7.ItemIndex>-1) AND (ComboBox8.ItemIndex>-1) AND (CheckBox1.Checked=true))) AND
                (((ComboBox9.ItemIndex=-1) AND (ComboBox10.ItemIndex=-1) AND (CheckBox2.Checked=false)) OR
                 ((ComboBox9.ItemIndex>-1) AND (ComboBox10.ItemIndex>-1) AND (CheckBox2.Checked=true))) AND
                (((ComboBox11.ItemIndex=-1) AND (ComboBox12.ItemIndex=-1) AND (CheckBox3.Checked=false)) OR
                 ((ComboBox11.ItemIndex>-1) AND (ComboBox12.ItemIndex>-1) AND (CheckBox3.Checked=true))) AND
                (((ComboBox15.ItemIndex=-1) AND (ComboBox16.ItemIndex=-1) AND (CheckBox5.Checked=false)) OR
                 ((ComboBox15.ItemIndex>-1) AND (ComboBox16.ItemIndex>-1) AND (CheckBox5.Checked=true))) AND
                (((ComboBox17.ItemIndex=-1) AND (ComboBox18.ItemIndex=-1) AND (CheckBox6.Checked=false)) OR
                 ((ComboBox17.ItemIndex>-1) AND (ComboBox18.ItemIndex>-1) AND (CheckBox6.Checked=true)))
  then Button1.Enabled:=true;
  vymena:=ComboBox13.Items[ComboBox13.ItemIndex];
  klic2[25]:=vymena[1];
  Edit1.Text:=klic1+klic2;
  end;
end;
 
procedure TForm1.ComboBox14Change(Sender: TObject);
begin
  if (ComboBox14.ItemIndex=ComboBox7.ItemIndex)  OR
     (ComboBox14.ItemIndex=ComboBox8.ItemIndex)  OR
     (ComboBox14.ItemIndex=ComboBox9.ItemIndex)  OR
     (ComboBox14.ItemIndex=ComboBox10.ItemIndex) OR
     (ComboBox14.ItemIndex=ComboBox11.ItemIndex) OR
     (ComboBox14.ItemIndex=ComboBox12.ItemIndex) OR
     (ComboBox14.ItemIndex=ComboBox13.ItemIndex) OR
     (ComboBox14.ItemIndex=ComboBox15.ItemIndex) OR
     (ComboBox14.ItemIndex=ComboBox16.ItemIndex) OR
     (ComboBox14.ItemIndex=ComboBox17.ItemIndex) OR
     (ComboBox14.ItemIndex=ComboBox18.ItemIndex)
  then begin ComboBox14.ItemIndex:=-1; klic2[27]:='?'; Edit1.Text:=klic1+klic2; Button1.Enabled:=false; end
  else begin if (ComboBox13.ItemIndex>-1) AND
                (((ComboBox7.ItemIndex=-1) AND (ComboBox8.ItemIndex=-1) AND (CheckBox1.Checked=false)) OR
                 ((ComboBox7.ItemIndex>-1) AND (ComboBox8.ItemIndex>-1) AND (CheckBox1.Checked=true))) AND
                (((ComboBox9.ItemIndex=-1) AND (ComboBox10.ItemIndex=-1) AND (CheckBox2.Checked=false)) OR
                 ((ComboBox9.ItemIndex>-1) AND (ComboBox10.ItemIndex>-1) AND (CheckBox2.Checked=true))) AND
                (((ComboBox11.ItemIndex=-1) AND (ComboBox12.ItemIndex=-1) AND (CheckBox3.Checked=false)) OR
                 ((ComboBox11.ItemIndex>-1) AND (ComboBox12.ItemIndex>-1) AND (CheckBox3.Checked=true))) AND
                (((ComboBox15.ItemIndex=-1) AND (ComboBox16.ItemIndex=-1) AND (CheckBox5.Checked=false)) OR
                 ((ComboBox15.ItemIndex>-1) AND (ComboBox16.ItemIndex>-1) AND (CheckBox5.Checked=true))) AND
                (((ComboBox17.ItemIndex=-1) AND (ComboBox18.ItemIndex=-1) AND (CheckBox6.Checked=false)) OR
                 ((ComboBox17.ItemIndex>-1) AND (ComboBox18.ItemIndex>-1) AND (CheckBox6.Checked=true)))
  then Button1.Enabled:=true;
  vymena:=ComboBox14.Items[ComboBox14.ItemIndex];
  klic2[27]:=vymena[1];
  Edit1.Text:=klic1+klic2;
  end;
end;
 
procedure TForm1.ComboBox15Change(Sender: TObject);
begin
  if (ComboBox15.ItemIndex=ComboBox7.ItemIndex)  OR
     (ComboBox15.ItemIndex=ComboBox8.ItemIndex)  OR
     (ComboBox15.ItemIndex=ComboBox9.ItemIndex)  OR
     (ComboBox15.ItemIndex=ComboBox10.ItemIndex) OR
     (ComboBox15.ItemIndex=ComboBox11.ItemIndex) OR
     (ComboBox15.ItemIndex=ComboBox12.ItemIndex) OR
     (ComboBox15.ItemIndex=ComboBox13.ItemIndex) OR
     (ComboBox15.ItemIndex=ComboBox14.ItemIndex) OR
     (ComboBox15.ItemIndex=ComboBox16.ItemIndex) OR
     (ComboBox15.ItemIndex=ComboBox17.ItemIndex) OR
     (ComboBox15.ItemIndex=ComboBox18.ItemIndex)
  then begin ComboBox15.ItemIndex:=-1; klic2[30]:='?'; Edit1.Text:=klic1+klic2; Button1.Enabled:=false; end
  else begin if (ComboBox16.ItemIndex>-1) AND
                (((ComboBox7.ItemIndex=-1) AND (ComboBox8.ItemIndex=-1) AND (CheckBox1.Checked=false)) OR
                 ((ComboBox7.ItemIndex>-1) AND (ComboBox8.ItemIndex>-1) AND (CheckBox1.Checked=true))) AND
                (((ComboBox9.ItemIndex=-1) AND (ComboBox10.ItemIndex=-1) AND (CheckBox2.Checked=false)) OR
                 ((ComboBox9.ItemIndex>-1) AND (ComboBox10.ItemIndex>-1) AND (CheckBox2.Checked=true))) AND
                (((ComboBox11.ItemIndex=-1) AND (ComboBox12.ItemIndex=-1) AND (CheckBox3.Checked=false)) OR
                 ((ComboBox11.ItemIndex>-1) AND (ComboBox12.ItemIndex>-1) AND (CheckBox3.Checked=true))) AND
                (((ComboBox13.ItemIndex=-1) AND (ComboBox14.ItemIndex=-1) AND (CheckBox4.Checked=false)) OR
                 ((ComboBox13.ItemIndex>-1) AND (ComboBox14.ItemIndex>-1) AND (CheckBox4.Checked=true))) AND
                (((ComboBox17.ItemIndex=-1) AND (ComboBox18.ItemIndex=-1) AND (CheckBox6.Checked=false)) OR
                 ((ComboBox17.ItemIndex>-1) AND (ComboBox18.ItemIndex>-1) AND (CheckBox6.Checked=true)))
  then Button1.Enabled:=true;
  vymena:=ComboBox15.Items[ComboBox15.ItemIndex];
  klic2[30]:=vymena[1];
  Edit1.Text:=klic1+klic2;
  end;
end;
 
procedure TForm1.ComboBox16Change(Sender: TObject);
begin
  if (ComboBox16.ItemIndex=ComboBox7.ItemIndex)  OR
     (ComboBox16.ItemIndex=ComboBox8.ItemIndex)  OR
     (ComboBox16.ItemIndex=ComboBox9.ItemIndex)  OR
     (ComboBox16.ItemIndex=ComboBox10.ItemIndex) OR
     (ComboBox16.ItemIndex=ComboBox11.ItemIndex) OR
     (ComboBox16.ItemIndex=ComboBox12.ItemIndex) OR
     (ComboBox16.ItemIndex=ComboBox13.ItemIndex) OR
     (ComboBox16.ItemIndex=ComboBox14.ItemIndex) OR
     (ComboBox16.ItemIndex=ComboBox15.ItemIndex) OR
     (ComboBox16.ItemIndex=ComboBox17.ItemIndex) OR
     (ComboBox16.ItemIndex=ComboBox18.ItemIndex)
  then begin ComboBox16.ItemIndex:=-1; klic2[32]:='?'; Edit1.Text:=klic1+klic2; Button1.Enabled:=false; end
  else begin if (ComboBox15.ItemIndex>-1) AND
                (((ComboBox7.ItemIndex=-1) AND (ComboBox8.ItemIndex=-1) AND (CheckBox1.Checked=false)) OR
                 ((ComboBox7.ItemIndex>-1) AND (ComboBox8.ItemIndex>-1) AND (CheckBox1.Checked=true))) AND
                (((ComboBox9.ItemIndex=-1) AND (ComboBox10.ItemIndex=-1) AND (CheckBox2.Checked=false)) OR
                 ((ComboBox9.ItemIndex>-1) AND (ComboBox10.ItemIndex>-1) AND (CheckBox2.Checked=true))) AND
                (((ComboBox11.ItemIndex=-1) AND (ComboBox12.ItemIndex=-1) AND (CheckBox3.Checked=false)) OR
                 ((ComboBox11.ItemIndex>-1) AND (ComboBox12.ItemIndex>-1) AND (CheckBox3.Checked=true))) AND
                (((ComboBox13.ItemIndex=-1) AND (ComboBox14.ItemIndex=-1) AND (CheckBox4.Checked=false)) OR
                 ((ComboBox13.ItemIndex>-1) AND (ComboBox14.ItemIndex>-1) AND (CheckBox4.Checked=true))) AND
                (((ComboBox17.ItemIndex=-1) AND (ComboBox18.ItemIndex=-1) AND (CheckBox6.Checked=false)) OR
                 ((ComboBox17.ItemIndex>-1) AND (ComboBox18.ItemIndex>-1) AND (CheckBox6.Checked=true)))
  then Button1.Enabled:=true;
  vymena:=ComboBox16.Items[ComboBox16.ItemIndex];
  klic2[32]:=vymena[1];
  Edit1.Text:=klic1+klic2;
  end;
end;
 
procedure TForm1.ComboBox17Change(Sender: TObject);
begin
  if (ComboBox17.ItemIndex=ComboBox7.ItemIndex)  OR
     (ComboBox17.ItemIndex=ComboBox8.ItemIndex)  OR
     (ComboBox17.ItemIndex=ComboBox9.ItemIndex)  OR
     (ComboBox17.ItemIndex=ComboBox10.ItemIndex) OR
     (ComboBox17.ItemIndex=ComboBox11.ItemIndex) OR
     (ComboBox17.ItemIndex=ComboBox12.ItemIndex) OR
     (ComboBox17.ItemIndex=ComboBox13.ItemIndex) OR
     (ComboBox17.ItemIndex=ComboBox14.ItemIndex) OR
     (ComboBox17.ItemIndex=ComboBox15.ItemIndex) OR
     (ComboBox17.ItemIndex=ComboBox16.ItemIndex) OR
     (ComboBox17.ItemIndex=ComboBox18.ItemIndex)
  then begin ComboBox17.ItemIndex:=-1; klic2[35]:='?'; Edit1.Text:=klic1+klic2; Button1.Enabled:=false; end
  else begin if (ComboBox18.ItemIndex>-1) AND
                (((ComboBox7.ItemIndex=-1) AND (ComboBox8.ItemIndex=-1) AND (CheckBox1.Checked=false)) OR
                 ((ComboBox7.ItemIndex>-1) AND (ComboBox8.ItemIndex>-1) AND (CheckBox1.Checked=true))) AND
                (((ComboBox9.ItemIndex=-1) AND (ComboBox10.ItemIndex=-1) AND (CheckBox2.Checked=false)) OR
                 ((ComboBox9.ItemIndex>-1) AND (ComboBox10.ItemIndex>-1) AND (CheckBox2.Checked=true))) AND
                (((ComboBox11.ItemIndex=-1) AND (ComboBox12.ItemIndex=-1) AND (CheckBox3.Checked=false)) OR
                 ((ComboBox11.ItemIndex>-1) AND (ComboBox12.ItemIndex>-1) AND (CheckBox3.Checked=true))) AND
                (((ComboBox13.ItemIndex=-1) AND (ComboBox14.ItemIndex=-1) AND (CheckBox4.Checked=false)) OR
                 ((ComboBox13.ItemIndex>-1) AND (ComboBox14.ItemIndex>-1) AND (CheckBox4.Checked=true))) AND
                (((ComboBox15.ItemIndex=-1) AND (ComboBox16.ItemIndex=-1) AND (CheckBox5.Checked=false)) OR
                 ((ComboBox15.ItemIndex>-1) AND (ComboBox16.ItemIndex>-1) AND (CheckBox5.Checked=true)))
  then Button1.Enabled:=true;
  vymena:=ComboBox17.Items[ComboBox17.ItemIndex];
  klic2[35]:=vymena[1];
  Edit1.Text:=klic1+klic2;
  end;
end;
 
procedure TForm1.ComboBox18Change(Sender: TObject);
begin
  if (ComboBox18.ItemIndex=ComboBox7.ItemIndex)  OR
     (ComboBox18.ItemIndex=ComboBox8.ItemIndex)  OR
     (ComboBox18.ItemIndex=ComboBox9.ItemIndex)  OR
     (ComboBox18.ItemIndex=ComboBox10.ItemIndex) OR
     (ComboBox18.ItemIndex=ComboBox11.ItemIndex) OR
     (ComboBox18.ItemIndex=ComboBox12.ItemIndex) OR
     (ComboBox18.ItemIndex=ComboBox13.ItemIndex) OR
     (ComboBox18.ItemIndex=ComboBox14.ItemIndex) OR
     (ComboBox18.ItemIndex=ComboBox15.ItemIndex) OR
     (ComboBox18.ItemIndex=ComboBox16.ItemIndex) OR
     (ComboBox18.ItemIndex=ComboBox17.ItemIndex)
  then begin ComboBox18.ItemIndex:=-1; klic2[37]:='?'; Edit1.Text:=klic1+klic2; Button1.Enabled:=false; end
  else begin if (ComboBox17.ItemIndex>-1) AND
                (((ComboBox7.ItemIndex=-1) AND (ComboBox8.ItemIndex=-1) AND (CheckBox1.Checked=false)) OR
                 ((ComboBox7.ItemIndex>-1) AND (ComboBox8.ItemIndex>-1) AND (CheckBox1.Checked=true))) AND
                (((ComboBox9.ItemIndex=-1) AND (ComboBox10.ItemIndex=-1) AND (CheckBox2.Checked=false)) OR
                 ((ComboBox9.ItemIndex>-1) AND (ComboBox10.ItemIndex>-1) AND (CheckBox2.Checked=true))) AND
                (((ComboBox11.ItemIndex=-1) AND (ComboBox12.ItemIndex=-1) AND (CheckBox3.Checked=false)) OR
                 ((ComboBox11.ItemIndex>-1) AND (ComboBox12.ItemIndex>-1) AND (CheckBox3.Checked=true))) AND
                (((ComboBox13.ItemIndex=-1) AND (ComboBox14.ItemIndex=-1) AND (CheckBox4.Checked=false)) OR
                 ((ComboBox13.ItemIndex>-1) AND (ComboBox14.ItemIndex>-1) AND (CheckBox4.Checked=true))) AND
                (((ComboBox15.ItemIndex=-1) AND (ComboBox16.ItemIndex=-1) AND (CheckBox5.Checked=false)) OR
                 ((ComboBox15.ItemIndex>-1) AND (ComboBox16.ItemIndex>-1) AND (CheckBox5.Checked=true)))
  then Button1.Enabled:=true;
  vymena:=ComboBox18.Items[ComboBox18.ItemIndex];
  klic2[37]:=vymena[1];
  Edit1.Text:=klic1+klic2;
  end;
end;
 
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  if ComboBox1.ItemIndex=ComboBox2.ItemIndex then
  begin
    ComboBox2.ItemIndex:=poradi1;
    menic:=ComboBox5.ItemIndex;
    ComboBox5.ItemIndex:=ComboBox4.ItemIndex;
    ComboBox4.ItemIndex:=menic;
  end;
  if ComboBox1.ItemIndex=ComboBox3.ItemIndex then
  begin
    ComboBox3.ItemIndex:=poradi1;
    menic:=ComboBox6.ItemIndex;
    ComboBox6.ItemIndex:=ComboBox4.ItemIndex;
    ComboBox4.ItemIndex:=menic;
  end;
  poradi1:=ComboBox1.ItemIndex;
  poradi2:=ComboBox2.ItemIndex;
  poradi3:=ComboBox3.ItemIndex;
  klic1:=ComboBox1.Items[poradi1]+'-'+ComboBox2.Items[poradi2]+'-'+ComboBox3.Items[poradi3];
  vymena:=ComboBox4.Items[ComboBox4.ItemIndex];
  klic2[3]:=vymena[1];
  vymena:=ComboBox4.Items[ComboBox5.ItemIndex];
  klic2[5]:=vymena[1];
  vymena:=ComboBox4.Items[ComboBox6.ItemIndex];
  klic2[7]:=vymena[1];
  Edit1.Text:=klic1+klic2;
  Edit2.Text:=ComboBox4.Items[ComboBox4.ItemIndex];
  Edit3.Text:=ComboBox5.Items[ComboBox5.ItemIndex];
  Edit4.Text:=ComboBox6.Items[ComboBox6.ItemIndex];
end;
 
procedure TForm1.ComboBox2Change(Sender: TObject);
begin
  if ComboBox2.ItemIndex=ComboBox1.ItemIndex then
  begin
    ComboBox1.ItemIndex:=poradi2;
    menic:=ComboBox4.ItemIndex;
    ComboBox4.ItemIndex:=ComboBox5.ItemIndex;
    ComboBox5.ItemIndex:=menic;
  end;
  if ComboBox2.ItemIndex=ComboBox3.ItemIndex then
  begin
    ComboBox3.ItemIndex:=poradi2;
    menic:=ComboBox6.ItemIndex;
    ComboBox6.ItemIndex:=ComboBox5.ItemIndex;
    ComboBox5.ItemIndex:=menic;
  end;
  poradi1:=ComboBox1.ItemIndex;
  poradi2:=ComboBox2.ItemIndex;
  poradi3:=ComboBox3.ItemIndex;
  klic1:=ComboBox1.Items[poradi1]+'-'+ComboBox2.Items[poradi2]+'-'+ComboBox3.Items[poradi3];
  vymena:=ComboBox4.Items[ComboBox4.ItemIndex];
  klic2[3]:=vymena[1];
  vymena:=ComboBox4.Items[ComboBox5.ItemIndex];
  klic2[5]:=vymena[1];
  vymena:=ComboBox4.Items[ComboBox6.ItemIndex];
  klic2[7]:=vymena[1];
  Edit1.Text:=klic1+klic2;
  Edit2.Text:=ComboBox4.Items[ComboBox4.ItemIndex];
  Edit3.Text:=ComboBox5.Items[ComboBox5.ItemIndex];
  Edit4.Text:=ComboBox6.Items[ComboBox6.ItemIndex];
end;
 
procedure TForm1.ComboBox3Change(Sender: TObject);
begin
  if ComboBox3.ItemIndex=ComboBox1.ItemIndex then
  begin
    ComboBox1.ItemIndex:=poradi3;
    menic:=ComboBox4.ItemIndex;
    ComboBox4.ItemIndex:=ComboBox6.ItemIndex;
    ComboBox6.ItemIndex:=menic;
  end;
  if ComboBox3.ItemIndex=ComboBox2.ItemIndex then
  begin
    ComboBox2.ItemIndex:=poradi3;
    menic:=ComboBox5.ItemIndex;
    ComboBox5.ItemIndex:=ComboBox6.ItemIndex;
    ComboBox6.ItemIndex:=menic;
  end;
  poradi1:=ComboBox1.ItemIndex;
  poradi2:=ComboBox2.ItemIndex;
  poradi3:=ComboBox3.ItemIndex;
  klic1:=ComboBox1.Items[poradi1]+'-'+ComboBox2.Items[poradi2]+'-'+ComboBox3.Items[poradi3];
  vymena:=ComboBox4.Items[ComboBox4.ItemIndex];
  klic2[3]:=vymena[1];
  vymena:=ComboBox4.Items[ComboBox5.ItemIndex];
  klic2[5]:=vymena[1];
  vymena:=ComboBox4.Items[ComboBox6.ItemIndex];
  klic2[7]:=vymena[1];
  Edit1.Text:=klic1+klic2;
  Edit2.Text:=ComboBox4.Items[ComboBox4.ItemIndex];
  Edit3.Text:=ComboBox5.Items[ComboBox5.ItemIndex];
  Edit4.Text:=ComboBox6.Items[ComboBox6.ItemIndex];
end;
 
procedure TForm1.ComboBox4Change(Sender: TObject);
begin
  vymena:=ComboBox4.Items[ComboBox4.ItemIndex];
  klic2[3]:=vymena[1];
  Edit1.Text:=klic1+klic2;
  Edit2.Text:=ComboBox4.Items[ComboBox4.ItemIndex];
end;
 
procedure TForm1.ComboBox5Change(Sender: TObject);
begin
  vymena:=ComboBox5.Items[ComboBox5.ItemIndex];
  klic2[5]:=vymena[1];
  Edit1.Text:=klic1+klic2;
  Edit3.Text:=ComboBox5.Items[ComboBox5.ItemIndex];
end;
 
procedure TForm1.ComboBox6Change(Sender: TObject);
begin
  vymena:=ComboBox6.Items[ComboBox6.ItemIndex];
  klic2[7]:=vymena[1];
  Edit1.Text:=klic1+klic2;
  Edit4.Text:=ComboBox6.Items[ComboBox6.ItemIndex];
end;
 
procedure TForm1.ComboBox7Change(Sender: TObject);
begin
  if (ComboBox7.ItemIndex=ComboBox8.ItemIndex)  OR
     (ComboBox7.ItemIndex=ComboBox9.ItemIndex)  OR
     (ComboBox7.ItemIndex=ComboBox10.ItemIndex) OR
     (ComboBox7.ItemIndex=ComboBox11.ItemIndex) OR
     (ComboBox7.ItemIndex=ComboBox12.ItemIndex) OR
     (ComboBox7.ItemIndex=ComboBox13.ItemIndex) OR
     (ComboBox7.ItemIndex=ComboBox14.ItemIndex) OR
     (ComboBox7.ItemIndex=ComboBox15.ItemIndex) OR
     (ComboBox7.ItemIndex=ComboBox16.ItemIndex) OR
     (ComboBox7.ItemIndex=ComboBox17.ItemIndex) OR
     (ComboBox7.ItemIndex=ComboBox18.ItemIndex)
  then begin ComboBox7.ItemIndex:=-1; klic2[10]:='?'; Edit1.Text:=klic1+klic2; Button1.Enabled:=false; end
  else begin if (ComboBox8.ItemIndex>-1) AND
                (((ComboBox9.ItemIndex=-1) AND (ComboBox10.ItemIndex=-1) AND (CheckBox2.Checked=false)) OR
                 ((ComboBox9.ItemIndex>-1) AND (ComboBox10.ItemIndex>-1) AND (CheckBox2.Checked=true))) AND
                (((ComboBox11.ItemIndex=-1) AND (ComboBox12.ItemIndex=-1) AND (CheckBox3.Checked=false)) OR
                 ((ComboBox11.ItemIndex>-1) AND (ComboBox12.ItemIndex>-1) AND (CheckBox3.Checked=true))) AND
                (((ComboBox13.ItemIndex=-1) AND (ComboBox14.ItemIndex=-1) AND (CheckBox4.Checked=false)) OR
                 ((ComboBox13.ItemIndex>-1) AND (ComboBox14.ItemIndex>-1) AND (CheckBox4.Checked=true))) AND
                (((ComboBox15.ItemIndex=-1) AND (ComboBox16.ItemIndex=-1) AND (CheckBox5.Checked=false)) OR
                 ((ComboBox15.ItemIndex>-1) AND (ComboBox16.ItemIndex>-1) AND (CheckBox5.Checked=true))) AND
                (((ComboBox17.ItemIndex=-1) AND (ComboBox18.ItemIndex=-1) AND (CheckBox6.Checked=false)) OR
                 ((ComboBox17.ItemIndex>-1) AND (ComboBox18.ItemIndex>-1) AND (CheckBox6.Checked=true)))
  then Button1.Enabled:=true;
  vymena:=ComboBox7.Items[ComboBox7.ItemIndex];
  klic2[10]:=vymena[1];
  Edit1.Text:=klic1+klic2;
  end;
end;
 
procedure TForm1.ComboBox8Change(Sender: TObject);
begin
  if (ComboBox8.ItemIndex=ComboBox7.ItemIndex)  OR
     (ComboBox8.ItemIndex=ComboBox9.ItemIndex)  OR
     (ComboBox8.ItemIndex=ComboBox10.ItemIndex) OR
     (ComboBox8.ItemIndex=ComboBox11.ItemIndex) OR
     (ComboBox8.ItemIndex=ComboBox12.ItemIndex) OR
     (ComboBox8.ItemIndex=ComboBox13.ItemIndex) OR
     (ComboBox8.ItemIndex=ComboBox14.ItemIndex) OR
     (ComboBox8.ItemIndex=ComboBox15.ItemIndex) OR
     (ComboBox8.ItemIndex=ComboBox16.ItemIndex) OR
     (ComboBox8.ItemIndex=ComboBox17.ItemIndex) OR
     (ComboBox8.ItemIndex=ComboBox18.ItemIndex)
  then begin ComboBox8.ItemIndex:=-1; klic2[12]:='?'; Edit1.Text:=klic1+klic2; Button1.Enabled:=false; end
  else begin if (ComboBox7.ItemIndex>-1) AND
                (((ComboBox9.ItemIndex=-1) AND (ComboBox10.ItemIndex=-1) AND (CheckBox2.Checked=false)) OR
                 ((ComboBox9.ItemIndex>-1) AND (ComboBox10.ItemIndex>-1) AND (CheckBox2.Checked=true))) AND
                (((ComboBox11.ItemIndex=-1) AND (ComboBox12.ItemIndex=-1) AND (CheckBox3.Checked=false)) OR
                 ((ComboBox11.ItemIndex>-1) AND (ComboBox12.ItemIndex>-1) AND (CheckBox3.Checked=true))) AND
                (((ComboBox13.ItemIndex=-1) AND (ComboBox14.ItemIndex=-1) AND (CheckBox4.Checked=false)) OR
                 ((ComboBox13.ItemIndex>-1) AND (ComboBox14.ItemIndex>-1) AND (CheckBox4.Checked=true))) AND
                (((ComboBox15.ItemIndex=-1) AND (ComboBox16.ItemIndex=-1) AND (CheckBox5.Checked=false)) OR
                 ((ComboBox15.ItemIndex>-1) AND (ComboBox16.ItemIndex>-1) AND (CheckBox5.Checked=true))) AND
                (((ComboBox17.ItemIndex=-1) AND (ComboBox18.ItemIndex=-1) AND (CheckBox6.Checked=false)) OR
                 ((ComboBox17.ItemIndex>-1) AND (ComboBox18.ItemIndex>-1) AND (CheckBox6.Checked=true)))
  then Button1.Enabled:=true;
  vymena:=ComboBox8.Items[ComboBox8.ItemIndex];
  klic2[12]:=vymena[1];
  Edit1.Text:=klic1+klic2;
  end;
end;
 
procedure TForm1.ComboBox9Change(Sender: TObject);
begin
  if (ComboBox9.ItemIndex=ComboBox7.ItemIndex)  OR
     (ComboBox9.ItemIndex=ComboBox8.ItemIndex)  OR
     (ComboBox9.ItemIndex=ComboBox10.ItemIndex) OR
     (ComboBox9.ItemIndex=ComboBox11.ItemIndex) OR
     (ComboBox9.ItemIndex=ComboBox12.ItemIndex) OR
     (ComboBox9.ItemIndex=ComboBox13.ItemIndex) OR
     (ComboBox9.ItemIndex=ComboBox14.ItemIndex) OR
     (ComboBox9.ItemIndex=ComboBox15.ItemIndex) OR
     (ComboBox9.ItemIndex=ComboBox16.ItemIndex) OR
     (ComboBox9.ItemIndex=ComboBox17.ItemIndex) OR
     (ComboBox9.ItemIndex=ComboBox18.ItemIndex)
  then begin ComboBox9.ItemIndex:=-1; klic2[15]:='?'; Edit1.Text:=klic1+klic2; Button1.Enabled:=false; end
  else begin if (ComboBox10.ItemIndex>-1) AND
                (((ComboBox7.ItemIndex=-1) AND (ComboBox8.ItemIndex=-1) AND (CheckBox1.Checked=false)) OR
                 ((ComboBox7.ItemIndex>-1) AND (ComboBox8.ItemIndex>-1) AND (CheckBox1.Checked=true))) AND
                (((ComboBox11.ItemIndex=-1) AND (ComboBox12.ItemIndex=-1) AND (CheckBox3.Checked=false)) OR
                 ((ComboBox11.ItemIndex>-1) AND (ComboBox12.ItemIndex>-1) AND (CheckBox3.Checked=true))) AND
                (((ComboBox13.ItemIndex=-1) AND (ComboBox14.ItemIndex=-1) AND (CheckBox4.Checked=false)) OR
                 ((ComboBox13.ItemIndex>-1) AND (ComboBox14.ItemIndex>-1) AND (CheckBox4.Checked=true))) AND
                (((ComboBox15.ItemIndex=-1) AND (ComboBox16.ItemIndex=-1) AND (CheckBox5.Checked=false)) OR
                 ((ComboBox15.ItemIndex>-1) AND (ComboBox16.ItemIndex>-1) AND (CheckBox5.Checked=true))) AND
                (((ComboBox17.ItemIndex=-1) AND (ComboBox18.ItemIndex=-1) AND (CheckBox6.Checked=false)) OR
                 ((ComboBox17.ItemIndex>-1) AND (ComboBox18.ItemIndex>-1) AND (CheckBox6.Checked=true)))
  then Button1.Enabled:=true;
  vymena:=ComboBox9.Items[ComboBox9.ItemIndex];
  klic2[15]:=vymena[1];
  Edit1.Text:=klic1+klic2;
  end;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Lines.Clear;
  Memo2.Lines.Clear;
  Memo3.Lines.Clear;
  Memo4.Lines.Clear;
  Memo5.Lines.Clear;
  Memo6.Lines.Clear;
  Edit2.Enabled:=false;
  Edit3.Enabled:=false;
  Edit4.Enabled:=false;
  ComboBox1.ItemIndex:=0;
  poradi1:=ComboBox1.ItemIndex;
  ComboBox2.ItemIndex:=1;
  poradi2:=ComboBox2.ItemIndex;
  ComboBox3.ItemIndex:=2;
  poradi3:=ComboBox3.ItemIndex;
  ComboBox4.ItemIndex:=0;
  ComboBox5.ItemIndex:=0;
  ComboBox6.ItemIndex:=0;
  Edit1.Text:=('I-II-III; A-A-A; n/a; n/a; n/a; n/a; n/a; n/a');
  klic1:='I-II-III';
  klic2:='; A-A-A; n/a; n/a; n/a; n/a; n/a; n/a';
  stop:=false;
end;
 
procedure TForm1.Koprovat1Click(Sender: TObject);
begin
  if Memo1.SelLength=0 then
  begin
    Memo1.SelectAll;
    Memo1.CopyToClipboard;
  end
  else Memo1.CopyToClipboard;
end;
 
procedure TForm1.Koprovat2Click(Sender: TObject);
begin
  Memo1.CopyToClipboard;
end;
 
procedure TForm1.Koprovat3Click(Sender: TObject);
begin
  if Memo2.SelLength=0 then
  begin
    Memo2.SelectAll;
    Memo2.CopyToClipboard;
  end
  else Memo2.CopyToClipboard;
end;
 
procedure TForm1.Koprovat4Click(Sender: TObject);
begin
  Memo2.CopyToClipboard;
end;
 
procedure TForm1.Koprovat5Click(Sender: TObject);
begin
  Edit1.CopyToClipboard;
end;
 
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Key=VK_BACK) OR (Key=VK_RETURN)then kontrola:=true
  else kontrola:=false;
end;
 
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
  if (Key in ['a'..'z']) OR (Key in ['A'..'Z']) then Key:=UpCase(Key)
  else begin if kontrola=false then Key:=#0 end;
end;
 
procedure TForm1.Odstranit1Click(Sender: TObject);
begin
  Memo1.SelText:='';
  Gauge1.Progress:=0;
end;
 
procedure TForm1.Odstranit2Click(Sender: TObject);
begin
  Memo2.Lines.Clear;
  Gauge1.Progress:=0;
end;
 
procedure TForm1.Otevt1Click(Sender: TObject);
var p, q: integer;
    vlozit, uprava: string;
begin
  if OpenDialog1.Execute then
  begin
    Gauge1.Progress:=0;
    Memo1.Lines.Clear;
    Memo2.Lines.Clear;
    Memo5.Lines.Clear;
    Memo6.Text:='1';
    Memo5.Lines.LoadFromFile(OpenDialog1.FileName);
    for p:=0 to Memo5.Lines.Count-1 do
    begin
      vlozit:=Memo5.Lines[p];
      uprava:='';
      for q:=1 to Length(vlozit) do
      begin
        if (vlozit[q] in ['a'..'z']) OR (vlozit[q] in ['A'..'Z']) then
        begin
          vlozit[q]:=UpCase(vlozit[q]);
          uprava:=uprava+vlozit[q];
        end
        else
        case vlozit[q] of
          'ě': uprava:=uprava+'E'; 'Ě': uprava:=uprava+'E'; '‘': uprava:=uprava+'S';
          'Š': uprava:=uprava+'S'; 'č': uprava:=uprava+'C'; 'Č': uprava:=uprava+'C';
          'ř': uprava:=uprava+'R'; 'Ř': uprava:=uprava+'R'; 'ž': uprava:=uprava+'Z';
          'Ž': uprava:=uprava+'Z'; 'ý': uprava:=uprava+'Y'; 'Ý': uprava:=uprava+'Y';
          'á': uprava:=uprava+'A'; 'Á': uprava:=uprava+'A'; 'í': uprava:=uprava+'I';
          'Í': uprava:=uprava+'I'; 'é': uprava:=uprava+'E'; 'É': uprava:=uprava+'E';
          'ú': uprava:=uprava+'U'; 'Ú': uprava:=uprava+'U'; 'ů': uprava:=uprava+'U';
          'Ů': uprava:=uprava+'U'; 'ď': uprava:=uprava+'D'; 'Ď': uprava:=uprava+'D';
          'ň': uprava:=uprava+'N'; 'Ň': uprava:=uprava+'N'; '': uprava:=uprava+'T';
          '': uprava:=uprava+'T'; '1': uprava:=uprava+'JEDNA'; '2': uprava:=uprava+'DVA';
          '3': uprava:=uprava+'TRI'; '4': uprava:=uprava+'CTYRI'; '5': uprava:=uprava+'PET';
          '6': uprava:=uprava+'SEST'; '7': uprava:=uprava+'SEDM'; '8': uprava:=uprava+'OSM';
          '9': uprava:=uprava+'DEVET'; '0': uprava:=uprava+'NULA'; '+': uprava:=uprava+'PLUS';
          '-': uprava:=uprava+'MINUS'; '*': uprava:=uprava+'KRAT'; '/': uprava:=uprava+'DELENO';
          '@': uprava:=uprava+'ZAVINAC'; '%': uprava:=uprava+'PROCENT';
        end;
      end;
      Memo6.Lines.Add(uprava);
    end;
    Memo6.Lines.Delete(0);
    Memo1.Text:=Memo6.Text;
  end;
end;
 
procedure TForm1.ScrollBar1Change(Sender: TObject);
var rychlost: real;
    prevod: string;
begin
  if ScrollBar1.Position>490 then
  begin
    Label15.Caption:='CPU limit';
    Label15.Font.Color:=clLime;
    Edit2.Enabled:=false;
    Edit3.Enabled:=false;
    Edit4.Enabled:=false;
  end
  else
  begin
    rychlost:=1000 div (500-ScrollBar1.Position);
    str(rychlost:2:0,prevod);
    Label15.Caption:=prevod+' zn/s';
    Label15.Font.Color:=clYellow;
    Edit2.Enabled:=true;
    Edit3.Enabled:=true;
    Edit4.Enabled:=true;
  end;
end;
 
procedure TForm1.SpeedButton1Click(Sender: TObject);
var vlozit, testovac: string;
    spravne, z, y, x: integer;
    prenos: char;
begin
  if (Button1.Enabled=false) AND (ComboBox1.Enabled=false) then MessageDlg('Chyba: Nelze načíst', mtcustom,[mbOK],0)
  else
  begin
  if OpenDialog2.Execute then
  begin
    manual:=true;
    testovac:='';
    Gauge1.Progress:=0;
    Memo5.Lines.Clear;
    Memo5.Lines.LoadFromFile(OpenDialog2.FileName);
    begin
      if Memo5.Lines[0]='' then vlozit:='0' else vlozit:=Memo5.Lines[0];
      if ((vlozit[1]='I') AND (vlozit[2]='-') AND (vlozit[3]='I') AND (vlozit[4]='I') AND
         (vlozit[5]='-') AND (vlozit[6]='I') AND (vlozit[7]='I') AND (vlozit[8]='I'))
      then begin ComboBox1.ItemIndex:=0; ComboBox2.ItemIndex:=1; ComboBox3.ItemIndex:=2; spravne:=1 end
      else
      if ((vlozit[1]='I') AND (vlozit[2]='-') AND (vlozit[3]='I') AND (vlozit[4]='I') AND
         (vlozit[5]='I') AND (vlozit[6]='-') AND (vlozit[7]='I') AND (vlozit[8]='I'))
      then begin ComboBox1.ItemIndex:=0; ComboBox2.ItemIndex:=2; ComboBox3.ItemIndex:=1; spravne:=1 end
      else
      if ((vlozit[1]='I') AND (vlozit[2]='I') AND (vlozit[3]='-') AND (vlozit[4]='I') AND
         (vlozit[5]='-') AND (vlozit[6]='I') AND (vlozit[7]='I') AND (vlozit[8]='I'))
      then begin ComboBox1.ItemIndex:=1; ComboBox2.ItemIndex:=0; ComboBox3.ItemIndex:=2; spravne:=1  end
      else
      if ((vlozit[1]='I') AND (vlozit[2]='I') AND (vlozit[3]='-') AND (vlozit[4]='I') AND
         (vlozit[5]='I') AND (vlozit[6]='I') AND (vlozit[7]='-') AND (vlozit[8]='I'))
      then begin ComboBox1.ItemIndex:=1; ComboBox2.ItemIndex:=2; ComboBox3.ItemIndex:=0; spravne:=1  end
      else
      if ((vlozit[1]='I') AND (vlozit[2]='I') AND (vlozit[3]='I') AND (vlozit[4]='-') AND
         (vlozit[5]='I') AND (vlozit[6]='I') AND (vlozit[7]='-') AND (vlozit[8]='I'))
      then begin ComboBox1.ItemIndex:=2; ComboBox2.ItemIndex:=1; ComboBox3.ItemIndex:=0; spravne:=1  end
      else
      if ((vlozit[1]='I') AND (vlozit[2]='I') AND (vlozit[3]='I') AND (vlozit[4]='-') AND
         (vlozit[5]='I') AND (vlozit[6]='-') AND (vlozit[7]='I') AND (vlozit[8]='I'))
      then begin ComboBox1.ItemIndex:=2; ComboBox2.ItemIndex:=0; ComboBox3.ItemIndex:=1; spravne:=1  end
      else spravne:=0;
    end;
    if ((vlozit[9]=';') AND (vlozit[10]=' ') AND (vlozit[16]=';') AND (vlozit[17]=' ') AND
       (vlozit[21]=';') AND (vlozit[22]=' ') AND (vlozit[26]=';') AND (vlozit[27]=' ') AND
       (vlozit[31]=';') AND (vlozit[32]=' ') AND (vlozit[36]=';') AND (vlozit[37]=' ') AND
       (vlozit[41]=';') AND (vlozit[42]=' ') AND (vlozit[12]='-') AND (vlozit[14]='-') AND
       ((vlozit[19]='/') OR (vlozit[19]='>')) AND ((vlozit[24]='/') OR (vlozit[24]='>')) AND
       ((vlozit[29]='/') OR (vlozit[29]='>')) AND ((vlozit[34]='/') OR (vlozit[34]='>')) AND
       ((vlozit[39]='/') OR (vlozit[39]='>')) AND ((vlozit[44]='/') OR (vlozit[44]='>')))
    then spravne:=spravne+1;
    if (vlozit[11] in ['A'..'Z']) AND (vlozit[13] in ['A'..'Z']) AND (vlozit[15] in ['A'..'Z']) then
    begin
      prenos:=vlozit[11];
      for z:=1 to Length(ABC) do
      begin
        if prenos=ABC[z] then ComboBox4.ItemIndex:=z-1;
      end;
      prenos:=vlozit[13];
      for z:=1 to Length(ABC) do
      begin
        if prenos=ABC[z] then ComboBox5.ItemIndex:=z-1;
      end;
      prenos:=vlozit[15];
      for z:=1 to Length(ABC) do
      begin
        if prenos=ABC[z] then ComboBox6.ItemIndex:=z-1;
      end;
      spravne:=spravne+1;
    end;
    if ((vlozit[18] in ['A'..'Z']) AND (vlozit[19]='>') AND (vlozit[20] in ['A'..'Z'])) then
    begin
      prenos:=vlozit[18];
      for z:=1 to Length(ABC) do
      begin
        if prenos=ABC[z] then begin ComboBox7.ItemIndex:=z-1; testovac:=testovac+prenos; end;
      end;
      prenos:=vlozit[20];
      for z:=1 to Length(ABC) do
      begin
        if prenos=ABC[z] then begin ComboBox8.ItemIndex:=z-1; testovac:=testovac+prenos; end;
      end;
      CheckBox1.Checked:=true;
      spravne:=spravne+1;
    end
    else if ((vlozit[18]='n') AND (vlozit[19]='/') AND (vlozit[20]='a')) then
    begin
      ComboBox7.Enabled:=false;
      ComboBox7.Enabled:=false;
      CheckBox1.Checked:=false;
      spravne:=spravne+1;
    end;
    if ((vlozit[23] in ['A'..'Z']) AND (vlozit[24]='>') AND (vlozit[25] in ['A'..'Z'])) then
    begin
      prenos:=vlozit[23];
      for z:=1 to Length(ABC) do
      begin
        if prenos=ABC[z] then begin ComboBox9.ItemIndex:=z-1; testovac:=testovac+prenos; end;
      end;
      prenos:=vlozit[25];
      for z:=1 to Length(ABC) do
      begin
        if prenos=ABC[z] then begin ComboBox10.ItemIndex:=z-1; testovac:=testovac+prenos; end;
      end;
      CheckBox2.Checked:=true;
      spravne:=spravne+1;
    end
    else if ((vlozit[23]='n') AND (vlozit[24]='/') AND (vlozit[25]='a')) then
    begin
      ComboBox9.Enabled:=false;
      ComboBox10.Enabled:=false;
      CheckBox2.Checked:=false;
      spravne:=spravne+1;
    end;
    if ((vlozit[28] in ['A'..'Z']) AND (vlozit[29]='>') AND (vlozit[30] in ['A'..'Z'])) then
    begin
      prenos:=vlozit[28];
      for z:=1 to Length(ABC) do
      begin
        if prenos=ABC[z] then begin ComboBox11.ItemIndex:=z-1; testovac:=testovac+prenos; end;
      end;
      prenos:=vlozit[30];
      for z:=1 to Length(ABC) do
      begin
        if prenos=ABC[z] then begin ComboBox12.ItemIndex:=z-1; testovac:=testovac+prenos; end;
      end;
      CheckBox3.Checked:=true;
      spravne:=spravne+1;
    end
    else if ((vlozit[28]='n') AND (vlozit[29]='/') AND (vlozit[30]='a')) then
    begin
      ComboBox11.Enabled:=false;
      ComboBox12.Enabled:=false;
      CheckBox3.Checked:=false;
      spravne:=spravne+1;
    end;
    if ((vlozit[33] in ['A'..'Z']) AND (vlozit[34]='>') AND (vlozit[35] in ['A'..'Z'])) then
    begin
      prenos:=vlozit[33];
      for z:=1 to Length(ABC) do
      begin
        if prenos=ABC[z] then begin ComboBox13.ItemIndex:=z-1; testovac:=testovac+prenos; end;
      end;
      prenos:=vlozit[35];
      for z:=1 to Length(ABC) do
      begin
        if prenos=ABC[z] then begin ComboBox14.ItemIndex:=z-1; testovac:=testovac+prenos; end;
      end;
      CheckBox4.Checked:=true;
      spravne:=spravne+1;
    end
    else if ((vlozit[33]='n') AND (vlozit[34]='/') AND (vlozit[35]='a')) then
    begin
      ComboBox13.Enabled:=false;
      ComboBox14.Enabled:=false;
      CheckBox4.Checked:=false;
      spravne:=spravne+1;
    end;
    if ((vlozit[38] in ['A'..'Z']) AND (vlozit[39]='>') AND (vlozit[40] in ['A'..'Z'])) then
    begin
      prenos:=vlozit[38];
      for z:=1 to Length(ABC) do
      begin
        if prenos=ABC[z] then begin ComboBox15.ItemIndex:=z-1; testovac:=testovac+prenos; end;
      end;
      prenos:=vlozit[40];
      for z:=1 to Length(ABC) do
      begin
        if prenos=ABC[z] then begin ComboBox16.ItemIndex:=z-1; testovac:=testovac+prenos; end;
      end;
      CheckBox5.Checked:=true;
      spravne:=spravne+1;
    end
    else if ((vlozit[38]='n') AND (vlozit[39]='/') AND (vlozit[40]='a')) then
    begin
      ComboBox15.Enabled:=false;
      ComboBox16.Enabled:=false;
      CheckBox5.Checked:=false;
      spravne:=spravne+1;
    end;
    if ((vlozit[43] in ['A'..'Z']) AND (vlozit[44]='>') AND (vlozit[45] in ['A'..'Z'])) then
    begin
      prenos:=vlozit[43];
      for z:=1 to Length(ABC) do
      begin
        if prenos=ABC[z] then begin ComboBox17.ItemIndex:=z-1; testovac:=testovac+prenos; end;
      end;
      prenos:=vlozit[45];
      for z:=1 to Length(ABC) do
      begin
        if prenos=ABC[z] then begin ComboBox18.ItemIndex:=z-1; testovac:=testovac+prenos; end;
      end;
      CheckBox6.Checked:=true;
      spravne:=spravne+1;
    end
    else if ((vlozit[43]='n') AND (vlozit[44]='/') AND (vlozit[45]='a')) then
    begin
      ComboBox17.Enabled:=false;
      ComboBox18.Enabled:=false;
      CheckBox6.Checked:=false;
      spravne:=spravne+1;
    end;
    x:=0;
    for y:=1 to Length(testovac) do
    begin
      for z:=1 to Length(testovac) do
      begin
        if testovac[y]=testovac[z] then x:=x+1;
      end;
    end;
    if x=Length(testovac) then spravne:=spravne+1;
    if spravne=10 then
    begin
      Edit1.Text:=Memo5.Lines[0];
      for z:=1 to 8 do klic1[z]:=Edit1.Text[z];
      for z:=1 to 38 do klic2[z]:=Edit1.Text[z+8];
    end
    else
    begin
      ComboBox1.ItemIndex:=0; ComboBox2.ItemIndex:=1; ComboBox3.ItemIndex:=2;
      ComboBox4.ItemIndex:=0; ComboBox5.ItemIndex:=0; ComboBox6.ItemIndex:=0;
      ComboBox7.ItemIndex:=-1; ComboBox8.ItemIndex:=-1; ComboBox9.ItemIndex:=-1;
      ComboBox10.ItemIndex:=-1; ComboBox11.ItemIndex:=-1; ComboBox12.ItemIndex:=-1;
      ComboBox13.ItemIndex:=-1; ComboBox14.ItemIndex:=-1; ComboBox15.ItemIndex:=-1;
      ComboBox16.ItemIndex:=-1; ComboBox17.ItemIndex:=-1; ComboBox18.ItemIndex:=-1;
      CheckBox1.Checked:=false; CheckBox2.Checked:=false; CheckBox3.Checked:=false;
      CheckBox4.Checked:=false; CheckBox5.Checked:=false; CheckBox6.Checked:=false;
      Edit1.Text:='I-II-III; A-A-A; n/a; n/a; n/a; n/a; n/a; n/a';
      klic1:='I-II-III';
      klic2:='; A-A-A; n/a; n/a; n/a; n/a; n/a; n/a';
      MessageDlg('Chyba: Po‘kozený soubor klíče', mtcustom,[mbOK],0);
    end;
    manual:=false;
    Edit2.Text:=ComboBox4.Items[ComboBox4.ItemIndex];
    Edit3.Text:=ComboBox5.Items[ComboBox5.ItemIndex];
    Edit4.Text:=ComboBox6.Items[ComboBox6.ItemIndex];
  end;
  end;
end;
 
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
  if (Button1.Enabled=false) AND (ComboBox1.Enabled=false) then MessageDlg('Chyba: Nelze uložit', mtcustom,[mbOK],0)
  else
  begin
    if (Button1.Enabled=false) AND (ComboBox1.Enabled=true) then MessageDlg('Chyba: Neúplný klíč', mtcustom,[mbOK],0)
    else
    begin
      if SaveDialog2.Execute then
      begin
        Memo5.Lines[0]:=Edit1.Text;
        Memo5.Lines.SaveToFile(SaveDialog2.FileName);
      end;
    end;
  end;
end;
 
procedure TForm1.Uloit1Click(Sender: TObject);
begin
  if SaveDialog1.Execute then
  begin
    Memo2.Lines.SaveToFile(SaveDialog1.FileName);
  end;
end;
 
procedure TForm1.Uloiz1Click(Sender: TObject);
begin
  if SaveDialog1.Execute then
  begin
    Memo1.Lines.SaveToFile(SaveDialog1.FileName);
  end;
end;
 
procedure TForm1.Vloit1Click(Sender: TObject);
var p, q: integer;
    vlozit, uprava: string;
begin
  Memo3.Lines.Clear;
  Memo4.Text:='1';
  Memo3.PasteFromClipboard;
  for p:=0 to Memo3.Lines.Count-1 do
  begin
    vlozit:=Memo3.Lines[p];
    uprava:='';
    for q:=1 to Length(vlozit) do
    begin
      if (vlozit[q] in ['a'..'z']) OR (vlozit[q] in ['A'..'Z']) then
      begin
        vlozit[q]:=UpCase(vlozit[q]);
        uprava:=uprava+vlozit[q];
      end
      else
      case vlozit[q] of
        'ě': uprava:=uprava+'E'; 'Ě': uprava:=uprava+'E'; '‘': uprava:=uprava+'S';
        'Š': uprava:=uprava+'S'; 'č': uprava:=uprava+'C'; 'Č': uprava:=uprava+'C';
        'ř': uprava:=uprava+'R'; 'Ř': uprava:=uprava+'R'; 'ž': uprava:=uprava+'Z';
        'Ž': uprava:=uprava+'Z'; 'ý': uprava:=uprava+'Y'; 'Ý': uprava:=uprava+'Y';
        'á': uprava:=uprava+'A'; 'Á': uprava:=uprava+'A'; 'í': uprava:=uprava+'I';
        'Í': uprava:=uprava+'I'; 'é': uprava:=uprava+'E'; 'É': uprava:=uprava+'E';
        'ú': uprava:=uprava+'U'; 'Ú': uprava:=uprava+'U'; 'ů': uprava:=uprava+'U';
        'Ů': uprava:=uprava+'U'; 'ď': uprava:=uprava+'D'; 'Ď': uprava:=uprava+'D';
        'ň': uprava:=uprava+'N'; 'Ň': uprava:=uprava+'N'; '': uprava:=uprava+'T';
        '': uprava:=uprava+'T'; '1': uprava:=uprava+'JEDNA'; '2': uprava:=uprava+'DVA';
        '3': uprava:=uprava+'TRI'; '4': uprava:=uprava+'CTYRI'; '5': uprava:=uprava+'PET';
        '6': uprava:=uprava+'SEST'; '7': uprava:=uprava+'SEDM'; '8': uprava:=uprava+'OSM';
        '9': uprava:=uprava+'DEVET'; '0': uprava:=uprava+'NULA'; '+': uprava:=uprava+'PLUS';
        '-': uprava:=uprava+'MINUS'; '*': uprava:=uprava+'KRAT'; '/': uprava:=uprava+'DELENO';
        '@': uprava:=uprava+'ZAVINAC'; '%': uprava:=uprava+'PROCENT';
      end;
    end;
    Memo4.Lines.Add(uprava);
  end;
  Memo4.Lines.Delete(0);
  Memo4.SelectAll;
  Memo4.CopyToClipboard;
  if uprava<>'' then Memo1.PasteFromClipboard;
  Gauge1.Progress:=0;
end;
 
procedure TForm1.Vloit2Click(Sender: TObject);
var p, q: integer;
    vlozit, uprava: string;
begin
  Memo3.Lines.Clear;
  Memo4.Text:='1';
  Memo3.PasteFromClipboard;
  for p:=0 to Memo3.Lines.Count-1 do
  begin
    vlozit:=Memo3.Lines[p];
    uprava:='';
    for q:=1 to Length(vlozit) do
    begin
      if (vlozit[q] in ['a'..'z']) OR (vlozit[q] in ['A'..'Z']) then
      begin
        vlozit[q]:=UpCase(vlozit[q]);
        uprava:=uprava+vlozit[q];
      end
      else
      case vlozit[q] of
        'ě': uprava:=uprava+'E'; 'Ě': uprava:=uprava+'E'; '‘': uprava:=uprava+'S';
        'Š': uprava:=uprava+'S'; 'č': uprava:=uprava+'C'; 'Č': uprava:=uprava+'C';
        'ř': uprava:=uprava+'R'; 'Ř': uprava:=uprava+'R'; 'ž': uprava:=uprava+'Z';
        'Ž': uprava:=uprava+'Z'; 'ý': uprava:=uprava+'Y'; 'Ý': uprava:=uprava+'Y';
        'á': uprava:=uprava+'A'; 'Á': uprava:=uprava+'A'; 'í': uprava:=uprava+'I';
        'Í': uprava:=uprava+'I'; 'é': uprava:=uprava+'E'; 'É': uprava:=uprava+'E';
        'ú': uprava:=uprava+'U'; 'Ú': uprava:=uprava+'U'; 'ů': uprava:=uprava+'U';
        'Ů': uprava:=uprava+'U'; 'ď': uprava:=uprava+'D'; 'Ď': uprava:=uprava+'D';
        'ň': uprava:=uprava+'N'; 'Ň': uprava:=uprava+'N'; '': uprava:=uprava+'T';
        '': uprava:=uprava+'T'; '1': uprava:=uprava+'JEDNA'; '2': uprava:=uprava+'DVA';
        '3': uprava:=uprava+'TRI'; '4': uprava:=uprava+'CTYRI'; '5': uprava:=uprava+'PET';
        '6': uprava:=uprava+'SEST'; '7': uprava:=uprava+'SEDM'; '8': uprava:=uprava+'OSM';
        '9': uprava:=uprava+'DEVET'; '0': uprava:=uprava+'NULA'; '+': uprava:=uprava+'PLUS';
        '-': uprava:=uprava+'MINUS'; '*': uprava:=uprava+'KRAT'; '/': uprava:=uprava+'DELENO';
        '@': uprava:=uprava+'ZAVINAC'; '%': uprava:=uprava+'PROCENT';
      end;
    end;
    Memo4.Lines.Add(uprava);
  end;
  Memo4.Lines.Delete(0);
  Memo4.SelectAll;
  Memo4.CopyToClipboard;
  if uprava<>'' then Memo1.PasteFromClipboard;
  Gauge1.Progress:=0;
end;
 
procedure TForm1.VybratVe1Click(Sender: TObject);
begin
  Memo1.SelectAll;
end;
 
procedure TForm1.Vybratve2Click(Sender: TObject);
begin
  Memo2.SelectAll;
end;
 
procedure TForm1.Vyjmout1Click(Sender: TObject);
begin
  if Memo1.SelLength=0 then
  begin
    Memo1.SelectAll;
    Memo1.CutToClipboard;
  end
  else Memo1.CutToClipboard;
  Gauge1.Progress:=0;
end;
 
procedure TForm1.Vymazat1Click(Sender: TObject);
begin
  if Memo1.SelLength=0 then Memo1.Clear
  else Memo1.SelText:='';
  Gauge1.Progress:=0;
end;
 
procedure TForm1.Vzjmout1Click(Sender: TObject);
begin
  Memo1.CutToClipboard;
  Gauge1.Progress:=0;
end;
 
end.