(*
ZUWEISUNG DER EINGABE ELEMENTE ZU DEN AUSGABE ELEMENTEN / VERSCHLÜSSELUNGSALGORYTHMUS:
->Die Ihalte von EditEingabe und EditAusgabe werden in der Theorie als zwei Zweidimensionale-Arrays
angesehen. EditAusgabe entsteht aus EditEingabe durch Spiegelung des Arrays.
EditEingabe EditAusgabe
1 2 3 4 5 > 5 10 15 20 25
6 7 8 9 10 > 4 9 14 19 24
11 12 13 14 15 ----------> 3 8 13 18 23
16 17 18 19 20 > 2 7 12 17 22
21 22 23 24 25 > 1 6 11 16 21
*)
unit Chaos;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 =
class(TForm)
EditEingabe: TEdit;
EditAusgabe: TEdit;
Label1: TLabel;
Label2: TLabel;
ButtonStart: TButton;
ButtonEnd: TButton;
Label3: TLabel;
EditVerwZeichen: TEdit;
procedure ButtonEndClick(Sender: TObject);
procedure ButtonStartClick(Sender: TObject);
procedure EditEingabeChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
StringEingabe:
string;
// Zum speichern des Eingabe Satzes.
StringAusgabe:
string;
// Zum speichern des Ausgabe Satzes.
ZeigEin: Pchar;
// Zeiger auf Eingabe-Chars
ZeigAus: Pchar;
// Zeiger auf Ausgabe-Chars
ArrayAusgabe:
array [1..25]
of integer = (5,10,15,20,25,4,9,14,19,24,3,8,13,18,23,2,7,12,17,22,1,6,11,16,21);
//ArrayAusgabe speichert die definierte Zuordnung der neuen Charakterpositionen gemäß des gewählten Verschlüsselungsstandards
implementation
{$R *.dfm}
procedure TForm1.EditEingabeChange(Sender: TObject);
begin
Form1.EditVerwZeichen.Text:=IntToStr(Length(Form1.EditEingabe.Text));
//Anzeige der verwendeten Zeichen
end;
procedure TForm1.ButtonStartClick(Sender: TObject);
//Button zum Starten der Verschlüsselung
var i: integer;
// für for-Schleife
begin
if length(EditEingabe.Text)=0
then showmessage('
Bitte Text eingeben');
//Keine Zeichen eingegeben?
if length(EditEingabe.Text)>25
then showmessage('
Bitte maximal 25 Zeichen eingeben');
// Zu viele Zeichen eingegeben?
StringEingabe := EditEingabe.Text;
//Inhalt aus Eingabe Textfeld wird als String gespeichert
for i:=1
to 25
do //einzelne Zeichen des Strings werden nacheinander mit neuen Positionen als neuer String gespeichert
begin
ZeigEin:=Addr(StringEingabe[i]);
//Zeiger auf Eingabe-Char zum Kopieren des Werts
ZeigAus:=Addr(StringAusgabe[ArrayAusgabe[i]]);
//Zeiger auf Ausgabe-Char zum Kopieren des Werts
strcopy(ZeigAus,ZeigEin);
//Zuweisung
end;
EditAusgabe.Text:=StringAusgabe;
//Anzeige im Ausgabe Textfeld
end;
procedure TForm1.ButtonEndClick(Sender: TObject);
// Button zum Beenden des Programms
begin
close;
end;
end.