AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Indexproblem - Hilfe

Ein Thema von Maurooon · begonnen am 24. Feb 2017 · letzter Beitrag vom 24. Feb 2017
 
Maurooon

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

Indexproblem - Hilfe

  Alt 24. Feb 2017, 16: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
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz