Einzelnen Beitrag anzeigen

Maurooon

Registriert seit: 7. Dez 2016
70 Beiträge
 
#1

Indexproblem - Hilfe

  Alt 24. Feb 2017, 17:56
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
  Mit Zitat antworten Zitat