unit caesar; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls, Buttons, ExtCtrls; type TForm1 = class(TForm) Panel1: TPanel; GroupBox1: TGroupBox; GroupBox2: TGroupBox; GroupBox3: TGroupBox; RadioGroup1: TRadioGroup; Label1: TLabel; Label2: TLabel; BitBtn1: TBitBtn; BitBtn2: TBitBtn; BitBtn3: TBitBtn; StaticText1: TStaticText; Edit1: TEdit; UpDown1: TUpDown; Edit2: TEdit; UpDown2: TUpDown; Edit3: TEdit; Edit4: TEdit; StaticText2: TStaticText; StaticText3: TStaticText; StaticText4: TStaticText; procedure RadioGroup1Click(Sender: TObject); procedure UpDown1Click(Sender: TObject; Button: TUDBtnType); procedure UpDown2Click(Sender: TObject; Button: TUDBtnType); procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.RadioGroup1Click(Sender: TObject); begin if RadioGroup1.ItemIndex=0 then begin Label1.Caption:='Plaintext'; Label2.Caption:='Ciphertext'; end else begin Label1.Caption:='Ciphertext'; Label2.Caption:='Plaintext'; end; end; procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType); begin Edit1.Text:=char(UpDown1.Position); end; procedure TForm1.UpDown2Click(Sender: TObject; Button: TUDBtnType); begin Edit2.Text:=char(UpDown2.Position); Edit4.Text:=IntToStr(UpDown2.Position-65); end; procedure TForm1.BitBtn1Click(Sender: TObject); var inputcharacter,outputcharacter,keycharacter:char; //Ein- und Ausgaben sind Datentyp Character (Zeichen) input_ascii,output_ascii,key_ascii,index:byte; begin BitBtn1.Enabled:=false; //es kann nicht mehr Ciffriert/Dechiffriert werden inputcharacter:=Edit1.Text[1]; //Eingabezeichen einlesen (erstes Zeichen der Editbox einlesen) input_ascii:=ord(inputcharacter); //ASCII-Codes Eingabezeichens ermitteln keycharacter:=Edit2.Text[1]; //Keyzeichen einlesen (erstes Zeichen der Editbox einlesen) key_ascii:=ord(keycharacter)-65; //ASCII-Codes Keyzeichens ermitteln if RadioGroup1.ItemIndex=0 then begin //es wird Chiffriert output_ascii:=input_ascii+key_ascii; //Key wird zum Eingabezeichen addiert if output_ascii>90 then begin index:=output_ascii-90; //um wie viel wurde 90 überschritten??? output_ascii:=65+index; //Z wird überlaufen, dann muss der Versatz zu A addiert werden end; end else begin output_ascii:=input_ascii-key_ascii; //Key wird zum Eingabezeichen subtrhiert if output_ascii<65 then begin index:=65-output_ascii; //um wie viel wurde 65 unterschritten??? output_ascii:=90-index; //A wird unterschritten, dann muss der Versatz von 65 subtrahiert werden end; end; Edit3.Text:=char(output_ascii); //Ciphertextzeichen oder Plaintextzeichen wird angezeigt end; procedure TForm1.BitBtn2Click(Sender: TObject); begin BitBtn1.Enabled:=true; //es kann wieder Ciffriert/Dechiffriert werden end; end.