Guten Tag
DP,
ich bin gerade dabei, ein Ver- und Entschlüsselungsprogramm für das Vigenère-Chiffre zu programmieren. Dabei habe ich folgendes Problem: obwohl ich meiner Meinung nach alles richtig gemacht habe, zeigt mir das Programm beim Verusch den Klartext zu entschlüsseln, an, dass ich "out of range bin". Tatsächlich suche ich wohl nach einem Index von 1,9 Milliarden, obwohl mein Array ein 1..26,1..26 Array ist (das Vigenère Quadrat). Ich zeige euch mal meinen Quelltext, vielleicht kann mir ja jemand helfen! Ich hoffe mit den Variablennamen kann man sich zurechtfinden. Ich habe 3 Arrays: eins für das Quadrat (viq: array[1..26,1..26] of Char), eins zum Füllen des Quadrats (hilfe: array[1..26] of Char) und eins zum Verschlüsseln(hilfe2: array['a'..'z'] of Integer). Das Füllen klappt soweit.
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
schluessel, schluessel2, t1, chiffrat: String;
lschluessel, lt, zaehler, zaehler1, a, b: Integer;
begin
t1 := lowercase(Edit1.text); //Klartext
schluessel := lowercase(Edit2.text); //Schlüssel
lt := length(t1);
lschluessel := length(schluessel);
chiffrat := '';
schluessel2 := '';
a := 0;
b := 0;
for zaehler := 1 to lt do begin //hier verlängere ich den Schlüssel so oft mit sich selbst, bis er gleich lang wie der Klartext ist
if zaehler mod lschluessel = 0 then schluessel2 := schluessel2 + schluessel[1]
else schluessel2 := schluessel2 + schluessel[zaehler mod lschluessel];
end;
Label1.caption := schluessel2;
for zaehler1 := 1 to lt do begin
if t1[zaehler1] = ' ' then chiffrat := chiffrat + ' ';
a := hilfe2[schluessel2[zaehler1]];
b := hilfe2[t1[zaehler1]];
chiffrat := chiffrat + StringGrid1.Cells[a,b]; //HIER IST DAS PROBLEM: angeblich liegt die Variable b im Milliardenbereich. Ersetze ich b mit z.B. 5, zeigt mir das Programm an, dass a im negativen Zehntausenderbereich liegt... ich verstehe die Welt (Delphi) nicht mehr... ich hoffe mir kann jemand helfen...
end;
Edit3.text := chiffrat;
end;
Sollte irgendetwas fehlen bzw unklar sein, bitte nachfragen!
Liebe Grüße
Maurooon
"One of the basic rules of the universe is that nothing is perfect. Perfection simply doesn't exist... Without imperfection, neither you nor I would exist." - Stephen Hawking