AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Vigenere macht Macken ;)

Ein Thema von xv300 · begonnen am 7. Feb 2010 · letzter Beitrag vom 10. Feb 2010
Antwort Antwort
xv300

Registriert seit: 13. Jun 2009
25 Beiträge
 
#1

Vigenere macht Macken ;)

  Alt 7. Feb 2010, 17:09
Hallo Ihr, hab grade einen Vigenere Code geschrieben, doch der macht noch eine komische Macke,
der dritte Buchstabe wird nicht das was er sein soll, könnt Ihr vielleicht den Fehler finden,
ich such schon den ganzen Tag und finde GAR nix mehr....

Delphi-Quellcode:
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;

type
  TForm1 = class(TForm)
    BuQuadrat: TButton;
    SGQuadrat: TStringGrid;
    EdKlartext: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    EDKennwort: TEdit;
    Edpruef: TEdit;
    Buverschluesseln: TButton;
    Label4: TLabel;
    EdGeheim: TEdit;
    Bugeheim: TButton;
    procedure BuQuadratClick(Sender: TObject);
    procedure BuverschluesselnClick(Sender: TObject);
    procedure BugeheimClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  keynum: array[1..20]of integer;
  keyword:string;

implementation

{$R *.dfm}

procedure TForm1.BuQuadratClick(Sender: TObject);
Var C: char;
    i, j, Position, Nummer:integer;
begin
      for i := 0 to 25 do begin
        for j :=0 to 25 do begin
                           SGQuadrat.Cells[0,j] := IntToStr(j) ;
                           Position := 65 ; // Buchstabe A = ASCII 65
                           Nummer := Position + i + j ; // Verschiebung im Alphabet
                           if (Nummer > 90) then Nummer := Nummer-26 ; //falls zu groß, wieder auf Anfang
                           C := Chr(Nummer) ;
                           SGQuadrat.Cells[i+1,j] := c ;
                         end;
                        end;
            end;

procedure TForm1.BuverschluesselnClick(Sender: TObject);
Var keystr:string;
    c:char;
    i:integer;


begin
    keystr:='';
    for i:= 1 to 20 do keynum[i]:=0;

    keyword:= Edkennwort.Text;
    for i:= 1 to length(keyword) do begin
                                       c:=keyword[i];
                                       keynum[i]:=ord(c)-65;
                                       keystr:=keystr+IntToStr(keynum[i])+' ';
                                    end;
    Edpruef.text:= UpperCase(keystr);


end;



procedure TForm1.BugeheimClick(Sender: TObject);
Var klartext,code:string;
    i,laenge,keypos,nummer:integer;

begin
 klartext:= UpperCase(EdKlartext.text);
 laenge:=length(keyword);

 for i:= 1 to length(klartext) do begin
                                    keypos := i mod laenge;
                                    nummer := ord(klartext[i])+keynum[keypos];
                                    if nummer >90 then nummer:= nummer-26;
                                    code:= code + chr(nummer);
                                  end;
 Edgeheim.text:= UpperCase(code);


end;


end.
  Mit Zitat antworten Zitat
xv300

Registriert seit: 13. Jun 2009
25 Beiträge
 
#2

Re: Vigenere macht Macken ;)

  Alt 7. Feb 2010, 18:02
Hat denn niemand ne Lösung, bräuchte das für morgen...
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#3

Re: Vigenere macht Macken ;)

  Alt 7. Feb 2010, 18:10
Hi!

Bitte unterlasse das Pushen innerhalb von 24h.


Grüße, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#4

Re: Vigenere macht Macken ;)

  Alt 7. Feb 2010, 18:29
Ein Anweisung code := ''; in TForm1.BugeheimClick könnte nicht schaden.
  Mit Zitat antworten Zitat
xv300

Registriert seit: 13. Jun 2009
25 Beiträge
 
#5

Re: Vigenere macht Macken ;)

  Alt 7. Feb 2010, 18:57
Hilft leider auch ned!
Das größte Problem ist eigentlich, dass bei mir die Leerzeichen auch verschlüsselt werden und das will ich nicht.
Und das immer der letzte Buchstabe falsch verschlüsselt wird!
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#6

Re: Vigenere macht Macken ;)

  Alt 7. Feb 2010, 20:36
In TForm1.BugeheimClick: keypos := i mod laenge wird 0, wenn i >= laenge. Die untere Grenze von keynum: array[1..20] of integer; ist 1. Wenn keypos=0 ist, gibt es (wenn Du mit Rangecheck arbeitest einen Fehler) oder Unsinn (wenn nicht). Auf jeden Fall ändern: Entweder untere Grenze = 0 oder keypos := 1 + i mod laenge
  Mit Zitat antworten Zitat
xv300

Registriert seit: 13. Jun 2009
25 Beiträge
 
#7

Re: Vigenere macht Macken ;)

  Alt 10. Feb 2010, 09:20
Dankeschön dafür!
Funktioniert jetzt größten Teils...
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz