![]() |
Vigenere macht Macken ;)
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. |
Re: Vigenere macht Macken ;)
Hat denn niemand ne Lösung, bräuchte das für morgen...
|
Re: Vigenere macht Macken ;)
Hi!
Bitte unterlasse das Pushen innerhalb von 24h. Grüße, Frederic |
Re: Vigenere macht Macken ;)
Ein Anweisung
Delphi-Quellcode:
in TForm1.BugeheimClick könnte nicht schaden.
code := '';
|
Re: Vigenere macht Macken ;)
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! |
Re: Vigenere macht Macken ;)
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
|
Re: Vigenere macht Macken ;)
Dankeschön dafür!
Funktioniert jetzt größten Teils... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:56 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